iptables 常见模块(部分内容由AI生成)

iptables 提供了丰富的扩展模块(通过 -m 参数指定),用于实现更精细化的流量控制。以下是常用的模块及其典型应用场景:


1. 基础网络匹配模块

tcp / udp / icmp
  • 功能:匹配协议特定字段(如端口、ICMP 类型)。
  • 示例
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 允许 SSH
    iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT  # 允许 ping 请求
    
multiport
  • 功能:匹配多个端口(最多 15 个),减少规则数量。
  • 示例
    iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
    

2. 连接跟踪模块

state / conntrack
  • 功能:基于连接状态匹配(如 NEW, ESTABLISHED, RELATED)。
  • 示例
    iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    

iptables 规则中,ESTABLISHEDRELATED 是连接跟踪(conntrack)模块提供的两种连接状态,用于匹配特定类型的网络连接。它们的适用场景如下:


2.1. ESTABLISHED 状态
含义

匹配已建立的连接,即双向通信已经建立的连接(例如 TCP 握手已完成,或 UDP/ICMP 已有双向交互)。

适用场景
  • 允许回包:当内网主机主动访问外网服务(如访问网站、下载文件)时,外网返回的响应数据包需要放行。
    iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
    
  • 保持长连接:对 SSH、数据库连接等长会话,允许后续通信。
  • 减少规则冗余:无需为每个服务的返回流量单独写规则,一条 ESTABLISHED 规则即可覆盖。
示例

假设主机主动访问 example.com:80

  1. 主机发送 SYN → 外网服务器(属于 OUTPUT 链)。
  2. 服务器返回 SYN+ACK → 主机(属于 INPUT 链)。
    此时返回的 SYN+ACK 会被 ESTABLISHED 规则匹配并放行。

2.2. RELATED 状态
含义

匹配与已有连接相关联的新连接。这些新连接可能是由主连接派生的(如 FTP 的数据连接、ICMP 错误消息、DNS 辅助查询等)。

适用场景
  • FTP 被动模式:FTP 控制连接(端口 21)会动态协商数据连接端口,RELATED 可自动放行这些临时端口。
    iptables -A INPUT -m state --state RELATED -j ACCEPT
    
  • ICMP 错误消息:如 TCP RSTICMP Destination Unreachable 响应。
  • DNS 动态端口:部分协议(如 SIP)可能临时打开新端口传输数据。
示例

以 FTP 被动模式为例:

  1. 客户端连接 FTP 控制端口 21(主连接)。
  2. 服务器告知客户端:“数据通道在端口 30000”。
  3. 客户端连接端口 30000 时,RELATED 状态会识别此连接与主连接关联并放行。

为什么需要同时使用?
  • ESTABLISHED 确保已有连接的持续通信。
  • RELATED 处理动态协议(如 FTP、SIP)的衍生连接。
    典型的安全策略会同时允许两者:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

注意事项
  1. 依赖 conntrack 模块:需内核支持(默认已加载)。
  2. UDP/ICMP 也适用:虽然无握手,但内核会跟踪双向流量视为 ESTABLISHED
  3. 性能优化:将 ESTABLISHED,RELATED 规则放在规则集顶部,可减少后续规则匹配次数。

通过合理使用这两种状态,可以大幅简化防火墙规则,同时确保合法流量的正常通行。

3. IP/网络层匹配模块

iprange
  • 功能:匹配 IP 地址范围。
  • 示例
    iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP
    
geoip(需额外安装)
  • 功能:根据 IP 地理位置过滤。
  • 示例
    iptables -A INPUT -m geoip --src-cc CN -j ACCEPT  # 允许中国 IP
    

4. 数据包特征匹配模块

limit
  • 功能:限制匹配速率(防洪水攻击)。
  • 示例
    iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 3/sec -j ACCEPT
    
hashlimit
  • 功能:更灵活的速率限制(支持按 IP/端口分组)。
  • 示例
    iptables -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 100/sec --hashlimit-burst 50 --hashlimit-mode srcip -j ACCEPT
    
string
  • 功能:匹配数据包中的字符串(如 HTTP 请求)。
  • 示例
    iptables -A OUTPUT -p tcp --dport 80 -m string --algo bm --string "blockme" -j DROP
    
time
  • 功能:按时间范围匹配(如上班时间禁止访问某些网站)。
  • 示例
    iptables -A OUTPUT -p tcp --dport 80 -m time --timestart 09:00 --timestop 18:00 --weekdays Mon-Fri -j REJECT
    

5. 高级流量控制模块

connlimit
  • 功能:限制单个 IP 的连接数(防 CC 攻击)。
  • 示例
    iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
    
recent
  • 功能:动态维护 IP 列表(防暴力破解)。
  • 示例
    iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --update --seconds 60 --hitcount 3 -j DROP
    
owner
  • 功能:匹配进程所有者(仅限 OUTPUT 链)。
  • 示例
    iptables -A OUTPUT -p tcp --dport 80 -m owner --uid-owner nginx -j ACCEPT
    

6. 特殊用途模块

mark
  • 功能:匹配数据包标记(结合 iproute2 实现 QoS)。
  • 示例
    iptables -A FORWARD -m mark --mark 0x1 -j DROP
    
tos
  • 功能:匹配 IP 头部的 TOS 字段(区分服务类型)。
  • 示例
    iptables -A INPUT -m tos --tos Minimize-Delay -j PRIORITY_QUEUE
    
length
  • 功能:匹配数据包长度。
  • 示例
    iptables -A INPUT -p tcp -m length --length 100:500 -j LOG
    

使用技巧

  1. 模块依赖:部分模块需内核支持(如 geoip 需安装 xt_geoip)。
  2. 规则顺序:将高频匹配规则(如 ESTABLISHED)放在前面提升性能。
  3. 调试工具:结合 iptables -L -v -nconntrack -L 查看匹配情况。

通过灵活组合这些模块,可以实现从基础防火墙到复杂流量管理的各种功能。iptables 提供了丰富的扩展模块(通过 -m 参数指定),用于实现更精细化的流量控制。以下是常用的模块及其典型应用场景:


1. 基础网络匹配模块

tcp / udp / icmp
  • 功能:匹配协议特定字段(如端口、ICMP 类型)。
  • 示例
    iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 允许 SSH
    iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT  # 允许 ping 请求
    
multiport
  • 功能:匹配多个端口(最多 15 个),减少规则数量。
  • 示例
    iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
    

2. 连接跟踪模块

state / conntrack
  • 功能:基于连接状态匹配(如 NEW, ESTABLISHED, RELATED)。
  • 示例
    iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    

3. IP/网络层匹配模块

iprange
  • 功能:匹配 IP 地址范围。
  • 示例
    iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP
    
geoip(需额外安装)
  • 功能:根据 IP 地理位置过滤。
  • 示例
    iptables -A INPUT -m geoip --src-cc CN -j ACCEPT  # 允许中国 IP
    

4. 数据包特征匹配模块

limit
  • 功能:限制匹配速率(防洪水攻击)。
  • 示例
    iptables -A INPUT -p icmp --icmp-type 8 -m limit --limit 3/sec -j ACCEPT
    
hashlimit
  • 功能:更灵活的速率限制(支持按 IP/端口分组)。
  • 示例
    iptables -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 100/sec --hashlimit-burst 50 --hashlimit-mode srcip -j ACCEPT
    
string
  • 功能:匹配数据包中的字符串(如 HTTP 请求)。
  • 示例
    iptables -A OUTPUT -p tcp --dport 80 -m string --algo bm --string "blockme" -j DROP
    
time
  • 功能:按时间范围匹配(如上班时间禁止访问某些网站)。
  • 示例
    iptables -A OUTPUT -p tcp --dport 80 -m time --timestart 09:00 --timestop 18:00 --weekdays Mon-Fri -j REJECT
    

5. 高级流量控制模块

connlimit
  • 功能:限制单个 IP 的连接数(防 CC 攻击)。
  • 示例
    iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
    
recent
  • 功能:动态维护 IP 列表(防暴力破解)。
  • 示例
    iptables -A INPUT -p tcp --dport 22 -m recent --name ssh --update --seconds 60 --hitcount 3 -j DROP
    
owner
  • 功能:匹配进程所有者(仅限 OUTPUT 链)。
  • 示例
    iptables -A OUTPUT -p tcp --dport 80 -m owner --uid-owner nginx -j ACCEPT
    

6. 特殊用途模块

mark
  • 功能:匹配数据包标记(结合 iproute2 实现 QoS)。
  • 示例
    iptables -A FORWARD -m mark --mark 0x1 -j DROP
    
tos
  • 功能:匹配 IP 头部的 TOS 字段(区分服务类型)。
  • 示例
    iptables -A INPUT -m tos --tos Minimize-Delay -j PRIORITY_QUEUE
    
length
  • 功能:匹配数据包长度。
  • 示例
    iptables -A INPUT -p tcp -m length --length 100:500 -j LOG
    

使用技巧

  1. 模块依赖:部分模块需内核支持(如 geoip 需安装 xt_geoip)。
  2. 规则顺序:将高频匹配规则(如 ESTABLISHED)放在前面提升性能。
  3. 调试工具:结合 iptables -L -v -nconntrack -L 查看匹配情况。

通过灵活组合这些模块,可以实现从基础防火墙到复杂流量管理的各种功能。

PS:本文部分内容出自腾讯元宝。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值