Суть проблемы - на сервер с большим количеством сайтов переодически происходит атака (умышленная, или поисковые роботы Google пока понять не смог).
При использовании SSH команды во время атаки (сервер висит почти намертво):
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
Вижу в выводе примерно следующее:
1 54.165.102.64
1 54.169.129.166
2 93.66.16.249
3 203.162.2.92
4 179.61.8.3
5 171.98.170.157
5 213.149.12.67
6 91.98.235.122
9 121.134.16.228
9 37.17.4.47
13 0.0.0.0
20
262 185.62.188.91
Как видно последний ip 118.148.168.30 имеет 262 соединения к серверу и именно он вешает его, при ручной блокировке командой:
iptables -I INPUT -s 185.62.188.91 -j DROP
через пару минут сервер восстанавливает свою нормальную работу, пока не начнется похожая атака с другого IP (через несколько часов или день или месяц).
Для того чтобы автоматизировать процесс бана таких IP я установил утилиту fail2ban и настроил его согласно статьи в интернете, в jail.conf добавил следующее:
[apache-ddos]
enabled = true
filter = apache-ddos
action = iptables-multiport[name=ddos, port="http,https"]
sendmail-buffered[name=ddos, lines=5, dest=root]
logpath = /var/www/vhosts/domain.com/statistics/logs/access_log
/var/www/vhosts/wp.domain.com/statistics/logs/access_log
/var/log/apache*/*access.log
bantime = 43200
findtime = 600
maxretry = 60
ignoreregex = \.(jpg|jpeg|png|gif|js|css)
Естественно перезапустил fail2ban после изменений, но тем не менее почему то это не помогает с автоматической блокировкой всех таких ip (некоторые блокируются, некоторые нет). Что я настроил не так и как настроить правильно?