iptables 是 Linux 系统上用于配置内核防火墙规则的工具,它通过定义一系列规则来控制网络数据包的流动。iptables 可以基于源 IP、目标 IP、端口号、协议类型等条件对数据包进行过滤、转发或修改,是系统安全的重要组成部分。
iptables 的规则组织在几个不同的链(chain)中,每个链对应数据包处理的一个环节。常见的链包括:
此外,用户还可以创建自定义链来管理复杂的规则集。
iptables 的基本命令格式如下:
iptables [-t 表名] 命令选项 [链名] [规则匹配条件] [-j 目标动作]
常用命令选项包括:
-A
:在链的末尾添加规则-I
:在链的指定位置插入规则-D
:删除指定规则-L
:列出链中的规则-F
:清空链中的所有规则-P
:设置链的默认策略建议先将所有链的默认策略设置为 DROP,然后根据需要开放特定端口:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
例如,开放 SSH(22端口)、HTTP(80端口)和 HTTPS(443端口):
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
配置完成后,需要保存规则以便重启后依然生效。在不同系统上保存方法可能不同:
CentOS/RHEL:
service iptables save
Debian/Ubuntu:
apt-get install iptables-persistent
iptables-save > /etc/iptables/rules.v4
iptables 是一个功能强大的防火墙工具,通过合理配置可以有效提升系统安全性。掌握其基本用法后,可以根据实际需求构建更加复杂的防火墙策略。建议在实际使用前充分测试,确保规则按预期工作。