查看攻击IP
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
解决方法:使用DDoS deflate+iptables
DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。
安装DDoS deflate
wget http://www.inetbase.com/scripts/ddos/install.sh #下载 chmod 0700 install.sh #添加权限 ./install.sh #执行安装
配置DDoS deflate
vim /usr/local/ddos/ddos.conf
将配置中APF_BAN=1 改为0保存。
注释:
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" //IP地址白名单
CRON="/etc/cron.d/ddos.cron" //定时执行程序
FREQ=1 //检查时间间隔,默认1分钟
NO_OF_CONNECTIONS=150 //最大连接数,超过就会被屏蔽,默认。
APF_BAN=1 //使用APF还是iptables,使用iptables,将APF_BAN的值改为0。
KILL=1 //是否屏蔽IP,默认。
EMAIL_TO="root" //当IP被屏蔽时给指定邮箱发送邮件,修改为自己邮箱或默认。
BAN_PERIOD=600 //禁用IP时间,默认600秒。
修改/usr/local/ddos/ddos.sh
vim /usr/local/ddos/ddos.sh
#注释掉第117行:#netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr > $BAD_IP_LIST
#下面新增一行,保存
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sed -n '/[0-9]/p' | sort | uniq -c | sort -nr > $BAD_IP_LIST
注释:
awk '{print NR $0}' NR为行号 $0为打印全部
cut -d 截取字符 -f 第几段
sed -n '[0-9]/p' 打印纯数字匹配行(不包含点号)
sort -n数字排序正序 -nr 数字排序倒序
iptables防火墙安装与配置
yum install iptables-services
将规则写入iptables配置文件
vim /etc/sysconfig/iptables
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
重启iptables防火墙和加入开机启动服务
systemctl restart iptables.service systemctl enable iptables.service
确认iptables服务状态
service iptables status
DDos命令选项
/usr/local/ddos/ddos.sh -h //查看选项 /usr/local/ddos/ddos.sh -k n //杀掉连接数大于n的连接。n默认为配置文件的NO_OF_CONNECTIONS /usr/local/ddos/ddos.sh -c //按照配置文件创建一个执行计划
DDoS deflate卸载(不再使用该脚本时可以通过以下方式卸载)
wget http://www.inetbase.com/scripts/ddos/uninstall.ddos chmod 0700 uninstall.ddos ./uninstall.ddos