DDOS по нескольким IP с одним подключением

У меня есть сайт, на котором каждый день в течение последнего месяца использовался DDOS в одно и то же время, и, потратив месяц на изучение и выявление ошибки, мы ввели сценарий bash, который, если соединение достигает 80+ макс. Соединений за одну минуту тогда IP забанят и поместят в IPTABLES.

Это работало отлично в течение двух дней, и я почувствовал, что наконец решил проблему.

Но, увы, сейчас человек отправляет несколько IP-адресов только с одним соединением на каждом (просмотрите выходные данные здесь http://pastebin.com/7AJqBfJa). Это приводит к отключению сайта, как это было, когда один IP-адрес отправлял 150 соединений в минуту.

Это, конечно, совершенно другая игра в мяч, когда речь идет о предотвращении DDOS, и я ищу помощи у гуру и всех, кто достаточно любезен, чтобы дать совет. На данный момент я не знаю, как это исправить, и любая помощь будет принята с благодарностью.

3 ответа

Решение

Как упоминал Найл, 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 может быть полезен.

Другие вопросы по тегам