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

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Kuskow
phpBB 2.0.2
Сообщения: 346
Стаж: 9 лет 10 месяцев
Откуда: 🇰🇿 Караганда
Благодарил (а): 24 раза
Поблагодарили: 32 раза

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

Сообщение Kuskow »

Это классика: глаз замыливается, и мозг подсознательно «дорисовывает» правильный синтаксис, игнорируя лишние детали. Мы так увлеклись логикой редиректов и поведением ботов, что просмотрели банальную синтаксическую ошибку.
В PHP лишняя скобка — это гарантированный Parse error. А поскольку это было в config.php, сайт просто «умирал» в самом начале, выдавая 500 Internal Server Error (если вывод ошибок в браузер выключен).
Забавно, что:
  • Мы искали проблему в методах запроса (GET/POST).
  • Грешили на заголовки AJAX.
  • Анализировали логи Nginx.
...а всё это время сервер просто не мог прочитать код.
phpBB 3.3.15 • Manticore 17.5 • MariaDB 11.4 (2.8 GB) • Redis • PHP 8.3-FPM • Nginx • HestiaCP • Debian 12 • 4GB DDR4 • 60GB NVMe • 2 vCPU 4GHz
Аватара пользователя
Leo Angel
phpBB 2.0.9
Сообщения: 736
Стаж: 8 лет 2 месяца
Откуда: Израиль
Благодарил (а): 240 раз
Поблагодарили: 93 раза

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

Сообщение Leo Angel »

Leo Angel писал(а): Вчера 23:45 Как обстоят дела с ботами посмотрю-понаблюдаю-напишу.
Kuskow писал(а): Сегодня 5:44 ...а всё это время сервер просто не мог прочитать код.
Ну вот, сервер прочитал код.
Но на ботов он, похоже, впечатление не произвёл. :D
Боты от Alibaba как были в больших количествах, так и остались.
И все опять сидят в одной теме, правда, теперь в другой, не в той, что вчера.
Пока что, по факту самый-самый первый код помог реально против ботов, все остальные варианты лично моему форуму не очень.

Если нет пользы и от этого варианта, то, наверное, буду его сносить. Пока что, что с ним, что без него.
В принципе, нагрузка на сервер небольшая совсем, наверное, пока можно и не париться...
Аватара пользователя
Kuskow
phpBB 2.0.2
Сообщения: 346
Стаж: 9 лет 10 месяцев
Откуда: 🇰🇿 Караганда
Благодарил (а): 24 раза
Поблагодарили: 32 раза

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

Сообщение Kuskow »

Leo Angel писал(а): Сегодня 11:17 И все опять сидят в одной теме
Они не могут "все они". Потому что теперь они должны стать, как минимум, одним ботом. Значит, что-то Вы не сделали из первых двух пунктов Re: Атака китайских ботов
phpBB 3.3.15 • Manticore 17.5 • MariaDB 11.4 (2.8 GB) • Redis • PHP 8.3-FPM • Nginx • HestiaCP • Debian 12 • 4GB DDR4 • 60GB NVMe • 2 vCPU 4GHz
Аватара пользователя
Leo Angel
phpBB 2.0.9
Сообщения: 736
Стаж: 8 лет 2 месяца
Откуда: Израиль
Благодарил (а): 240 раз
Поблагодарили: 93 раза

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

Сообщение Leo Angel »

Kuskow, вот ОНИ (не все, только часть)
1.jpg

В config.php в конец вставил это:

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

### Барьер для защиты от ботов, атакующих phpBB-сайты
### Авторы: Kuskow & AI on Google Search & ChatGPT
if (($_SERVER['REQUEST_METHOD'] ?? '') !== 'GET') return; // когда этот скрипт бесполезен
 
# 1. Шлагбаум: извесных ботов не пускаем даже к дому
preg_match('/ChatGPT|keys-so|python|Firefox\/72/i', $ua = $_SERVER['HTTP_USER_AGENT']) +
preg_match('/wp-|profile\.php/i', $uri = $_SERVER['REQUEST_URI'])
and die(header('HTTP/1.1 403'));
 
# 2. Дебютант: неопознанный бот или первый визит гостя считается как один опознанный бот
empty($_SERVER['HTTP_COOKIE'])
and !preg_match('/Yandex|Googlebot|Google-|Applebot|bingbot|Baiduspider|GPTBot|whatsapp|telegram|facebook/i', $_SERVER['HTTP_USER_AGENT'])
and ($_SERVER['HTTP_USER_AGENT'] = 'Debutante');
 
# 3. Гардероб: разуваем гостей, но не персонал
$noise = 'sid|hilit|gclid|yclid|ysclid|fbclid|utm_\w+';
preg_match('/^(?!.*(adm\/|cp\.php|hash=|mark_)).*?(' . $noise . ')=/i', $uri)
and exit(header('Location: ' . rtrim(preg_replace(["/([?&])($noise)=[^&]*(&|$)/i", '/\?&/'], ['$3', '?'], $uri), '?&'), true, 308));

В /assets/javascript/core.js вставил это:

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

document.cookie = "checked=1; path=/; max-age=86400; SameSite=Lax";

Начало этого файла выглядит так (весь не привожу ибо длинный):

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

/* global bbfontstyle */

document.cookie = "checked=1; path=/; max-age=86400; SameSite=Lax";

var phpbb = {};
phpbb.alertTime = 100;

(function($) {  // Avoid conflicts with other libraries

'use strict';

// define a couple constants for keydown functions.
var keymap = {
	TAB: 9,
	ENTER: 13,
	ESC: 27,
	ARROW_UP: 38,
	ARROW_DOWN: 40
};

var $dark = $('#darkenwrapper');
var $loadingIndicator;
var phpbbAlertTimer = null;
..............................

Бота Debutante [Bot] создал. И вижу его среди гостей.

Что я ещё не сделал? Или что я сделал не так?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Kuskow
phpBB 2.0.2
Сообщения: 346
Стаж: 9 лет 10 месяцев
Откуда: 🇰🇿 Караганда
Благодарил (а): 24 раза
Поблагодарили: 32 раза

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

Сообщение Kuskow »

Leo Angel писал(а): Сегодня 12:20 Бота Debutante [Bot] создал. И вижу его среди гостей
Ааа, тогда всё.
phpBB 3.3.15 • Manticore 17.5 • MariaDB 11.4 (2.8 GB) • Redis • PHP 8.3-FPM • Nginx • HestiaCP • Debian 12 • 4GB DDR4 • 60GB NVMe • 2 vCPU 4GHz
Аватара пользователя
Leo Angel
phpBB 2.0.9
Сообщения: 736
Стаж: 8 лет 2 месяца
Откуда: Израиль
Благодарил (а): 240 раз
Поблагодарили: 93 раза

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

Сообщение Leo Angel »

И какой приговор?
Почему эти Алибабайцы :D пасутся у меня как у себя дома? :lol:
Аватара пользователя
Kuskow
phpBB 2.0.2
Сообщения: 346
Стаж: 9 лет 10 месяцев
Откуда: 🇰🇿 Караганда
Благодарил (а): 24 раза
Поблагодарили: 32 раза

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

Сообщение Kuskow »

Потому что они используют староподхваченные куки. ну или не знаю - надо смотреть по логам. У меня исчезли мгновенно. Завтра пройдёт, надеюсь. А пока переходим ко второй части Марлезонского балета - углубляемся в Nginx. После изменений не забываем перезапустить Nginx.

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

# 1. Статическая блокировка известных ботов
# 1a. Зловредные боты банятся через fail2ban по IP-адресам
if ($http_user_agent ~* "keys-so|python|Firefox/72") { return 444; }
if ($request_uri ~* "wp-|/profile\.php|\.env|\.git|\.aws|\.terraform") { return 444; }
# 1b. Легальным, но нежелательным ботам запрещено только сейчас
#if ($http_user_agent ~* "Mediapartners") { return 403; }

# 2. Поведенческая блокировка наглых ботов без cookies
set $bot_check "";
# 2a. Помечаем точки входа
if ($request_uri ~* "/adm/|ucp\.php|author=") { set $bot_check "A"; }
if ($server_protocol ~ "HTTP/1") { set $bot_check "A"; }
# 2b. Проверка наличия cookies
if ($http_cookie = "") { set $bot_check "${bot_check}C"; }
# 2c. Исключения (ПС и мессенджеры) — обнуляем всё для своих
if ($http_user_agent ~* "Yandex|Googlebot|Google-|Applebot|bingbot|Baiduspider|GPTBot|whatsapp|telegram|facebook") { set $bot_check ""; }
# 2d. Исполнение приговоров
if ($bot_check = "AC") { return 444; }

# 3. Мягкие ответы
# 3b. Системные заглушки
location ^~ /.well-known/acme-challenge/ { allow all; }
location /.well-known/ { log_not_found off; return 204; }
phpBB 3.3.15 • Manticore 17.5 • MariaDB 11.4 (2.8 GB) • Redis • PHP 8.3-FPM • Nginx • HestiaCP • Debian 12 • 4GB DDR4 • 60GB NVMe • 2 vCPU 4GHz

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