今天分享一個(gè)Shell腳本,主要是用來解決DDoS攻擊的簡(jiǎn)單版。
需求
請(qǐng)根據(jù)web日志或者或者網(wǎng)絡(luò)連接數(shù),監(jiān)控當(dāng)某個(gè)IP并發(fā)連接數(shù)或者短時(shí)內(nèi)PV達(dá)到100,即調(diào)用防火墻命令封掉對(duì)應(yīng)的IP。
防火墻命令為:iptables-I INPUT -s IP地址 -j DROP。
練習(xí)使用日志下載地址:https://files.cnblogs.com/files/clsn/access-web-log.zip
腳本實(shí)現(xiàn)
#!/bin/bash ############################################################# # File Name: ddos_check.sh ############################################################# ? Info_File=/tmp/ddos_check.log ? #從連接數(shù)獲取 #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 #echo $Ip_Add iptables -I INPUT -s $Ip_Add -j DROP fi done <$Info_File
腳本執(zhí)行結(jié)果
./ddos_check.sh iptables -L