DDoS-Deflate是一款非常小巧的防御和减轻DDoS攻击的工具,它可以通过监测netstat来跟踪来创建大量互联网连接的IP地址信息,通过IPTABLES禁止或阻档这些非常IP地址。

必须在root权限下的终端账户里下载和安装,具体命令如下:

wget https://github.com/jgmdev/ddos-deflate/archive/master.zip
unzip master.zip
cd ddos-deflate-master
./install.sh

同样是root权限账户下执行如下命令来卸载 DDoS Deflate 。

cd ddos-deflate-master
./uninstall.sh

DDoS Deflate 的使用

安装程序会自动检测系统是否支持 init.d 脚本,当支持的话将安装文件和启动脚本的 DDoS apropiate 。在初始化的情况。 DDoS Deflate 开始作为一个守护进程,它监测间隔设置为5秒默认。

[root@youxi1 ddos-deflate-master]# vim /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"  //IP地址白名单列表
IGNORE_HOST_LIST="ignore.host.list"  //主机白名单列表
CRON="/etc/cron.d/ddos"  //计划任务文件地址
//防火墙命令地址
APF="/usr/sbin/apf"
CSF="/usr/sbin/csf"
IPF="/sbin/ipfw"
IPT="/sbin/iptables"
IPT6="/sbin/ip6tables"
TC="/sbin/tc"
//第22行,检查DDos时间间隔,默认1分钟
FREQ=1
//第25行,作为一个守护进程时,运行的频率,单位秒
DAEMON_FREQ=5
//第28行,最大连接数,超过该数值后IP就会被禁止,一般默认即可
NO_OF_CONNECTIONS=150
//第33行,为true时仅统计接入连接,会比统计in/out更慢禁止
ONLY_INCOMING=false
//第38行,为true时脚本将会使用tcpdump扫描由CloudFlare服务器发送的CF-Connecting-IP头标签,
//并且禁止使用iptables字符串匹配模块
ENABLE_CLOUDFLARE=false
//第43行,为true时启用PORT_CONNECTIONS,与ONLY_INCOMING相同,但更慢
ENABLE_PORTS=false
//第54行,端口连接检测,为每个端口分配监听规则,格式为“端口(或端口端):最大连接数:禁用时间(单位秒)”
PORT_CONNECTIONS="80:150:600 443:150:600 20-21:150:600"
//第58行,使用的防火墙,包括:auto, apf, csf, ipfw, and iptables
FIREWALL="auto"
//第62行,当ip被屏蔽是给指定邮箱发送邮件
EMAIL_TO="root"
//第65行,IP禁止时间,单位秒
BAN_PERIOD=600
//第71行,要阻止的连接状态,状态之间使用冒号分隔,例如:established:syn-sent:syn-recv:fin-wait-1:fin-wait-2
//该例默认情况下,会阻止监听和关闭之外的所有状态,状态详见:man ss
CONN_STATES="connected"
//第74行,当使用netstat时要阻止的连接状态,状态详见:man netstat。那理论上,上面是使用ss时阻止的连接状态?
CONN_STATES_NS="ESTABLISHED|SYN_SENT|SYN_RECV|FIN_WAIT1|FIN_WAIT2|TIME_WAIT|CLOSE_WAIT|LAST_ACK|CLOSING"
//第78行,是否监控每个ip使用的带宽,超过时降低速率(需要iftop和tc命令)
BANDWIDTH_CONTROL=false
//第82行,触发降速的带宽速率,目前支持kbit和mbit
BANDWIDTH_CONTROL_LIMIT="1896kbit"
//第87行,触发降速时,会在指定时间周期内,速率上限
BANDWIDTH_DROP_RATE="512kbit"
//第91行,降速的时间周期,单位秒,即600秒内会有速率上限
BANDWIDTH_DROP_PERIOD=600
//第95行,如果为true时,仅考虑从客户端接收的数据,而不考虑服务器发给客户端的数据
BANDWIDTH_ONLY_INCOMING=true

注意:在配置文件中,ENABLE\_PORTS(第43行)参数开启时,PORT\_CONNECTIONS(第54行)才能使用;BANDWIDTH\_CONTROL(第78行)参数开启时,BANDWIDTH\_CONTROL\_LIMIT(第82行)、BANDWIDTH\_DROP\_RATE(第87行)、BANDWIDTH\_DROP\_PERIOD(第91行)、BANDWIDTH\_ONLY_INCOMING(第95行)才能使用。

查看定时crond执行任务:/usr/local/ddos/ddos.sh

# crontab -l

加入开机任务:

# chkconfig ddos on

DDOS命令

# ddos

DDoS-Deflate version 1.3
Copyright (C) 2005, Zaf <zaf@vsnl.com>

Usage: ddos [OPTIONS] [N]
N : number of tcp/udp connections (default 50)

OPTIONS:
-h      | --help: Show this help screen
-c      | --cron: Create cron job to run this script regularly (default 1 mins)
-i      | --ignore-list: List whitelisted ip addresses
-b      | --bans-list: List currently banned ip addresses.
-u      | --unban: Unbans a given ip address.
-d      | --start: Initialize a daemon to monitor connections
-s      | --stop: Stop the daemon
-t      | --status: Show status of daemon and pid if currently running
-v[4|6] | --view [4|6]: Display active connections to the server
-y[4|6] | --view-port [4|6]: Display active connections to the server including the port
-f      | --traffic-list: List bandwidth control rules.
-p      | --ports: List port blocking rules.
-k      | --kill: Block all ip addresses making more than N connections