Сегодня узнал про прикольную штуку, смысл в том, что крон дергает следующую
команду:
И айпи, число соединений с которых превышает заданное по конфигу, банятся файрволом.
Рассмотрим более подробно как юзать:
Принцип действия данного скрипта состоит в том, что им с некоторым интервалом (запуск осуществляется по cron) определяются IP, с которых превышен лимит на соединения к серверу.
Такие IP блокируются через iptables или apf на некоторое время и по истечению этого времени происходит их вынесение из запрещающих правил.
Разблокировка IP через некоторое время в таком случае дает два положительных момента:
1)При вынесении таблица правил не содержит очень большое количество записей, а только те, с которых недавно осуществлялась атака, это дает большую производительность фильтра пакетов (iptables или apf);
2)Снижается нагрузка на CPU путем предотвращения перебора большого количества правил для входящего пакета.
Установка (D)DoS Deflate:
Качаем установочный скрипт, даем ему права на выполнение и запускаем его
В ходе установки в директорию /usr/local/ddos/ вносится сам скрипт, конфигурационные файлы и добавляется задание в cron.
В debian-подобных системах задание, внесенное в cron установочным скриптом не всегда выполняется (в данном случае именно так и произошло), поэтому нужно самостоятельно добавить выполнение скрипта с помощью команды:
Внести в редакторе заданий следующую строку:
Где */1 * * * * — указывает на выполнение скрипта с интервалом в 1 минуту.
Проверить, выполняется ли скрипт по cron можно с помощью просмотра /var/log/syslog. В нем должны содержаться строки вида
Далее проверяем вывод команды iptables-save и удостоверяемся, что в ее выводе содержатся запрещающие правила:
Общее количество запрещающих правил можно посмотреть с помощью команды
Файл конфигурации скрипта /usr/local/ddos/ddos.conf имеет следующую структуру:
Для отправки уведомлений на e-mail используется команда mail -s «IP addresses banned on …» $EMAIL_TO.
Стоит проверить с командной строки отправку письма с помощью этой команды. Возможно, понадобится установка пакета mailx (если он не установлен).
Если нужно исключить блокировку скриптом определенных IP, они вносятся в /usr/local/ddos/ignore.ip.list по одному в строку.
Например:
При настройке (D)DoS Deflate в дистрибутивах на базе RedHat нужно учесть такие особенности:
Задание по cron добавляется и выполняется корректно, поэтому вручную добавлять его не нужно !
После смены интервала запуска скрипта (параметр FREQ) нужно единоразово выполнить скрипт с опцией —cron (/usr/local/ddos/ddos.sh —cron), в самом скрипте для корректной работы в связи с отличием вывода команды netstat в Debian и RedHat нужно часть:
заменить на
Параметр NO_OF_CONNECTIONS конфигурационного файла стоит определять опытным путем с учетом специфики проекта, на который осуществляется атака.
Источники:
Журнал "Хакер"
команду:
Код:
netstat -ntu 1 awk '{print $5}~ cut ~
-d: -fl 1 sort 1 uniq -с 1 sort -n
Рассмотрим более подробно как юзать:
Принцип действия данного скрипта состоит в том, что им с некоторым интервалом (запуск осуществляется по cron) определяются IP, с которых превышен лимит на соединения к серверу.
Такие IP блокируются через iptables или apf на некоторое время и по истечению этого времени происходит их вынесение из запрещающих правил.
Разблокировка IP через некоторое время в таком случае дает два положительных момента:
1)При вынесении таблица правил не содержит очень большое количество записей, а только те, с которых недавно осуществлялась атака, это дает большую производительность фильтра пакетов (iptables или apf);
2)Снижается нагрузка на CPU путем предотвращения перебора большого количества правил для входящего пакета.
Установка (D)DoS Deflate:
Качаем установочный скрипт, даем ему права на выполнение и запускаем его
Код:
wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh
В ходе установки в директорию /usr/local/ddos/ вносится сам скрипт, конфигурационные файлы и добавляется задание в cron.
В debian-подобных системах задание, внесенное в cron установочным скриптом не всегда выполняется (в данном случае именно так и произошло), поэтому нужно самостоятельно добавить выполнение скрипта с помощью команды:
Код:
crontab -e
Внести в редакторе заданий следующую строку:
Код:
*/1 * * * * nice -n -5 /usr/local/ddos/ddos.sh
Где */1 * * * * — указывает на выполнение скрипта с интервалом в 1 минуту.
Проверить, выполняется ли скрипт по cron можно с помощью просмотра /var/log/syslog. В нем должны содержаться строки вида
Код:
May 10 20:07:02 astreus /USR/SBIN/CRON[30284]: (root) CMD (nice -n -5 /usr/local/ddos/ddos.sh)
Далее проверяем вывод команды iptables-save и удостоверяемся, что в ее выводе содержатся запрещающие правила:
Код:
-A INPUT -s 41.72.34.212/32 -j DROP
...
-A INPUT -s 85.159.201.54/32 -j DROP
Общее количество запрещающих правил можно посмотреть с помощью команды
Код:
iptables-save | grep -c DROP
Файл конфигурации скрипта /usr/local/ddos/ddos.conf имеет следующую структуру:
Код:
##### Путь к основным составляющим работы скрипта
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh"
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" # список игнорируемых IP
CRON="/etc/cron.d/ddos.cron"
APF="/etc/apf/apf"
IPT="/sbin/iptables"
##### Интервал запуска скрипта в минутах
FREQ=1
##### Количество максимальных соединений с одного IP
NO_OF_CONNECTIONS=90
##### Если используем iptables - ставим 0
##### Если используем apf - устанавливаем его и ставим 1
APF_BAN=0
##### При запуске задания через cron,
##### разработчики рекомендуют значение этой опции 1
KILL=1
##### E-mail, на который отправляется уведомление о бане
##### Если отправка не нужна, ставим значение ""
EMAIL_TO="root"
##### Время бана в секундах
BAN_PERIOD=3600
Для отправки уведомлений на e-mail используется команда mail -s «IP addresses banned on …» $EMAIL_TO.
Стоит проверить с командной строки отправку письма с помощью этой команды. Возможно, понадобится установка пакета mailx (если он не установлен).
Если нужно исключить блокировку скриптом определенных IP, они вносятся в /usr/local/ddos/ignore.ip.list по одному в строку.
Например:
Код:
10.10.10.1
10.10.10.100
При настройке (D)DoS Deflate в дистрибутивах на базе RedHat нужно учесть такие особенности:
Задание по cron добавляется и выполняется корректно, поэтому вручную добавлять его не нужно !
После смены интервала запуска скрипта (параметр FREQ) нужно единоразово выполнить скрипт с опцией —cron (/usr/local/ddos/ddos.sh —cron), в самом скрипте для корректной работы в связи с отличием вывода команды netstat в Debian и RedHat нужно часть:
Код:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST
заменить на
Код:
netstat -ntu | grep ':' | awk '{print $5}' | sed 's/::ffff://' | cut -f1 -d ':' | sort | uniq -c | sort -nr > $BAD_IP_LIST
Параметр NO_OF_CONNECTIONS конфигурационного файла стоит определять опытным путем с учетом специфики проекта, на который осуществляется атака.
Источники:
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
Журнал "Хакер"