zoukankan      html  css  js  c++  java
  • 2.iptables 匹配条件(基础)

    基本匹配条件

    -s 用于匹配报文的源地址,可以同时指定多个源地址,每个IP地址用逗号分开,也可以指定网段

    iptables -t filter -I INPUT -s 192.168.1.111,192.168.1.118 -j DROP
    iptables -t filter -I INPUT -s 192.168.1.0/24 -j ACCEPT
    iptables -t filter -I INPUT ! -s 192.168.1.0/24 -j ACCEPT
    

    -d 用于匹配报文的目标地址

    iptables -t filter -I OUTPUT -d 192.168.1.111,192.168.1.118 -j DROP
    iptables -t filter -I INPUT -d 192.168.1.0/24 -j ACCEPT
    iptables -t filter -I INPUT ! -d 192.168.1.0/24 -j ACCEPT
    

    -p 用于匹配报文的协议类型

    iptables -t filter -I INPUT -p tcp -s 192.168.1.146 -j ACCEPT
    iptables -t filter -I INPUT ! -p udp -s 192.168.1.146 -j ACCEPT
    

    -i 用于匹配报文从哪个网卡流入本机

    iptables -t filter -I INPUT -p icmp -i eth4 -j DROP
    iptables -t filter -I INPUT -p icmp ! -i eth4 -j DROP
    

    -o 用于匹配报文从哪个网卡流出本机

    iptables -t filter -I OUTPUT -p icmp -o eth4 -j DROP
    iptables -t filter -I OUTPUT -p icmp ! -o eth4 -j DROP
    
    扩展匹配条件
    tcp扩展模块,常用的扩展匹配条件:

    -p tcp -m tcp --sport 用于匹配tcp协议报文的源端口

    -p tcp -m tcp --dport 用于匹配tcp协议报文的源端口

    iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp --sport 22 -j REJECT
    iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 22:25 -j REJECT
    iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport :22 -j REJECT
    iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 80: -j REJECT
    iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp ! --sport 22 -j ACCEPT
    
    multiport 扩展模块

    -p tcp -m multiport --sports 用于匹配tcp协议报文的源端口

    -p tcp -m multiport --dports 用于匹配tcp协议报文的源端口

    iptables -t filter -I OUTPUT -d 192.168.1.146 -p udp -m multiport --sports 137,138 -j REJECT
    iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80 -j REJECT
    iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport ! --dports 22,80 -j REJECT
    iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 80:88 -j REJECT
    iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80:88 -j REJECT
    
    iprange扩展模块

    --src-range:指定连续的源地址范围
    --dst-range:指定连续的目标地址范围

    iptables -t filter -I INPUT -m iprange --src-range 192.168.1.127-192.168.1.146 -j DROP
    iptables -t filter -I OUTPUT -m iprange --dst-range 192.168.1.127-192.168.1.146 -j DROP
    iptables -t filter -I INPUT -m iprange ! --src-range 192.168.1.127-192.168.1.146 -j DROP
    
    string 模块

    --algo 指定对应的匹配算法(bm kmp)

    --string 指定匹配的字符串

    iptables -t filter -I INPUT -p tcp --sport 80 -m string --algo bm --string "OOXX" -j REJECT
    iptables -t filter -I INPUT -p tcp --sport 80 -m string --algo bm --string "OOXX" -j REJECT
    
    time模块

    --timestart 用于指定时间范围的开始时间,不可取反

    --timestop 用于指定时间范围的结束时间,不可取反

    -weekdays 用于指定星期几,可取反

    --monthdays 用于指定几号,可取反

    --datestart 用于指定日期范围的开始日期,不可取反

    --datestop 用于指定日期范围的结束日期,不可取反

    iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 19:00:00 -j REJECT
    iptables -t filter -I OUTPUT -p tcp --dport 443 -m time --timestart 09:00:00 --timestop 19:00:00 -j REJECT
    iptables -t filter -I OUTPUT -p tcp --dport 80  -m time --weekdays 6,7 -j REJECT
    iptables -t filter -I OUTPUT -p tcp --dport 80  -m time --monthdays 22,23 -j REJECT
    iptables -t filter -I OUTPUT -p tcp --dport 80  -m time ! --monthdays 22,23 -j REJECT
    iptables -t filter -I OUTPUT -p tcp --dport 80  -m time --timestart 09:00:00 --timestop 18:00:00 --weekdays 6,7 -j REJECT
    iptables -t filter -I OUTPUT -p tcp --dport 80  -m time --weekdays 5 --monthdays 22,23,24,25,26,27,28 -j REJECT
    iptables -t filter -I OUTPUT -p tcp --dport 80  -m time --datestart 2017-12-24 --datestop 2017-12-27 -j REJECT
    
    connlimit模块(限制连接数量)

    --connlimit-above 单独使用此选项时,表示限制每个IP的连接数量

    --connlimit-mask 此选项不能单独使用,配合--connlimit-above,则可以针对“某类IP段内一定数量的IP”进行连接数量的限制

    iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT
    iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT
    iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 10 --connlimit-mask 27 -j REJECT
    
    limit模块(限制报文的到达速率)

    --limit-burst 指定令牌桶中令牌的最大数量
    --limit 指定令牌桶中生成新令牌的频率

    iptables -t filter -I INPUT -p icmp -m limit --limit-burst 3 --limit 10/minute -j ACCEPT
    iptables -t filter -A INPUT -p icmp -j REJECT
    
  • 相关阅读:
    IM的扫码登录功能如何实现?一文搞懂主流的扫码登录技术原理
    IM“扫一扫”功能很好做?看看微信“扫一扫识物”的完整技术实现
    2020年了,Android后台保活还有戏吗?看我如何优雅的实现!
    P2P技术详解(三):P2P中的NAT穿越(打洞)方案详解(进阶分析篇)
    微信团队分享:极致优化,iOS版微信编译速度3倍提升的实践总结
    史上最通俗,彻底搞懂字符乱码问题的本质
    你知道,HTTPS用的是对称加密还是非对称加密?
    IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路
    面视必备,史上最通俗计算机网络分层详解
    阿里钉钉技术分享:企业级IM王者——钉钉在后端架构上的过人之处
  • 原文地址:https://www.cnblogs.com/kcxg/p/10350872.html
Copyright © 2011-2022 走看看