Модуль es-phpBB был разработан компанией Extra Systems для защиты форумов phpBB от хакерской активности в рамках системы fail2ban. Суть его деятельности заключается в выявлении специфической активности в файле /var/log/nginx/access.log.
Подключение es-phpBB к fail2ban производится таким способом:
[es-phpBB] enabled = true filter = es-phpBB logpath = /var/log/nginx/access.log action = iptables-allports[name=es-phpBB, blocktype=DROP, protocol=all]
Обратите внимание на тот факт, что данный фильтр блокирует для изобличенного хакера все протоколы на всех портах, причем делает это по методу DROP - что превращает после этого ваш хост в абсолютно "черную дыру" для данного конкретного злоумышленника. Ни на один свой последующий IP-пакет он не получит вообще никакого ответа. Таким образом нами обеспечивается значительная экономия ресурсов вашего сервера.
Код нашего фильтра es-phpBB имеет такой вид:
[Definition]
failregex = ^<HOST> - - \[.*\] "POST /ucp\.php\?mode=register HTTP/\d\.\d" 200
^<HOST> - - \[.*\] "GET /viewtopic\.php\?(p|f)=\d+&sid=[0-9a-f]{32} HTTP/1.1" 200
ignoreregex =
Работа этого фильтра основана на том факте, что phpBB отдает код 200 в случае неудачной регистрации (звучит парадоксально, но это - четко установленный нами факт). Его применение будет особо эффективным в сочетании с активизацией на форуме phpBB процедуры контрольных вопросов в модуле регистрации. Дело в том, что спам-боты в настоящее время уже научились хорошо преодолевать заслон стандартной капчи, а вот с ответами на разные каверзные вопросы у них, как правило, возникают очень большие проблемы. В этом случае наш фильтр es-phpBB будет очень эффективно блокировать попытки спам-ботов подобрать ответы на ваши вопросы и тем самым надежно препятствовать их регистрации.
Вторая строчка этого фильтра предназначена для блокирования вредоносной деятельности агрессивных сканеров, которые имеют обыкновение систематически перенапрягать web-сервер (на котором работает форум на phpBB) огромным количеством бессмысленных запросов (хаотически меняя параметр "sid"). Пример подобной атаки можно видеть здесь:
47.82.15.120 - - [24/May/2026:15:47:11 +0300] "GET /viewtopic.php?p=61&sid=9357550dc1804e4629dcdd8fdc5229d7 HTTP/1.1" 200 14935 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" 47.79.10.195 - - [24/May/2026:15:47:11 +0300] "GET /viewtopic.php?p=61&sid=f89c4ad7fc85b59f78a2c78043b842dc HTTP/1.1" 200 14962 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36" 47.79.10.99 - - [24/May/2026:15:47:14 +0300] "GET /viewtopic.php?p=53&sid=aaacadec1873954e5a2e1ebaf81b6315 HTTP/1.1" 200 14938 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36" 47.82.15.173 - - [24/May/2026:15:47:15 +0300] "GET /viewtopic.php?p=63&sid=f3632071a6b466a7104eb420dcd50078 HTTP/1.1" 200 14935 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" 47.82.13.56 - - [24/May/2026:15:47:15 +0300] "GET /viewtopic.php?p=55&sid=0c4d064c98f5962022c898762277d70d HTTP/1.1" 200 14934 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36" 47.82.14.132 - - [24/May/2026:15:48:15 +0300] "GET /viewtopic.php?p=62&sid=2effa27b4f7dad2e53c162fc59056615 HTTP/1.1" 200 14939 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" 47.82.15.152 - - [24/May/2026:15:48:15 +0300] "GET /viewtopic.php?p=61&sid=e6f077186f4758f9834cfb8a5ebce0fb HTTP/1.1" 200 14957 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" 47.79.10.62 - - [24/May/2026:15:48:15 +0300] "GET /viewtopic.php?p=63&sid=967d58cdb32f00aaffe0e1c17a322b9c HTTP/1.1" 200 14956 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" 47.79.51.121 - - [24/May/2026:15:49:11 +0300] "GET /viewtopic.php?p=62&sid=5200c15f19374eb46fdef9abf2a55e7d HTTP/1.1" 200 14926 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36"
Само собой понятно, что для правильной работы этого фильтра (во избежание блокировки легальных поисковых систем) вы должны иметь соответствующий robots.txt на своем сайте. Например, у нас он выглядит сейчас следующим образом:
User-Agent: * Disallow: /adm/ Disallow: /app.php Disallow: /common.php Disallow: /cron.php Disallow: /download/ Disallow: /ext/ Disallow: /faq.php Disallow: /feed.php Disallow: /mcp.php Disallow: /memberlist.php Disallow: /notification.php Disallow: /posting.php Disallow: /report.php Disallow: /search.php Disallow: /styles/ Disallow: /ucp.php Disallow: /viewonline.php Disallow: /*&sid= Disallow: /*?sid= Disallow: /*&p= Disallow: /*?p= Disallow: /*view=print
Обратите внимание здесь на эти ключевые строки:
Disallow: /*&sid= Disallow: /*?sid= Disallow: /*&p= Disallow: /*?p=
Легко видеть, что они ясно сообщают всем легальным поисковым системам, что адреса вида
/viewtopic.php?p=63&sid=967d58cdb32f00aaffe0e1c17a322b9c
запрашивать с нашего сервера для индексации отнюдь не следует. Таким образом, в итоге наш фильтр блокирует исключительно хакерскую, а отнюдь не легальную активность.
Кроме того, весьма желательно (для эффективной индексации контента вашего форума на phpBB легальными поисковыми системами) иметь на своем сайте и надлежащим образом сформированную карту сайта (в виде sitemap.txt или sitemap.xml).
В условиях практической эксплуатации на наших Linux-серверах данный фильтр показал очень высокую эффективность в деле подавления хакерской и спамерской активности на форумах, созданных на платформе phpBB.
| © Extra Systems, 2026 |
|