zoukankan      html  css  js  c++  java
  • iptables限制某个端口的连接数,限速速度,封IP段

    iptables限制某个ip或者某组ip的连接数

    测试规则如下:
    # Firewall configuration written by system-config-firewall
    # Manual customization of this file is not recommended.
    #-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEP
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]

    -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 --connlimit-mask 0 -j DROP
    -A INPUT -s 192.168.10.0/24 -j ACCEPT
    -A OUTPUT -d 192.168.10.0/24 -j ACCEPT


    -A INPUT -p icmp -j ACCEPT
    -A OUTPUT -p icmp -j ACCEPT
    -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
    -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

    -A INPUT -j DROP
    -A OUTPUT -j DROP
    COMMIT


    主要用到的模块connlimit 

    -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 --connlimit-mask 0 -j DROP  #输入的目标端口是22,也就是访问本机22端口的流量,如果连接数大于3,则DROP流量,connlimit-above这个是连接数的统计,如果大于3就满足条件,connlimit-mask这个是定义那组主机,此处跟的一个数值是网络位,子网掩码,也就是connlimit-mask 0 这个ip组的连接数大于connlimit-above 3则DROP

    -A INPUT -s 192.168.10.0/24 -j ACCEPT #允许这个段的输入流量

    -A OUTPUT -d 192.168.10.0/24 -j ACCEPT #允许这个段的输出流量


    总体描述为流量过滤端口和连接数以及网络位,如果满足第一条,则拒绝,流量不再匹配下边的规则,如果不匹配,则第二条规则会允许流量,第一条中掩吗为0,就表示所有的ip,也就是说不管什么ip,只要连接此服务器的22端口超过3个,则DROP。


    如果吧--connlimit-mask 0 这个去掉,那么connlimit-mask值默认会是32,也就是说,某个ip链接此服务器超过3个,则drop,如果又4台机器,每台机器连一个,那么它不会drop!


    也就是说connlimit-above 3这个的数量所限制的区域是由--connlimit-mask 0而定!

    --------------------------------限制速度----------------------------

    在filter下面一行增加以下两行

    -A FORWARD -m limit -d 192.168.0.2 --limit 30/sec  -j ACCEPT # 这句意思是限定每秒只转发30个到达192.168.0.2的数据包(约每秒45KB 一个数据包是1.5KB)

    -A  FORWARD -d 192.168.0.2 -j DROP #这句作用是超过限制的到达192.168.0.2的数据包不通过)

    -------------------------------封指定字符串---------------------------

    iptables -I INPUT -p tcp -m string --string "qq.com" --algo bm -j DROP
    iptables -I INPUT -p udp -m string --string "qq.com" --algo kmp -j DROP

    ------------------------------封指定IP段(使用ipset 模块)-----------------

    ipset restore<<yunnan.txt
    create yunnan hash:net family inet hashsize 1024 maxelem 65536 add yunnan 182.240.0.0/13 add yunnan 106.56.0.0/13 add yunnan 116.52.0.0/14 add yunnan 112.112.0.0/14 add yunnan 14.204.0.0/15 add yunnan 222.220.0.0/15 add yunnan 116.248.0.0/15 add yunnan 112.116.0.0/15 add yunnan 42.242.0.0/15 add yunnan 60.160.0.0/15 add yunnan 222.219.0.0/16 add yunnan 61.166.0.0/16 add yunnan 218.63.0.0/16 add yunnan 119.62.0.0/16 add yunnan 180.180.0.0/16 add yunnan 221.213.0.0/16 add yunnan 218.62.128.0/17 add yunnan 222.172.128.0/17 add yunnan 180.129.128.0/17 add yunnan 221.3.128.0/17 add yunnan 61.138.192.0/18 add yunnan 202.98.0.0/16 add yunnan 103.3.116.0/22 add yunnan 103.22.28.0/22

    iptables -A INPUT -j SET --add-set yunnan src   //动态添加IP到一个ipset中

    iptables -A INPUT -m set --match-set yunnan src -j DROP  //符合条件ipset的封锁掉

    ipset add yunnan 1.1.1.1/32  //添加

    ipset del yunnan 1.1.1.1/32  //删除

    ipset list yunnan  //显示

    链接:IPSET使用详解 https://www.jb51.net/article/127524.htm

  • 相关阅读:
    安装 Panda3D 并使用原有的Python
    Jupyter Notebook PDF输出的中文支持
    lua的文件管理
    elasticsearch-hadoop.jar, 适用于spark3,hadoop3
    shell中递归遍历指定文件夹下的文件
    JDBC的ResultSet游标转spark的DataFrame,数据类型的映射以TeraData数据库为例
    Pandas一些小技巧
    用c++后缀自动机实现最大公共字符串算法,并封装成Python库
    后缀自动机的python实现
    PYTHON调用C接口(基于Ctypes)实现stein算法最大公约数的计算
  • 原文地址:https://www.cnblogs.com/ip99/p/14898963.html
Copyright © 2011-2022 走看看