Сначала я, как и многие, отнесся скептически. Думал: "очередная поделка, которая положит сервер ложными срабатываниями". Тем более, суть фильтра - блокировать появление параметра "sid" в GET-запросах к "viewtopic.php". Я сразу представил параноиков с отключенными куками, которых я забаню. Не хотел разбираться, отмахивался.
Но когда увидел в логах своего nginx, как с одного IP летит по 20 запросов в секунду к разным темам с постоянно меняющимся "sid" - я задумался. А когда понял, что эти адреса даже не пытаются регистрироваться или постить - просто долбят темы, чтобы нагрузить сервер, - я разозлился.
Поставил этот фильтр. И знаете что? За сутки fail2ban отправил в бан (DROP на всех портах) несколько тысяч адресов. Сервер выдохнул. Нагрузка упала в разы.
Теперь по фактам, а не по эмоциям:
- Почему это работает. Фильтр смотрит на элементарную логику: реальному пользователю достаточно открыть тему ОДИН РАЗ. Ему не нужно генерировать 100500 сессий с разными "sid". Бот, который пытается сожрать ресурсы или обойти кэш, делает именно это. И его карает железобетонное правило.
- Миф о "ложных срабатываниях". Да, есть 1% пользователей, которые вручную отключают куки. Но, во-первых, они не долбят один пост по 100 раз. Во-вторых, если сайт без кук не работает — это их осознанный выбор. В-третьих, администратор форума должен защищать ресурс, а не плясать под дудку параноиков. Сайт должен работать быстро и стабильно для 99% адекватных людей.
- Правильный robots.txt - залог успеха. Автор фильтра приложил пример "robots.txt", где явно запрещены все ссылки с "sid". Поисковые роботы - молодцы, они это читают и не попадают под бан. А те, кто не читает... ну, вы поняли.
Потому что оно простое, как угол дома, и при этом убивает сразу двух зайцев:
- Экономия ресурсов (DROP вместо reject — вообще тишина в ответ, сервер не тратит пакеты).
- Отсев мусорного трафика.
Минусы (куда без них):
- Нужно быть уверенным в своих настройках nginx и phpBB. Неправильно настроите - будут баны легальных гостей.
- Не для новичков. Надо понимать, что такое fail2ban и как править regex (хотя там всё готовое).
Я оставляю этот фильтр включенным на всех своих проектах под phpBB. И вам советую - перестаньте нянчиться с ботами, которые маскируются под людей. Включите "es-phpBB", пропишите правильно robots.txt и забудьте про проблемы с нагрузкой. За безопасность спасибо Extra Systems.
P.S. Отдельное спасибо автору за то, что опубликовал это. Многие держат такие наработки для себя, а тут — открыто поделились. Респект.