Коротко о сабже
Мелкие DDoS атаки довольно часты и имеют большую силу. Из-за них в 70% случаях "ложатся" даже проекты под защитой. Но если пакеты прорываются, то их можно спокойно заблокировать с помощью утилиты, называемой DDoS Deflate. Утилита блокирует соединения, превысившие определенный порог коннектов к серверу. Как мы знаем, чаще всего DDoS именно и состоит из таких мелких коннектов, часто забивающих канал связи - этот тип атаки называется Flood (флуд). Флудить злоумышленник будет недолго, но и этот мелкий флуд выбьет из колеи любое ваше приложение в считанные минуты, если не секунды.
Как все настроить
Установка происходит очень просто.
Первым делом скачиваем из-под root дистрибутив.
wget https://github.com/jgmdev/ddos-deflate/archive/master.zip unzip master.zip cd ddos-deflate-master ./install.sh
Если не установлен пакет ''zip'', устанавливаем его и пакет ''unzip'' командой apt-get install zip unzip -y. В системе CentOS вместо ''apt'' используется ''yum''.
"Белые" доверенные хосты располагаются в файле /etc/ddos/ignore.host.list. IP-адреса лежат в файле /etc/ddos/ignore.ip.list. Для точной работы нужно отредактировать файл /etc/ddos/ddos.conf вашим любимым редактором, мы используем редактор ''nano''.
nano /etc/ddos/ddos.conf
Делаем все вот таким образом:
# Paths of the script and other files PROGDIR="/usr/local/ddos" SBINDIR="/usr/local/sbin" PROG="$PROGDIR/ddos.sh" IGNORE_IP_LIST="ignore.ip.list" IGNORE_HOST_LIST="ignore.host.list" CRON="/etc/cron.d/ddos" # Make sure your APF version is atleast 0.96 APF="/usr/sbin/apf" CSF="/usr/sbin/csf" IPF="/sbin/ipfw" IPT="/sbin/iptables" # frequency in minutes for running the script as a cron job # Caution: Every time this setting is changed, run the script with --cron # option so that the new frequency takes effect FREQ=1 # frequency in seconds when running as a daemon DAEMON_FREQ=5 # How many connections define a bad IP? Indicate that below. NO_OF_CONNECTIONS=30 # The firewall to use for blocking/unblocking, valid values are: # auto, apf, csf, ipfw, and iptables FIREWALL="auto" # An email is sent to the following address when an IP is banned. # Blank would suppress sending of mails EMAIL_TO="mihail@vps4me.host" # Number of seconds the banned ip should remain in blacklist. BAN_PERIOD=600 # Connection states to block. See: man netstat CONN_STATES="ESTABLISHED|SYN_SENT|SYN_RECV|FIN_WAIT1|FIN_WAIT2|TIME_WAIT|CLOSE_WAIT|LAST_ACK|CLOSING" # Only check on the incoming connections to test which to ban (currently only filters ipv4, ipv6 are still check # on outgoing and incoming connections) ONLY_INCOMING=false # The external ipv4 address. Used to rewrite the 0.0.0.0 address to the HOST_IP. Any incoming connections # on a 0.0.0.0 socket is shown as connected to the external interface. If you have only one internet connection, # enter your machine's ip here. HOST_IP="0.0.0.0"
30 коннектов - весьма условная величина, вы можете поиграться с ней.
После изменения файла нужно перезапустить сервис командой service ddos restart или systemctl ddos restart в зависимости от операционной системы.