需求:請根據web日誌或者或者網路連接數,監控當某個IP併發連接數或者短時內PV達到100,即調用防火牆命令封掉對應的IP。 防火牆命令為:iptables-I INPUT -s IP地址 -j DROP。 腳本實現 #!/bin/bash Info_File=/tmp/ddos_check.log ...
需求:請根據web日誌或者或者網路連接數,監控當某個IP併發連接數或者短時內PV達到100,即調用防火牆命令封掉對應的IP。
防火牆命令為:iptables-I INPUT -s IP地址 -j DROP。
腳本實現
#!/bin/bash Info_File=/tmp/ddos_check.log #從連接數獲取 #netstat -lant|awk -F "[ :]+" '/180:80/{clsn[$6]++}END{for(pol in clsn)print pol,clsn[pol]}' >$Info_File # 從日誌獲取 awk '{hotel[$1]++}END{for(pol in hotel)print pol,hotel[pol]}' access.log | sort -nk2 -r >$Info_File while read line do Ip_Add=`echo $line |awk '{print $1}'` Access=`echo $line |awk '{print $2}'` if [ $Access -ge 10000 ]; then iptables -I INPUT -s $Ip_Add -j DROP elif [ $Access -le 5000 ]; then echo "小於5000" else echo "大於5000小於10000" fi done <$Info_File