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



  • 相关阅读:
    SQL Server死锁总结
    dao层知识点总结
    减少数据库资源开销
    java string(2)
    java读写锁实现数据同步访问
    并发集合(转)
    JDBC在Java Web中的应用——分页查询
    jdbc分页
    jdbc如何锁定某一条数据或者表,不让别人操作?
    数据库锁机制
  • 原文地址:https://www.cnblogs.com/Mrhuangrui/p/4610775.html
Copyright © 2011-2022 走看看