网站受到DDOS的攻击,Inbound最高请求58.85Mb/sec 。尽管一开始解决问题的思路是错误的,但是在这个过程中,我们思考问题的思路对团队的成长有所帮助,我们知道什么方法无法解决问题。解决问题的过程分为3个阶段:
1:nginx端屏蔽访问
修改nginx配置文件,添加如下记录
location ~ /\/you_url {
return 404;
}
问题:发现请求堵塞在haproxy上面去了
2:修改haproxy的配置
acl invalid_req url_sub -i c=220
block if invalid_req
问题:依然不能解决haproxy堵塞的问题
3:在haproxy机器上禁止IP访问。
在nginx下找到IP最多的几个IP,到/data/management/logs中去执行
得到访问最多的IP列表
通过vim的列编辑功能,限制这些ip的访问。(300个是可以继续加大的,看最后一行的最小值)
iptables -I INPUT -s 218.66.51.197 -j DROP
iptables -I INPUT -s 183.205.228.248 -j DROP
iptables -I INPUT -s 59.39.181.217 -j DROP
iptables -I INPUT -s 218.76.255.3 -j DROP
iptables -I INPUT -s 110.81.116.67 -j DROP
iptables -I INPUT -s 220.178.35.226 -j DROP
iptables -I INPUT -s 218.207.198.17 -j DROP
iptables -I INPUT -s 61.175.231.96 -j DROP
iptables -I INPUT -s 221.193.244.115 -j DROP
iptables -I INPUT -s 171.36.103.115 -j DROP
解封1:
iptables -L INPUT
iptables -L -line-numbers 然后 iptable -D INPUT 序号
解封2:
iptables -F 来清空,(比较危险)
iptables -D INPUT 数字
4:网上防止DDOS攻击的方法(我们的思路是错误的,这个脚本的思路才是王道)
正确的思路是查找Haproxy机器的所有连接IP数,然后查找IP数大于某个值的IP,在防火墙层面静止这些IP访问。
安装
wget http://www.inetbase.com/scripts/ddos/install.sh
chmod +x install.sh
./install.sh
卸载
wget http://www.inetbase.com/scripts/ddos/uninstall.sh
chmod +x uninstall.sh
./uninstall.sh
具体使用可以去自行研究,可以把里面的脚本挪出来,简单粗暴的防止DDOS!