Установка (D)DoS Deflate на Debian/Ubuntu
Есть много мануалов о том, как установить (DDoS Deflate на сервер с Linux (или VPS) и в большинстве случаев не должно быть с этим проблем, но я столкнулся некоторые небольшие проблемы с установкой (D) DoS Deflate на Debian 7/8 по этому, я хотел выложить статью «Установка (D)DoS Deflate на Debian/Ubuntu» по установке (D)DoS Deflate на Debian/Ubuntu на готовых примерах. Я думаю, данное руководство также будет работать на Ubuntu.
Установка (D)DoS Deflate на Debian/Ubuntu
И так, для начала перейдем в нужную папку и создадим новый каталог для проекта:
# cd /usr/local/src/ && sudo mkdir ddos && cd ddos
Скачиваем скрипт:
# wget http://www.inetbase.com/scripts/ddos/install.sh
Запускаем установочный скрипт:
# sh install.sh
Настройка (D)DoS Deflate на Debian/Ubuntu
Когда установка будет выполнена, вы увидите что-то вроде этого:
Installing DOS-Deflate 0.6 Downloading source files.........done Creating cron to run script every minute.....(Default setting).....done Installation has completed. Config file is at /usr/local/ddos/ddos.conf Please send in your comments and/or suggestions to zaf@vsnl.com
Сейчас приступаем к редактированию файла конфигурации, настройте в зависимости с вашими требованиями:
# vim /usr/local/ddos/ddos.conf
Я рекомендую ничего не править в данном конфиге. Выставляем количество соединений с 1 IP-адреса (после того как кто-то «потратил» лимит будет забанен на 10 минут, лучше выставить немалое значение, т.к вы рескуете быть забаненым за NAT транслятором (ipv6 ещё не пришол!):
NO_OF_CONNECTIONS=64
Включим бан через iptables, а не по APF:
APF_BAN=0
Идем далее, и следующим шагом будет настройка крон. Т.к я не особо люблю разные cron-файлы в папке /etc/cron.d/, то буду использовать свой личный кронтаб, а файл /etc/cron.d/ddos.cron я удалю:
crontab -e */1 * * * * nice -n -5 /usr/local/ddos/ddos.sh
В этой строчке, я увеличиваю приоритет процесса для DDoS Deflate, чтобы когда система загибается от множества коннектов скрипт отработал и забанил кого надо, а у кого истекло время штрафа — разбанил.
По необходимости, вы можете установить APF, если не знаете как, вот руководство:
Установка APF (Advanced Policy Firewall) в Unix/Linux
Вы также можете внести в белый список IP-адрес вашего сервера:
# vim /usr/local/ddos/ignore.ip.list
Теперь пришло время запускать (D) DoS Deflate:
# /usr/local/ddos/ddos.sh -c
К сожалению, я получил это:
/usr/local/ddos/ddos.sh: 13: [: /usr/local/ddos/ddos.conf: unexpected operator DDoS-Deflate version 0.6 Copyright (C) 2005, Zaf <zaf@vsnl.com> $CONF not found.
Для исправления, отредактируйте ddos.sh:
# vim /usr/local/ddos/ddos.sh
Нужно изменить первую строку файла с:
# !/bin/sh
на
# !/bin/bash
Сохранить и закройте ddos.sh.
Запустите службу снова:
# /usr/local/ddos/ddos.sh -c
Если вы получаете сообщение об ошибке:
crond: unrecognized service Failed to restart crond.service: Unit crond.service failed to load: No such file or directory. Failed to restart crond.service: Unit crond.service failed to load: No such file or directory.
Открываем ddos.sh снова:
# vim /usr/local/ddos/ddos.sh
Находим “add to cron” часть и измените службу:
service crond restart
на
service cron restart
(Я нашел два экземпляра, которые должны быть изменены).
Сохраните и выйдите с текстового редактора, после чего снова запустить службу:
# /usr/local/ddos/ddos.sh -c
Если вы все сделали правильно, вы должны увидеть следующее сообщение:
[ ok ] Restarting periodic command scheduler: cron [....] Stopping periodic command scheduler: cron.
Все сделали!
Примечание: Я читал в нескольких форумах и блога на которых есть ошибка с (Д) DoS-Deflate версии 6.0 и исправить ее можно следующим образом, необходимо открыть /usr/local/ddos/ddos.sh и заменить:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
на
netstat -ntu | grep ':' | awk '{print $5}' | sed 's/::ffff://' | cut -f1 -d ':' | 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
У меня не было возможности протестировать так как все работало и без этого. На этом у меня все и моя статья «Установка (D)DoS Deflate на Debian/Ubuntu» завершена.