Попробовал сегодня настроить fail2ban по однообразным инструкциям и рекомендациям из инета – у меня не вышло, правила не срабатывали, решил сделать по своему
Это своего рода небольшая превентивная защита которую можно развивать по своему усмотрению и от мелких пакостников она помогает, что бы начать необходимо установить и настроить fail2ban
1 |
# yum install fail2man |
Далее идем в каталог с конфигами и добавляем в конец файла jail.conf запись для своего рода анти-ддос
1 2 3 4 5 6 7 8 9 10 |
[http-get-dos] enabled = true port = http,https filter = http-get-dos logpath = /var/log/virtualmin/*_access_log maxretry = 150 findtime = 60 bantime = 600 action = iptables-multiport[name=HTTP, port="http,https"] sendmail-whois[name=httpd-get-dos, dest=demi4@demi4.com, sender=fail2ban@site.ru] |
Тут нужно заметить что для корректного значения maxretry необходимо проверить сколько в среднем идет запросов с одного IP к сайту (сайтам). для этого я считаю сколько было обращений с одного ip за время findtime
1 |
awk '/Apr\/2016:10:22/ {print $1};' /var/log/virtualmin/site.ru_access_log | sort | uniq -c | sort -rn|head |
У меня за разные периоды вышло максимум до 75 запросов в минуту с одного адреса, с целью запаса умножаю эту цифру на 2 и прописываю в maxretry
Далее необходимо прописать фильтр для логов, для этого создаем файл “/etc/fail2ban/filter.d/http-get-dos.conf” и записываем в него:
1 2 3 |
[Definition] failregex = ^<HOST> -.*\"(GET|POST).* ignoreregex = |
Данная регулярка будет выводить IP из лога, а fqil2ban на основе значение в конфиге будет проверять попадает ли кто то под правила и что с ним делать
После этих настроек перезапускаем fail2ban и радуемся жизни