zoukankan      html  css  js  c++  java
  • Shell脚本解决DDOS安全Linux服务器生产案例

    根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔3分钟
    本地日志

    #!/bin/bash
    ##############################################################
    # Version: V1.0
    ##############################################################
    while true
    do
        awk '{S[$1]++}END{for(k in S) print S[k],k}' access_2010-12-8.log|sort -rn|head >/tmp/ip.log
        while read line
        do
            ip=`echo $line|awk '{print $2}'`
            count=`echo $line|awk '{print $1}'`
            if [ $count -ge 36 -a `grep -w "$ip" /tmp/drop_$(date +%F).ip|wc -l` -lt 1 ]
            then
                iptables -I INPUT -s $ip -j DROP &&
                echo -e "$ip	 `date +%F`" >>/tmp/drop_$(date +%F).ip
            fi
        done</tmp/ip.log
        sleep 5
    done

    (二)如果是网络日志:

    注意:netstat.log是生产中访问的日志

    #!/bin/bash
    ##############################################################
    # Version: V1.0
    ##############################################################
    while true
    do
        awk -F "[ :]+" '/EST.*$/{print $(NF-3)}' netstat.log |awk '{S[$1]++}END{for(k in S)print S[k],k}'|sort -rn|head >/tmp/ip.log
        while read line
        do
            ip=`echo $line|awk '{print $2}'`
            count=`echo $line|awk '{print $1}'`
            if [ $count -ge 36 -a `grep -w "$ip" /tmp/drop_$(date +%F).ip|wc -l` -lt 1 ]
            then
                iptables -I INPUT -s $ip -j DROP &&
                echo -e "$ip	 `date +%F`" >>/tmp/drop_$(date +%F).ip
            fi
        done</tmp/ip.log
        sleep 5
    done
    
  • 相关阅读:
    Celery的使用
    python中使用redis
    Redis基础
    版本控制器git
    day 74作业
    Djangorestfromwork作业1
    Django rest-framework的jwt认证
    Django --form验证
    cx-oracle-------------------安装
    排序算法
  • 原文地址:https://www.cnblogs.com/huanglingfa/p/13803871.html
Copyright © 2011-2022 走看看