Настройка DDoS Deflate

Настройка DDoS Deflate

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Удобный инструмент для борьбы с DDoS атаками (или вернее со спам-ботами) как DDoS Deflate (который применяется тогда, когда в iptables отсутствует возможность использовать модуль connlimit).

Скорее всего это можно назвать защитой от SYN и “школьных” атак.
Скрипт использует команду «netstat» для обнаружения DDoS и флуда, после чего блокирует IP адреса вредителей с помощью iptables или apf.

Установка достаточно простая:

1
2
3
wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh

Вывод установки получится приблизительно следующий:

1
2
3
4
5
6
7
8
9
10
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

Удаление не сложнее

1
2
3
wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
chmod 0700 uninstall.ddos
./uninstall.ddos

Приступим к настройке:

Во-первых, в конфиге надо исправить количество соединений с 1 адреса (т.к. тех, кто исчерпал лимит - баним на 10 минут, лучше устанавливать не слишком маленькое значение т.к рискуем забанить офис за NAT транслятором.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
##### Paths of the script and other files
PROGDIR="/usr/local/ddos"
PROG="/usr/local/ddos/ddos.sh"
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"
CRON="/etc/cron.d/ddos.cron"
APF="/etc/apf/apf"
IPT="/sbin/iptables"

##### frequency in minutes for running the script
##### Caution: Every time this setting is changed, run the script with --cron
##### option so that the new frequency takes effect
FREQ=1

##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=64

##### APF_BAN=1 (Make sure your APF version is atleast 0.96)
##### APF_BAN=0 (Uses iptables for banning ips instead of APF)
APF_BAN=0

##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script)
##### KILL=1 (Recommended setting)
KILL=1

##### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TO="root"

##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600

Владельцам выделенных серверов может быть полезным определение некоторых парметров ядра:

1
2
3
4
5
6
7
8
/sbin/sysctl —w net.ipv4.icmp_ignore_bogus_error_responses=1
/sbin/sysctl —w net.ipv4.conf.all.log_martians=1
/sbin/sysctl —w net.ipv4.conf.all.rp_filter=1
/sbin/sysctl —w net.ipv4.conf.all.send_redirects=0
/sbin/sysctl —w net.ipv4.conf.all.accept_redirects=0
/sbin/sysctl —w net.ipv4.conf.all.accept_source_route=0
/sbin/sysctl —w net.ipv4.conf.all.mc_forwarding=0
/sbin/sysctl —w net.ipv4.icmp_echo_ignore_broadcasts=1
On this page