Назад | Перейти на главную страницу

Как правильно настроить fail2ban для запрета IP, если он обращается к неправильным файлам

Я пытаюсь настроить fail2ban на моем тестовом сервере. Я просто хочу временно заблокировать любых скриптовых ботов, которые пытаются зондировать мой сайт. Так что все, что есть cgi-bin, admin, setup.php и так далее. Я ранее просмотрел все, что генерирует ошибку 404, примерно так: grep "HTTP/1.1\" 404" access.log | awk '{print $7 } ' | sort | uniq -c | sort -n в моем журнале access.log.

Я убедился, что ни один из моих URL-адресов не содержит ни одной из этих частей.

Итак, после установки я создал jail.local и ничего не сделал с jail.conf. Мой файл выглядит так (я хочу заблокировать IP на 10 минут):

[DEFAULT]
ignoreip  = 127.0.0.1
bantime   = 600
destemail = myemail
banaction = iptables-multiport
action    = %(action_mwl)s


[apache-script-bots]
enabled  = true
port     = http,https
filter   = apache-script-bots
logpath  = /var/log/apache2/access.log
maxretry = 1

Я также создал apache-script-bots.conf в filter.d папка, внутри которой есть только это:

[Definition]
failregex = (admin|setup.php|main.php|w00tw00t|web-console|.jsp|manager|cgi-bin)
ignoreregex =

При перезапуске fail2ban показывает, что все в порядке. Но когда я пытаюсь проверить, работает ли моя тюрьма, пытаясь запустить ее с помощью: mydomain/main.php Я вижу, что меня не посадили.

Когда я проверяю статус fail2ban, он говорит мне, что мой джейл работает

fail2ban-client status
Status
|- Number of jail:  2
`- Jail list:       ssh, apache-script-bots

Я предполагаю, что проблема в регулярном выражении, но не могу понять почему.

Вам нужно указать fail2ban (через регулярное выражение), где в записи журнала он найдет <HOST> чтобы затем он мог забанить этот хост. Для обычного журнала доступа это будет в начале строки, поэтому

<HOST> -.*(w00tw00t|main.php|setup.php)

будет работать, но может не делать именно то, что вы хотите, так как он будет соответствовать соответствующим триггерам в любом месте записи журнала.


Вы можете попробовать что-то вроде

<HOST> -.*(/w00tw00t|/main.php |setup.php )

который должен привязать некоторые из нитей к более конкретным местам