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



  • 相关阅读:
    [k8s]kube-dns/dashboard排错历险记(含sa加载用法/集群搭建)
    禁用nginx的access日志
    redis info 各信息意义
    使用JProfiler进行内存分析
    lr11 BUG?Failed to send data by channels
    loadrunner 怎么能得到返回的http状态?
    SQL SERVER查看当前连接情况
    总结: Struts2 + Spring 的线程安全问题
    转发:maven打包时始终出现以下提示:-source 1.3 中不支持泛型(请使用 -source 5 或更高版本以启用泛型)
    SQL Server 索引结构及其使用(一)
  • 原文地址:https://www.cnblogs.com/Mrhuangrui/p/4610775.html
Copyright © 2011-2022 走看看