首页 > 其他 > 详细

nginx日志非法 ip处理

时间:2017-02-17 15:42:58      阅读:174      评论:0      收藏:0      [点我收藏+]
#!/bin/bash
echo "init..."
now=$(date +%T)
ago=$(date  +%T -d ‘10 min ago‘)
tail -200000 /home/work/opbin/nginx/logs/access.log |awk -F "[T+\",]" ‘{if($2>="‘${ago}‘" && $2<="‘$now‘") ++S[$4]} END {for (i in S) print i,S[i]}‘|sort -k2rn|grep -Ev ‘123.125.125.146|106.120.151.93|183.81.181.178|101.201.142.123|36.110.170.250|101.201.142.242|123.57.52.20|106.2.203.188|127.0.0.1|121.42.0|123.57.173.121|183.81.181.178|101.96.129.66‘ |while read line
do
    echo "start...."
    ip=`echo $line|awk ‘{print $1}‘`
    count=`echo $line|awk ‘{print $2}‘`
    if [ $count -ge 200 ];then
        echo $line
        echo "curl..."
        curl -s "http://ip.chinaz.com/?ip=$ip" |grep ‘span class="Whwtdhalf w50-0‘|egrep ‘阿里云|数据|IDC|机房‘
        if [ $? -eq 0 ];then
            echo ‘/sbin/iptables -A INPUT -s ‘$ip‘ -p tcp --dport 80 -j DROP‘ >> /home/work/opbin/nginx/new_ban_ip.sh
            echo "$(date +%F_%T)  $ip" >> /home/work/opbin/nginx/firewall_black.txt
            echo -e "$(date +$F_%T) /sbin/iptables -A INPUT -s ‘$ip‘ -p tcp --dport 80 -j DROP" >> /home/work/opbin/nginx/nginx_iptables.log
            for i in nginx-2 nginx-1 nginx-3
            do
                    echo "ban ip..."
                    echo -e "ssh $i /sbin/iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP" >> /home/work/opbin/nginx/nginx_iptables.log
                    ssh $i /sbin/iptables -A INPUT -s $ip -p tcp --dport 80 -j DROP
            done
        fi
    else
        echo -e "$line no ban and break" >> /home/work/opbin/nginx/nginx_iptables.log
        break;
    fi
   echo "end."
    
done


nginx日志非法 ip处理

原文:http://dihuo.blog.51cto.com/1657091/1898747

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!