На этот вопрос уже есть ответ:
У меня есть сайт, который подвергался DDOS-атакам в одно и то же время каждый день в течение последнего месяца, и, потратив месяц на изучение и выявление ошибки, мы ввели в действие сценарий bash что, если соединение достигает 80+ макс. соединений за одну минуту, то IP-адрес блокируется и помещается в IPTABLES.
Это работало отлично в течение двух дней, и я почувствовал, что наконец решил проблему.
Но, увы, теперь человек отправляет несколько IP-адресов с одним соединением на каждом (см. Вывод здесь http://pastebin.com/7AJqBfJa ). Это приводит к тому, что сайт не работает, как это было, когда один IP-адрес отправлял 150 подключений в минуту.
Это, конечно, совершенно другая игра, когда дело доходит до предотвращения DDOS, и я обращаюсь за помощью к гуру и всем, кто достаточно внимателен, чтобы дать какой-то совет. На данный момент я не знаю, как это исправить, и я буду благодарен за любую помощь.
Как Niall упомянул, mod_evasive работы действительно хорошо в этой ситуации, и я недавно использовал ее для остановки очень похожей проблемы, которую я имел на одном из моих сайтов. Помогает в ситуации, где Вы не получаете тонну соединений на единственном IP, но Вы действительно видите, что неестественные шаблоны происходят на сервере.
В моем случае, о котором я также вел блог здесь, я установил mod_evasive и настроил его со следующими настройками:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 100
DOSPageInterval 3
DOSSiteInterval 5
DOSBlockingPeriod 300
DOSLogDir "/var/log/httpd/modevasive/"
DOSEmailNotify your@emailaddress.com
</IfModule>
В основном, если единственный IP запрашивает тот же ресурс (файл) 3 времена в течение 5 секунд; или 100 хитов на любом файле в течение 5 секунд; Apache затем отклонит дальнейшие просьбы в тот файл.
Если Вы хотите улучшить этот сценарий; можно было инициировать системные команды, когда параметры поражены. В моем случае я добавил эту команду к конфигурации выше:
DOSSystemCommand "/usr/bin/sudo /usr/sbin/csf -td %s 3600"
Это делает мой брандмауэр, CSF блокируют IP в течение часа. Вы могли столь же легко записать iptables сценарий, чтобы сделать то же самое, но CSF помогает мне.
Так или иначе надежда, которая помогает Вам закрепить своих взломщиков DDOS!
Можно использовать iptables для ограничения количества соединений на IP к сервису для смягчения DDoS, пока iptables сценарий не ловит их
iptables -A INPUT -p tcp -m limit --limit 3/s --dport DESTINATIONPORT --limit-burst 10 -m state --state NEW -j ACCEPT
Это ограничит новые соединения с 3 в секунду на с максимальным пакетом 10 соединений.
Убедитесь прекрасной тонкой настройке это к своим потребностям, 3 соединения в секунду является довольно низким в зависимости от трафика, который выполняет Ваш сервер
Предположение, что Вы выполняете Apache, mod_evasive, могло бы быть полезным.