[root@linux-node1 ~]# cat fw.sh
#!/bin/bash
cat /var/log/nginx/access.log|awk -F ":" '{print $1}'|sort|uniq -c|sort -rn|head -10|grep -v "127.0"|awk '{if ($2!=null && $1>4) {print $2}}'>/tmp/dropip
for i in $(cat /tmp/dropip)
do
/sbin/iptables -A INPUT -p tcp --dport 80 -s $i -j DROP
echo "$i kill at date">>/var/log/ddos
done
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了寶清免費(fèi)建站歡迎大家使用!
腳本注解:
先查看日志文件,awk過濾出第一列IP,并進(jìn)行排序,去重,然后反向排序,過濾出IP最多的前10個(gè),排除127.0這個(gè)IP,然后再過濾出第二列不為空且IP數(shù)量大于4個(gè)的ip,并打印IP輸出到/tmp/dropip文件中。
循環(huán)文件/tmp/dropip
封掉/tmp/dropip里面的ip地址的80端口
將此次事件寫入/var/log/ddos日志里面,并再次循環(huán)。