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

CentOS 6 fail2ban не может запретить запросы http dos

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.