本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
我本人只是做程序开发的,只会一些基础的linux命令和处理,所以在网上找到了不少方案并且尝试 ,最终限制了本次的流量攻击。现总结起来,供各位参考。
如有不对,请指出,大家一起进步!
- 首先,我们需要统计一下ip连接数,找到请求过多的ip,然后将其进行封禁,查看请求ip代码如下:
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
- 封禁代码如下(把127.0.0.1换成你要禁封的ip):
iptables -I INPUT -s 127.0.0.1 -j DROP
- 还有可能我们会将正常访问的ip给禁封掉了,如果造成误封,可以使用下面这段代码进行解封:
iptables -D INPUT -s 127.0.0.1 -j DROP
- 网上很多教程到了这一步就结束了,需要强调的是:如果你关闭了ssh连接,他会立刻失效,这里我们是需要将其进行保存的,保存代码如下:
service iptables save
- 保存完后,将防火墙重启(这里我看网上说要多操作几次这个步骤,我每次都会保存两三次,具体你们自己试验一下)
service iptables restart
- 除了禁封以外,我们还需要设置单个ip的最大并发数,这样也能有效防止ip的并发流量攻击,设置代码如下:
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j REJECT
做到这一步之后,我这边观察来看,网站的访问速度和ip连接数就都下来了,后续再有情况,继续记录!
总结
一共有以下几个步骤:
- 查看ip请求数最多的,把它抓出来
- 找到它后直接对它进行禁封(这里是属于正常流量还是恶意攻击需要自己去判断了)
- 这个是一个保险操作,误封的回退操作
- 设置ip并发数
- 将以上操作保存,切记,一定要保存,不然会失效
- 重新启动防火墙