UPD: 18.02.2015
Я немного допилил скрипт, инструкция по установке на GitHub: https://github.com/Amet13/ddos-deflate
Все что описано ниже, я делал гораздо раньше.
На днях сервер упал под DDoS. До этого момента защищался от них только самопальным скриптом и модулем GeoIP для nginx. Однако в этот раз нагрузка была слишком большая, поэтому скрипт и nginx не справились.
В связи с этим я нашёл в интернете скрипт, который позволяет защититься от некоторых видов DDoS, от заказных атак он конечно не спасёт, но большинство отразить он способен.
В своей основе скрипт использует команду:
# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
141 1.2.3.4
26 5.4.3.2
20 8.7.6.5
...
Исправления тут: https://github.com/Amet13/ddos-deflate
Я немного допилил скрипт, инструкция по установке на GitHub: https://github.com/Amet13/ddos-deflate
Все что описано ниже, я делал гораздо раньше.
На днях сервер упал под DDoS. До этого момента защищался от них только самопальным скриптом и модулем GeoIP для nginx. Однако в этот раз нагрузка была слишком большая, поэтому скрипт и nginx не справились.
В связи с этим я нашёл в интернете скрипт, который позволяет защититься от некоторых видов DDoS, от заказных атак он конечно не спасёт, но большинство отразить он способен.
В своей основе скрипт использует команду:
# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
141 1.2.3.4
26 5.4.3.2
20 8.7.6.5
...
которая выявляет число открытых соединений с каждого адреса, и в случае если соединений много, то адрес блокируется на определённое время.
# cd /tmp
# wget http://www.inetbase.com/scripts/ddos/install.sh
# chmod 0700 install.sh
# ./install.sh
Редактируем конфигурационный файл скрипта. Я изменил только два значения:
# vim /usr/local/ddos/ddos.conf
# вместо APF используем IPTables
APF_BAN=0
# куда отправляем письма
EMAIL_TO="[email protected]"
Добавляем адреса, которые будут игнорироваться скриптом:
# vim /usr/local/ddos/ignore.ip.list
127.0.0.1
1.2.3.4
2.2.2.2
Скрипт не идеален и в нём много косяков, по крайней мере на Debian 7.
Дальше буду их исправлять.
Пробуем запустить скрипт:
# /usr/local/ddos/ddos.sh -c
./ddos.sh: 13: [: /usr/local/ddos/ddos.conf: unexpected operator
DDoS-Deflate version 0.6
Copyright (C) 2005, Zaf <[email protected]>
$CONF not found.
Для устранения этого косяка нужно уже исправить в /usr/local/ddos/ddos.sh:
#!/bin/sh
на
#!/bin/bash
Проверяем снова:
# /usr/local/ddos/ddos.sh -c
./ddos.sh: 14: ./ddos.sh: source: not found
crond: unrecognized service
./ddos.sh: 72: ./ddos.sh: cannot create : Directory nonexistent
./ddos.sh: 73: [: -le: unexpected operator
./ddos.sh: 76: ./ddos.sh: let: not found
./ddos.sh: 77: ./ddos.sh: let: not found
./ddos.sh: 78: ./ddos.sh: let: not found
./ddos.sh: 79: ./ddos.sh: cannot create : Directory nonexistent
crond: unrecognized service
В Debian сервис крона называется cron, а не crond.
Нужно исправить в файле /usr/local/ddos/ddos.sh везде:
crond
на
cron
Проверяем:
# /usr/local/ddos/ddos.sh -c
[ ok ] Restarting periodic command scheduler: cron[....] Stopping periodic command scheduler: cron.
[ ok ] Starting periodic command scheduler: cron.
[ ok ] Restarting periodic command scheduler: cron[....] Stopping periodic command scheduler: cron.
[ ok ] Starting periodic command scheduler: cron.
Теперь всё ок.
Удаление скрипта:
# cd /tmp
# wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
# chmod 0700 uninstall.ddos
# ./uninstall.ddos
Исправления тут: https://github.com/Amet13/ddos-deflate
При удачной настройке iptables nginx попросту блокирует атакующие адреса и они не нагружают системные ресурсы сервера, ну а для решения серьезных проблем нужная хорошая аппаратная защита. Могу порекомендовать ребят из Simplyway. отлично справляются с ддос атаками
ОтветитьУдалить