zoukankan      html  css  js  c++  java
  • 脚本自动封掉并发数过高的 IP

    防止扫描器对服务器恶意扫描,可以对 iptables 规则做了比较严格的配置。

    以下配置可作为参考:

    #lo
    -A INPUT -i lo -j ACCEPT
    -A OUTPUT -o lo -j ACCEPT
    #Established
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    #http/https
    -A INPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
    -A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
    #ssh
    -A INPUT -p tcp --dport [sshport] -m state --state NEW,ESTABLISHED -j ACCEPT
    -A OUTPUT -p tcp --sport [sshport] -m state --state ESTABLISHED -j ACCEPT
    #manage
    -A INPUT -p tcp --dport [manageport] -j ACCEPT
    -A OUTPUT -p tcp --dport [manageport] -j ACCEPT
    #anti-ddos
    -A INPUT -p tcp --dport 80 -m limit --limit 200/minute --limit-burst 2000 -j ACCEPT
    #protect-port
    -A FORWARD -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
    #max-conn
    -A INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 60 --connlimit-mask 32 -j REJECT --      reject-with icmp-port-unreachable
    #log
    -A INPUT -m limit --limit 40/min -j LOG --log-prefix "iptables denied: " --log-level 7
    -A OUTPUT -m limit --limit 40/min -j LOG --log-prefix "iptables denied: " --log-level 7
    #default
    -A INPUT -j DROP
    -A OUTPUT -j DROP
    -A FORWARD -j DROP

    需要自动将并发数高的IP屏蔽使用以下代码:

    #!/bin/sh
    status=`netstat -na|awk '$5 ~ /[0-9]+:[0-9]+/ {print $5}' |awk -F ":" -- '{print $1}' |sort -n|uniq -c |sort -n|tail -n 1`
    NUM=`echo $status|awk '{print $1}'`
    IP=`echo $status|awk '{print $2}'`
    result=`echo "$NUM > 60" | bc`
    if [ $result = 1 -a $IP != "54.68.xxx.xxx" ]
    then
      echo IP:$IP is over $NUM, BANNED!  $(date "+%x %r") >> bannedIP.txt
      /sbin/iptables -I INPUT -s $IP -j DROP
    fi
    iptables Code

    备注:

    要封停一个 IP,使用下面这条命令:
    #iptables -I INPUT -s ***.***.***.*** -j DROP
    要解封一个 IP,使用下面这条命令:
    #iptables -D INPUT -s ***.***.***.*** -j DROP

    如果要想清空封掉的 IP 地址,可以输入:
    #iptables --flush
    添加 IP 段到封停列表中,使用下面的命令:
    #iptables -I INPUT -s 121.0.0.0/8 -j DROP



  • 相关阅读:
    Python动态展示遗传算法求解TSP旅行商问题
    MOEAD算法中均匀权向量的实现---Python
    HDU 5294 多校第一场1007题 最短路+最小割
    POJ 3261 Milk Patterns sa+二分
    HDU 4292 FOOD 2012 ACM/ICPC Asia Regional Chengdu Online
    CodeForces 201A Clear Symmetry
    POJ 1679 The Unique MST 确定MST是否唯一
    POJ 3268 Silver Cow Party 最短路 基础题
    POJ 2139 SIx Degrees of Cowvin Bacon 最短路 水題
    POJ2229 Sumsets 基礎DP
  • 原文地址:https://www.cnblogs.com/Mrhuangrui/p/4610775.html
Copyright © 2011-2022 走看看