Не стоит думать, что слабый ddos не сможет нанести ущерба вашему серверу. Например, атакующих зомби-машин всего 50-150, все они с толстыми каналами, а вы уехали в командировку или у вас 10-ки серверов и вы не успеваете физически мониторить все. В таком случае, даже не большое количество машин, смогут зафлудить канал или заставить выйти из строя веб сервер apache, mysql, etc. Другое дело когда администратор 24 часа в сутки мониторит сервер и с легкостью обнаруживает атаки, далее с легкостью и в считанные секунды заносит несколько правил в таблицу фаервола при этом спокойно попивая кофе, продолжает заниматься своими делами. Но такое бывает редко, смотреть сутками и мониторить вывод комманд netstat, top, mtop убийственно для вашего мозга, и глаза устанут, будем непосебе :), поэтому нужно автоматизировать процесс блокировки атакующих зомби-машин.
Один из методов как защитить свой сервер от флуд атак и слабого ddos-a по http протоколу это установить модуль для веб-сервера Apache - mod_dosevasive.
Установка и настройка mod_dosevasive
Debian Linux (только для Apache 1.3.x) apt-get install libapache-mod-dosevasive
Или же вы можете найти этот модуль в google, яндексе и т.д.
Распаковываете архив tar zxvf название архива.tar.gz cd mod_dosevasive
Компилируем mod_dosevasive для Apache 2 /usr/local/apache/bin/apxs2 -i -a -c mod_dosevasive20.c
Если у вас apache 1.3 тогда так /usr/local/apache/bin/apxs -i -a -c mod_dosevasive.c
(!) Замените /usr/local/apache на ваш путь к apache
Редактируем httpd.conf (Чаще всего он находится в /usr/local/apache/conf/httpd.conf) Убедитесь, что нечто подобное присутствует в настройках LoadModule evasive20_module lib/apache2/modules/mod_evasive20.so
Добавляем в конец файла следующие строки DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 15 DOSEmailNotify email@for-notify.com DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
-- DOSHashTableSize: это размер хэш-таблицы которая обрабатывает запросы к WWW-серверу. -- DOSPageCount: число запросов к одной странице от одного и того же IP в течение указаного интервала времени. -- DOSSiteCount: число запросов ко всем страницам домена, т.е если поступило более 50-ти запросов с одного ай-пи на разные страницы домена - тогда такой ай-пи будет заблокирован. -- DOSPageInterval: Интервал для директивы DOSPageCount (в секундах) -- DOSSiteInterval: Интервал для директивы DOSSiteCount (в секундах) -- DOSBlockingPeriod: На сколько заблокировать ай-пи (в секундах) -- DOSEmailNotify: может быть использован для уведомления, будет отправлять сообщение по электронной почте о том что такой-то IP был заблокирован. -- DOSSystemCommand: эта директива используется для выполнения какой-нибудь вашей команды когда IP блокируется. Вы можете использовать это для добавления IP-адреса в таблицу фаервола. (пример: "/sbin/iptables -A INPUT -p tcp --dport 80 -s %s -j REJECT" В %s передается от модуля IP) -- DOSWhiteList: список белых IP адресов, можно и по маскам (напр. 127.0.0.*)
Также этот модуль позволяет защитить ваши сайты от brute force атак.