概述
今天分享一個Shell腳本,主要是用來解決DDOS攻擊的簡單版。
需求
請根據web日誌或者或者網絡連接數,監控當某個IP並發連接數或者短時內PV達到100,即調用防火牆命令封掉對應的IP。
防火牆命令為:iptables-I INPUT -s IP位址 -j DROP。
練習使用日誌下載地址:https://files.cnblogs.com/files/clsn/access-web-log.zip
腳本實現
#!/bin/bash
#############################################################
# File Name: ddos_check.sh
#############################################################
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
#echo $Ip_Add
iptables -I INPUT -s $Ip_Add -j DROP
fi
done <$Info_File
腳本執行結果
./ddos_check.sh
iptables -L
覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~