Модуль es-nginx-access был разработан компанией Extra Systems для защиты web-сервера nginx от хакерской активности в рамках системы fail2ban. Суть его деятельности заключается в выявлении подозрительной активности в файле /var/log/nginx/access.log.
Подключение es-nginx-access к fail2ban производится таким способом:
[es-nginx-access] enabled = true filter = es-nginx-access logpath = /var/log/nginx/access.log action = iptables-allports[name=es-nginx-access, blocktype=DROP, protocol=all]
Обратите внимание на тот факт, что данный фильтр блокирует для изобличенного хакера все протоколы на всех портах, причем делает это по методу DROP - что превращает после этого ваш хост в абсолютно "черную дыру" для данного конкретного злоумышленника. Ни на один свой последующий IP-пакет он не получит вообще никакого ответа. Таким образом нами обеспечивается значительная экономия ресурсов вашего сервера.
Код нашего фильтра es-nginx-access имеет такой вид:
[Definition]
failregex = ^<HOST> - - \[.*\] "GET .*/\.(env|git|aws).* HTTP/.*" 404
^<HOST> - - \[.*\] "GET / HTTP/1.1" 404
^<HOST> - - \[.*\] "(GET|POST) /\.(?!well-known/acme-challenge/).*" 404
^<HOST> - - \[.*\] "(GET|POST|PUT) /.*\.(php|json|js|sql|yml) HTTP/.*" 404
^<HOST> - - \[.*\] ".*" 400
^<HOST> - - \[.*\] "GET /ip HTTP/.*" 404
^<HOST> - - \[.*\] "(GET|POST|PUT) /.*(\.\.\/|cgi-bin|eval-stdin).*" 404
^<HOST> - - \[.*\] "POST //? HTTP/.*" 405
^<HOST> - - \[.*\] "GET //?(admin|login(\.\S+)?|whm|cpanel) HTTP/.*" 404
^<HOST> - - \[.*\] "PROPFIND / HTTP/.*" 405
^<HOST> - - \[.*\] "GET /SDK/.* HTTP/.*" 404
ignoreregex =
Отдельного внимания заслуживает строка фильтра
^<HOST> - - \[.*\] "GET / HTTP/1.1" 404
Это наше фирменное архитектурное решение, реализующее превентивную ловушку (Honey Pot) на уровне HTTP-протокола. Суть метода заключается в отсечении автоматизированных сканеров на этапе первичной разведки, когда бот производит «ковровый» обход сети по IP-адресам, еще не зная целевого доменного имени. Обычный пользователь никогда не вводит IP-адрес сервера в строку браузера напрямую для запроса корня сайта, поэтому любой такой заход, завершившийся ошибкой 404, гарантированно идентифицирует слепой хакерский сканер или агрессивный парсер. Однако для того, чтобы этот изящный капкан активировался, необходимо выполнить обязательное условие: на сервере должен быть физически удален конфигурационный файл сайта по умолчанию (default server block). На чистом веб-сервере Nginx запросы «по IP» перехватываются дефолтной заглушкой и отдают код 200 OK, что делает ловушку неактивной.
Выполнение команды
rm /etc/nginx/sites-enabled/default
и последующая перезагрузка Nginx заставляют сервер отвечать кодом 404 Not Found на любые обращения в обход легитимных доменных имен, превращая стандартную ошибку в мощный и бесшумный инструмент проактивной защиты.
В условиях практической эксплуатации на наших Linux-серверах данный фильтр показал очень высокую эффективность в деле подавления хакерской активности в рамках web-сервера nginx.
| © Extra Systems, 2026 |
|