一个简单的封ip规则
生活随笔
收集整理的這篇文章主要介紹了
一个简单的封ip规则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
一個簡單通過nginx日志封ip規則(僅僅自己方便使用)
#!/bin/bash #Version:1.0 #Date:2016-08-09 #作用:防刷IP地址,解封蜘蛛,解封5天前封的IP地址function deny () { Date=$(date +"%F-%H-%M") Date2=$(date +%s) #awk '{a[$1]++};END {for(i in a) print i,a[i]}' /usr/local/nginx/logs/access.log|sort -rnk 2 | head -n 15 >/home/scripts/denyip.txt grep -v -i 'ajax' /usr/local/nginx/logs/access.log | awk '{a[$1]++};END {for(i in a) print i,a[i]}' | sort -rnk 2 | head -n 15 >/home/scripts/denyip.txt DEFINE="5000" while read IP NUM doif [ $NUM -gt $DEFINE ];thengrep -w "$IP" /home/scripts/white_list.txt > /dev/nullif [ $? != 0 ];thengrep -w "$IP" /home/scripts/black_list.txt > /dev/nullif [ $? != 0 ];then/sbin/iptables -A INPUT -p tcp --dport 80 -s $IP -j DROPecho "$Date2 $Date kill $IP" >> /home/scripts/black_list.txtfififi done</home/scripts/denyip.txt }function minute () { Date=`date +"%H:%M:%S"` Date2=`date +"%H:%M:%S" -d "$(date -d '-1minute')"` Date3=$(date +%s) Date4=$(date +"%F-%H-%M") #awk '{a[$1]++};END {for(i in a) print i,a[i]}' /usr/local/data/nginx/logs/access.log|sort -rnk 2 | head -n 15 >>/home/scripts/denyip.txt sed -n "/$Date2/,/$Date/p" /usr/local/data/nginx/logs/access.log | grep -v 'jQuery' | awk '{a[$1]++};END {for(i in a) print i,a[i]}' |sort -rnk 2 |head -n 15 >/home/scripts/minuteip.txtDEFINE="60" while read IP NUM doif [ $NUM -gt $DEFINE ];thengrep -w "$IP" /home/scripts/white_list.txt > /dev/nullif [ $? != 0 ];thengrep -w "$IP" /home/scripts/black_list.txt > /dev/null || grep -w "$IP" /home/scripts/minute_black_list.txt > /dev/nullif [ $? != 0 ];then/sbin/iptables -A INPUT -p tcp --dport 80 -s $IP -j DROPecho "$Date3 $Date4 kill $IP" >> /home/scripts/minute_black_list.txtfififi done</home/scripts/minuteip.txt }function unlock () { UNLOCK_DAY=`date +%s -d '-5 days'` while read A B C D doif [ $A -lt $UNLOCK_DAY ]then sed -n "/$D/p" /home/scripts/black_list.txt >> /home/scripts/black_list_long_time.txt/sbin/iptables -D INPUT -p tcp --dport 80 -s $D -j DROPsed -i "/$D/d" /home/scripts/black_list.txtfi done</home/scripts/black_list.txt }function spider () { #/sbin/service iptables status > /home/scripts/iptables_list.txt #sleep 5 #IP_LIST=`grep "DROP" /home/scripts/iptables_list.txt | awk '{print $5}'` IP_LIST=`awk '{print $NF}' /home/scripts/black_list.txt` for i in $IP_LIST donslookup $i | grep -E "msn|googlebot|baiduspider|yahoo"if [ `echo $?` -eq 0 ]thenecho $i >> /home/scripts/white_list.txt/sbin/iptables -D INPUT -p tcp --dport 80 -s $i -j DROPsed -i "/$i/d" /home/scripts/black_list.txtfi done MINUTE_IP_LIST=`awk '{print $NF}' /home/scripts/minute_black_list.txt` for i in $MINUTE_IP_LIST donslookup $i | grep -E "msn|googlebot|baiduspider|sogouspider"if [ `echo $?` -eq 0 ]then echo $i >> /home/scripts/white_list.txt/sbin/iptables -D INPUT -p tcp --dport 80 -s $i -j DROPsed -i "/$i/d" /home/scripts/minute_black_list.txt fi done }function help () {echo -e "\033[31mUsage: \033[32m$0 deny|minute|unlock|spider|help\033[0m" }case $1 in deny)deny;; unlock)unlock;; spider)spider;; help)help;; *)echo -e "\033[31mUsage: \033[32m$0 deny|minute|unlock|spider|help\033[0m";; esac?
?
轉載于:https://my.oschina.net/2726276586/blog/792464
總結
以上是生活随笔為你收集整理的一个简单的封ip规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dede 删除文档同时文章中的图片的方法
- 下一篇: 《驯狮记——Mac OS X 10.8