温馨提示×

Debian iptables如何使用链进行过滤

小樊
52
2025-09-29 18:27:09
栏目: 智能运维

在Debian系统中,iptables是一个强大的命令行工具,用于配置Linux内核防火墙。它允许系统管理员定义规则,这些规则决定了数据包如何被处理,包括接受、拒绝或转发。iptables规则被组织成不同的链(chains),每个链对应于数据包处理的不同点。

iptables主要有五个默认链:

  1. INPUT:处理进入本机的数据包。
  2. FORWARD:处理通过本机转发的数据包。
  3. OUTPUT:处理从本机发出的数据包。
  4. PREROUTING:用于目标地址转换(DNAT)的规则,在路由决策之前处理数据包。
  5. POSTROUTING:用于源地址转换(SNAT)的规则,在路由决策之后处理数据包。

使用iptables进行过滤的基本步骤如下:

  1. 查看现有规则

    sudo iptables -L
    sudo iptables -L -n
    
  2. 清空所有规则(谨慎操作):

    sudo iptables -F
    
  3. 设置默认策略: 你可以为每个链设置默认策略,例如DROP或ACCEPT。

    sudo iptables -P INPUT DROP
    sudo iptables -P FORWARD DROP
    sudo iptables -P OUTPUT ACCEPT
    
  4. 允许特定IP访问

    sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT
    
  5. 拒绝特定IP访问

    sudo iptables -A INPUT -s 192.168.1.101 -j DROP
    
  6. 允许特定端口通信

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 允许SSH
    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT  # 允许HTTP
    sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允许HTTPS
    
  7. 拒绝所有其他进入的连接

    sudo iptables -A INPUT -j DROP
    
  8. 保存规则: Debian系统通常使用iptables-persistent来保存iptables规则,以便在重启后仍然有效。

    sudo netfilter-persistent save
    sudo netfilter-persistent reload
    
  9. 删除规则: 如果需要删除特定规则,可以使用-D选项。

    sudo iptables -D INPUT -s 192.168.1.100 -j ACCEPT
    

请注意,修改iptables规则可能会影响系统的连通性,因此在生产环境中进行更改之前,建议在测试环境中进行充分的测试。此外,确保你有足够的权限来执行这些命令,通常需要root权限。

0