Атака китайских ботов

Вопросы без привязки к версии. Установлена авточистка (2 года).
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
hd321kbps
phpBB 2.0.3
Сообщения: 366
Стаж: 14 лет 2 месяца
Откуда: Россия, Крым, Армянск
Благодарил (а): 191 раз
Поблагодарили: 346 раз

Атака китайских ботов

Сообщение hd321kbps »

Сегодня заметил на нескольких форумах наплыв ботов из китая от 100-300 одновременно, которые создают нагрузку на хостинг.
Все заходят с телефона Android и iphone Os.
Адреса ботов:
54.222.*.*
54.223.*.*
52.80.*.*
52.81.*.*
52.82.*.*
52.83.*.*
220.243.*.*
139.217.*.*
139.219.*.*
У кого наблюдается такое-же отпишитесь)


---------------------------
Варианты блокировки ботов:
Re: Атака китайских ботов - от Nekstati
Re: Атака китайских ботов - от Kuskow, php
Re: Атака китайских ботов - от Kuskow, nginx
Последний раз редактировалось Татьяна5 26.06.2026 0:40, всего редактировалось 1 раз.
Причина: Добавила варианты блокировки ботов
Аватара пользователя
Nekstati
Поддержка
Поддержка
Сообщения: 3358
Стаж: 17 лет 3 месяца
Благодарил (а): 19 раз
Поблагодарили: 576 раз

Re: Атака китайских ботов

Сообщение Nekstati »

Kuskow писал(а): 24.06.2026 8:54 Требуется критика.

Код: Выделить всё

!(bool|int) + bool|int + bool|int + (bool < bool)
Не знаю, работает это или нет, но знаю, что если так писать, сами же спустя месяц не поймёте, что написали (если понимаете сейчас; я нет)
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 429
Стаж: 10 лет 1 месяц
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 42 раза

Re: Атака китайских ботов

Сообщение Kuskow »

Да, пардон, подстрочный перевод:

# 1. Шлагбаум закрыт для плохих ботов, методов и запросов
Варианты плохих запросов:
  • вызов не главной страницы, не index.php, не file.php, а первый параметр у viewforum.php или у viewtopic.php не f=, не t= и не p= (например, viewtopic.php?start=)
    !preg_match('#/$|/(index|file)\.php|/view(forum|topic)\.php\?[ftp]=#i', $uri)
  • в User-Agent прямо указано, что это бот, написанный на коленке, или запрос пришёл через грязное использование ChatGPT-User
    +preg_match('#ChatGPT|keys-so|python|Firefox\/72#i', $ua)
  • главная страница вызывается с параметрами или любая страница с указанием сессии - так не бывает
    +preg_match('#/\?|/index\.php\?|sid=#i', $uri)
  • признака перехода из браузера нет, а referer есть - так не бывает
    +(isset($_SERVER['HTTP_SEC_FETCH_SITE']) < isset($_SERVER['HTTP_REFERER']))
И тогда прекращаем работу с кодом ошибки 403 - доступ запрещён
and exit(http_response_code(403));
Shredder
Former team member
Сообщения: 2261
Стаж: 17 лет 6 месяцев
Благодарил (а): 164 раза
Поблагодарили: 149 раз

Re: Атака китайских ботов

Сообщение Shredder »

Добавьте в закреп работающие варианты "Антиботов".
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13125
Стаж: 14 лет 10 месяцев
Благодарил (а): 165 раз
Поблагодарили: 2393 раза

Re: Атака китайских ботов

Сообщение Татьяна5 »

Shredder, тут разработка в самом разгаре
Shredder
Former team member
Сообщения: 2261
Стаж: 17 лет 6 месяцев
Благодарил (а): 164 раза
Поблагодарили: 149 раз

Re: Атака китайских ботов

Сообщение Shredder »

Разработка может продолжаться долго. Тем, кто желает протестировать или иметь хоть какую-то защиту, будет полезно иметь код в закрепе
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13125
Стаж: 14 лет 10 месяцев
Благодарил (а): 165 раз
Поблагодарили: 2393 раза

Re: Атака китайских ботов

Сообщение Татьяна5 »

Shredder, сделала
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 429
Стаж: 10 лет 1 месяц
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 42 раза

Re: Атака китайских ботов

Сообщение Kuskow »

Кажется, я доигрался. У некоторых пользователей при переходе на "первое непрочитанное сообщение" из списка непрочитанных тем или при переходе по уведомлению с сайта (колокольчик) открывается первая страница. Не пойму, в чём дело, вроде бы ничего такого не делал, уже и очистку параметров закомментировал полностью. Не работает, и всё тут. Как будто удаляется &view=unread, но где он удаляется - вообще никак не найду. Может быть, это не из-за моих изысканий, а вообще такое где-то наблюдалось? И самое интересное, почему это не у всех пользователей, а только у некоторых.
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 429
Стаж: 10 лет 1 месяц
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 42 раза

Re: Атака китайских ботов

Сообщение Kuskow »

ИИ предлагает сделать самопальный WAF/fail2ban. Я пока противлюсь, так как мне надоело переписывать за ним, а как он пишет с архитектурными излишествами - меня бесит. Так что, я рассказываю идею, которая давно в воздухе витает, а как реализовать - может у кого-то будут идеи попроще.

За основу берём кусок текста в config.php, который я раньше уже писал:

Код: Выделить всё

### Барьер для phpBB, версия 4. Авторы: phpBBguru community

if (isset($_SERVER['REQUEST_METHOD']) and !isset($_COOKIE['checked'])) # Этот кук есть только у людей
{
	### Тут проверяем, есть ли подсеть бота в списке забаненных и баним этого бота, а если нет, тогда дальше:

	$uri = $_SERVER['REQUEST_URI'] ?? '';
	$ua = $_SERVER['HTTP_USER_AGENT'] ?? 'python';
	if (
		!preg_match('#/$|/(index|file)\.php|/view(forum|topic)\.php\?[ftp]=#i', $uri)
		or preg_match('#/\?|/index\.php\?#i', $uri)
		or preg_match('#ChatGPT|keys-so|python|Firefox\/72#i', $ua)
		or (isset($_SERVER['HTTP_SEC_FETCH_SITE']) and isset($_SERVER['HTTP_REFERER']))
	) {
		### Тут записываем IP-адрес бота в лог-файл с IP-адресами, которым выдано 403
		http_response_code(403);
		exit;
	}
}

Отдельно пишется обработчик лог-файла адресов, которым выдано 403. Он будет запускаться через cron (а может и в основной config.php его впихнём) каждые 1-5 минут. В нём считываем записанный лог-файл и тут же его обрезаем. Далее из него считаем:
- если встретилось 10 уникальных IP-адресов одной подсети класса B - записываем эту подсеть в список забаненных;
- если встретилось 50 вообще любых упоминаний этой подсети класса B - записываем эту подсеть в список забаненных.
Аватара пользователя
Kuskow
phpBB 2.0.4
Сообщения: 429
Стаж: 10 лет 1 месяц
Откуда: 🇰🇿 Караганда
Благодарил (а): 29 раз
Поблагодарили: 42 раза

Re: Атака китайских ботов

Сообщение Kuskow »

Siava писал(а): 22.03.2026 12:42 Если не секрет, сколько в пике было забаненных адресов в fail2ban? А то я развлекался как-то подобным образом и примерно после 200тыс серверу было не очень комфортно)
Я теперь сделал так. Когда fail2ban обнаруживает 2x444 за две минуты, он банит на сутки не один конкретный адрес, а всю подсеть класса C, то есть, 1.2.3.x. Так что, соседние адреса забанены заранее ещё до того, как начнут лезть на кактус. В бане постоянно около 400 таких подсетей.
Vlad__
phpBB 2.0.7
Сообщения: 588
Стаж: 9 лет 6 месяцев
Благодарил (а): 246 раз
Поблагодарили: 53 раза

Re: Атака китайских ботов

Сообщение Vlad__ »

Kuskow писал(а): Вчера 16:27а всю подсеть
Сейчас боты используют ротационные прокси, т.е. прокси на мобилках обычных юзеров. Например, в последнем шторме у меня светились самые разные айпи, не привязанные массово к единым подсетям. Поэтому баня подсети, можно забанить и легитимных пользователей.

На пике у меня постоянно висело в бане до 30 тысяч отдельных айпи, серверу было все-равно - ipset )

Вернуться в «phpBB-пространство»