Fail2ban не может заблокировать клиентов, которые делают чрезмерное количество запросов по HTTP. Запреты SSH работают нормально
Чтобы проверить это, я провел несколько тестов, используя ab
и curl
с других серверов. Я даже позаботился о том, чтобы меня забанили по ssh. Мне это удалось, но не удалось выполнить HTTP-запросы.
ab -n 600 -c 10 http://domain.tld/
Я пробовал несколько правил регулярных выражений для фильтров, которые отлично работали при тестировании части журналов apache. У меня такой результат:
tail -n 10000 /var/log/httpd/<vhost>_access.log > /tmp/f2btest.log
fail2ban-regex /tmp/f2btest.log /etc/fail2ban/filter.d/cybertec-ban.conf
В результате получилось следующее:
Running tests
=============
Use failregex file : /etc/fail2ban/filter.d/custom-ban.conf
Use log file : /tmp/f2btest.log
Results
=======
Failregex: 9583 total
|- #) [# of hits] regular expression
| 1) [9583] ^<HOST> -.*\"(GET|POST).*
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [10000] Day/MONTH/Year:Hour:Minute:Second
`-
Lines: 10000 lines, 0 ignored, 9583 matched, 417 missed
Missed line(s): too many to print. Use --print-all-missed to print all 417 lines
Предполагаю, что проблема не в выводе. Скажите, пожалуйста, если я ошибаюсь.
Я вложил правила в jail.conf
, правила выглядят так:
#
# Filter malicious http requests
#
[custom-ban]
enabled = true
port = http,https
filter = custom-ban
action = iptables[name=HTTP, port=http, protocol=tcp]
iptables[name=HTTPS, port=https, protocol=tcp]
logpath = /var/log/httpd/*access.log # <- this works according to the fail2ban log
/var/log/httpd/access_log
maxretry = 500
findtime = 120
В custom-ban
фильтр (который находится в /etc/fail2ban/filter.d/) выглядит так:
[Definition]
failregex = ^<HOST> -.*\"(GET|POST).*
ignoreregex =
Что я делаю не так? Что я забыл? Как я могу заставить эти правила работать?
Есть ли конфликт имен или что-то в этом роде?
У тебя есть maxretry
установлен в 500
и findtime
установлен в 120
поэтому IP-адрес должен сгенерировать 500 соответствующих сообщений за 120 секунд, чтобы его заблокировали.
Я ничего не знаю о вашей системе, о том, чем она подвергается атаке и как быстро или даже что это нормально. Со стороны они кажутся немного завышенными, попробуйте уменьшить maxretry.