• 5.iptables的匹配条件(二)


    iprange模块

    指定一段连续的IP地址范围,可以使用iprange扩展模块。
    --src-range:匹配报文的源地址所在范围
    --dst-range:匹配报文的目的地址所在范围


    表示如果报文的源IP地址如果在10.10.10.16到10.10.10.18之间,则丢弃报文;IP段的始末IP使用横杠“-”连接

    string模块

    使用string扩展模块,可以指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件。
    比如,如果报文中包含“hello world”,我们就丢弃当前报文

    首先,我们在IP为10.10.10.16的主机上启动httpd服务,然后编写两个主页内容分别为“hello world”、“1111”,没有配置任何规则时,15主机可以正常访问16主机上的这个两个页面。

    那么,我们想要达到的目的是,如果报文中包含“hello world”字符,我们就拒绝报文进入主机,所以,我们可以在15主机上进行设置:

    上图中,-m string表示使用string模块
    --algo bm表示使用bm算法去匹配指定的字符串;必选项
    --string "hello world" 表示我们想要匹配的字符串

    time模块

    可以使用time扩展模块,根据时间段匹配报文,如果报文到达的时间在指定的时间范围内,则符合条件。

    比如,晚上8点到早上6点不能使用ssh连接当前服务器,可以这样设置:

    使用ssh连接,显然是拒绝的:

    -m time 表示使用time扩展模块
    --timestart 选项指定起始时间
    --timestop 选项指定结束时间

    如果想要只是周六日不能远程ssh连接服务器,
    可以使用--weekdays选项指定每个星期的具体哪一天,可以同时指定多个,用逗号隔开

    --monthdays选项具体指定每个月的哪一天
    例如,设置每月的18号,22号

    当一条规则同时存在多个条件时,多个条件之间默认存在“与”的关系,所以可以同时使用--weekdays选项和--monthdays,表示指定每个月的第几个星期。

    connlimit模块

    connlimit模块可以限制每个IP地址同时链接到server端的链接数量,不指定IP,其默认就是针对每个客户端IP,即对单个IP的并发连接数限制。

    比如,想要限制每个IP地址最多使用两个SSH连接到本地,可以如下设置:

    -m connlimit 指定使用connlimit扩展模块
    --connlimit-above 2 表示限制每个IP的连接数量上限为2

    --connlimit-mask选项,限制某类网段的连接数量

    --connlimit-mask 24 表示某个C类网段;24为255.255.255.0
    使用--connlimit-mask选项后,可以针对“某类IP段内的一定数量的IP”进行连接数量的限制。

    limit模块

    limit模块是对“报文到达速率”进行限制;限制单位时间内流入的包的数据。

    例如,限制每秒中最多流入3个包,或则限制每分钟最多流入30个包

    限制外部主机对本机进行ping操作时,每秒最6秒最多放行一个ping包,可以进行如下设置:

    第一条规则表示每分钟最多放行10个icmp包,也就是每6秒放行一个,第6秒的icmp包会被上例的第一条规则匹配到,第6秒之前的包则不会被第一条规则匹配到,于是被后面的拒绝规则匹配到了。
    使用ping测试

    为什么前5个ping包没有受到限制?

    这是因为--limit-burst模块,指定“空闲时可放行的包的数量”,默认值为5,才会出现刚才的问题,前5个ping包没有受到任何速率的限制,之后的包才受到了规则的限制。


    命令总结

    # iprange
    --src-range # 匹配报文的源地址所在范围
    --dst-range # 匹配报文的目的地址所在范围
    
    # string
    --string "hello" # 表示想要匹配的字符串
    --algo bm # 表示使用bm算法去匹配指定的字符串,必选项,可用算法:bm、kmp
    
    # time
    --timestart # 指定起始时间,不可取反
    --timestop  # 指定结束时间,不可取反
    --weekdays  # 指定每个星期的具体哪一天,可取反
    --monthdays # 指定每个月的哪一天,可取反
    --datestart # 指定日期范围的开始时间,不可取反
    --datestop  # 指定日期范围的结束时间,不可取反
    
    # connlimit
    --connlimit-above # 限制每个IP的连接数量上限
    --connlimit-mask  # 限制某网段的连接数量
    
    # limit
    --limit # 限制单位时间内流入的包的数据
    --limit-burst # 指定空闲时可放行的包的数量
    
    
    作者:ccku
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    本地连接显示受限制,无法连接网络
    【Vegas原创】服务器可以上网,客户端获取DHCP后,无法上网的问题解决
    【Vegas原创】AD中域用户密码策略不生效的解决方案
    【Vegas原创】网页中英文自动/手动切换方法
    【Vegas原创】XP的administrator用户被停用的解决方法
    【Vegas原创】“光驱无法访问,函数不正确”解决方法
    去除flash边框虚框的方法代码
    【Vegas原创】远程桌面下重启xp系统的命令
    ORA00054: 资源正忙, 但指定以 NOWAIT 方式获取资源 解决方法
    【Vegas原创】BugFree删除项目的方法
  • 原文地址:https://www.cnblogs.com/ccku/p/13687813.html
Copyright © 2020-2023  润新知