Задать вопрос
DedalX
@DedalX
Web разработчик, IT бизнесмен

Как правильно настроить Fail2Ban для HTTP (DDOS) защиты?

Суть проблемы - на сервер с большим количеством сайтов переодически происходит атака (умышленная, или поисковые роботы 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 (некоторые блокируются, некоторые нет). Что я настроил не так и как настроить правильно?
  • Вопрос задан
  • 8953 просмотра
Подписаться 7 Оценить Комментировать
Решения вопроса 1
@azazelpw
Linux SA
Ограничьте кол-во подключений с одного ip адреса. Можно сделать через iptables.
www.cyberciti.biz/faq/iptables-connection-limits-howto
/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j REJECT --reject-with tcp-reset
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bukass
А как отменить (на всякие случай) указанную вами выше команду?


Не подгружать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы