Мне нужна помощь в настройке регулярного выражения для fail2ban. Я использую свой веб-сервер в основном для простого хостинга файлов подкастов, но вижу в журналах много недопустимых запросов на файлы php, asp и pl.
Я бы хотел настроить fail2ban для поиска недопустимых файловых запросов этих типов в журналах.
В какой-то момент у меня были следующие настройки строк регулярных выражений для apache:
[[] client []] (Нет такого файла или каталога | скрипт не найден или не может быть обработан): /\S*(php|mysql|.asp|.exe|.pl)
[[] client []] скрипт '/\S*(.php|.asp|.exe|.pl)\S*' не найден или не может выполнить статистику * $
Это явно не работает для журналов nginx. Вот отрывок из неверного запроса файла (я изменил пути и IP-адреса):
2011/05/14 20:38:20 [ошибка] 5349 # 0: * 828 open () "/example/path/htdocs/administrator.php" не удалось (2: нет такого файла или каталога), клиент: 123.123.123.123 , сервер: example.server.com, запрос: «GET administrator.php HTTP / 1.1», хост: «example.server.com»
Могу ли я получить помощь в создании измененной строки регулярного выражения, чтобы отловить эти типы ошибок? Я хотел бы повторить, что я не размещаю какие-либо файлы php или asp, поэтому меня не слишком беспокоит потенциальный риск ложного срабатывания здесь.
/etc/fail2ban/filter.d/nginx-noscript.conf
[Definition]
failregex = open\(\) "/\S*(\.php|\.asp|\.exe|\.pl)\S*" failed \(2: No such file or directory\), client: <HOST>,.*
ignoreregex =
/etc/fail2ban/jail.conf
[nginx-iptables]
enabled = true
filter = nginx-noscript
action = iptables[name=nginx, port=81, protocol=tcp]
logpath = /var/log/nginx/*error_log
maxretry = 3
Прокомментируйте ignoreip = 127.0.0.1/8
и тестирование с некоторыми несуществующими запросами:
2012/08/10 09:28:11 [error] 3473#0: *27 open() "/var/www/localhost/htdocs/d.pl" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /d.pl HTTP/1.0", host: "localhost:81"
в /var/log/fail2ban.log
, вы увидите что-то вроде этого:
2012-08-10 09:32:55,234 fail2ban.actions: WARNING [nginx-iptables] Ban 127.0.0.1
Еще раз просмотрите iptables:
Chain fail2ban-nginx (1 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- * * 127.0.0.1 0.0.0.0/0