工作中shell脚本:iptables自动封查IP_java

iptables工作流程:

iptables是采用数据包过滤机制工作的,所以它会对请求的数据包的包头数据进行分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机。

[root@k8s-node1 ~]# more nginx_ip.sh 

#!/bin/bash

. /etc/init.d/functions

conut=100 

Path=/usr/local/nginx/logs/access.log

function ipt(){ 

    awk  '{print $1}'$Path|sort|uniq -c|sort -rn >/tmp/tmp.log 

    exec < /tmp/tmp.log

    while read line

    do

        ip=echo $line|awk '{print $2}'

        if [ echo $line|awk '{print $1}' -ge $conut -a iptables -L -n|grep "$ip"|wc -l -lt 1 ]

        then

            iptables -I INPUT -s $ip -j DROP

            RETVAL=$?

            if [ $RETVAL -eq 0 ]

            then

                action "iptables -I INPUT -s $ip -j DROP" /bin/true

                echo "$ip" >>/tmp/ip_$(date +%F).log

            else

                action "iptables -I INPUT -s $ip -j DROP" /bin/false

            fi

        fi

    done

}


function del(){

[ -f /tmp/ip_$(date +%F -d '-1 day').log ]||{

    echo "log is not exist"

    exit 1} 

    exec </tmp/ip_$(date +%F -d '-1 day').log

    while read line

    do

        if [ iptables -L -n|grep "$line"|wc -l -ge 1 ]

        then

            iptables -D INPUT -s $line -j DROP

        fi

    done

}


function main(){

    flag=0

    while true

    do

        sleep 180

        ((falg++))

        ipt

        [ $flag -ge 480 ] && del && flag=0

    done

}

main

更好的方法:nginx+lua拦截IP,或者搭建软件防火强的方法。

----------------------end---------------------

推荐阅读: