abstrait:#防止ddos攻擊,將此腳本放置到定時(shí)任務(wù)中。 #!/bin/bash log='/usr/local/nginx/logs/nginx.log' #日志絕對(duì)路徑 DATE=`date -d '1 minutes ago' "+%d/%b/%
#防止ddos攻擊,將此腳本放置到定時(shí)任務(wù)中。 #!/bin/bash log='/usr/local/nginx/logs/nginx.log' #日志絕對(duì)路徑 DATE=`date -d '1 minutes ago' "+%d/%b/%Y:%H:%M"` #顯示出日志格式的時(shí)間,方便匹配,%b簡(jiǎn)短#格式時(shí)間,-d 顯示設(shè)定的時(shí)間。 tmp=`date "+%s%N"` #秒要精確化 grep "$DATE" $log|awk '{print $1}'|sort |uniq -c |sort -rn |grep -v '類似你的cdn等你允許拉取你ip addr'>/var/log/ip_${tmp}.log #收集到攻擊你的ip while read line #一次讀進(jìn)一行 (num ip) do count=`echo $line|awk '{print $1}'` ip=`echo $line|awk '{print $2}'` re=`echo $count-100|bc` if [ $re -gt 0 ];then echo `date` ": $ip has been DP" >>/var/log/iptalbes.log /sbin/iptables -I INPUT -p tcp -m tcp -s $ip --dport 80 -j DROP fi done </var/log/ip_${tmp}.log rm -f /var/log/ip_${tmp}.log