Оказывается можно попытаться защитить свой сервер от DoS посредством (D)DOS DEFLATE, это сценарий, который на периодичной основе проверяет количетсво используемых подключений с одного IP адреса.
Проверить наличие таких подключений можно командой:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
При наличии подключений более чем обозначили Вы, данный IP блокируется, благодаря созданному автоматически скриптом правилу в iptables.
Установка (D)DoS Deflate
Происходит посредством загрузки установочного скрипта, указанием разрешений на запуск и собственно запуск установки:
wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh
Удаление (D)DoS Deflate
Происходит в аналогичном порядке, за исключением загружаемого скрипта:
wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
chmod 0700 uninstall.ddos
./uninstall.ddos
Настройка (D)DoS Deflate
Конфиг расположен в каталоге – /usr/local/ddos/, имя конфига – ddos.conf, основные настройки:
- указание возможного количества соединений – NO_OF_CONNECTIONS=64
- указание блокировки посредством iptables – APF_BAN=0
- период блокирования в секундах – BAN_PERIOD=600
- настрйоку – KILL=1 оставляем по умолчанию
- указать email для отправки почтовых уведомлений – EMAIL_TO=”user@server.domain“
- так же можно создать список “белых” IP в файле – IGNORE_IP_LIST=”/usr/local/ddos/ignore.ip.list”
Запуск самого скрипта можно можно осуществить так:
# /usr/local/ddos/ddos.sh
*/1 * * * * nice -n -5 /usr/local/ddos/ddos.sh
Дополнительно
Просмотр общего количества соединений:
netstat -n -p | awk '{print $6}'|awk -F: '{print $1}' | sort -n | uniq -c | sort -nr | head -n10
Далее можно просмотреть рейтинг количества подключений:
netstat -n -p | awk '{print $5}'|awk -F: '{print $1}' | sort -n | uniq -c | sort -nr | head -n10
И далее можно просмотреть по каким портам:
netstat -nput | awk '{print $4}'|awk -F: '{print $2}' | sort -n | uniq -c | sort -nr | head -n10
По материалам: Источник1 Источник2