在 CentOS 系统中,iptables
是一个用于配置内核防火墙(netfilter)规则的工具。iptables
使用表(tables)、链(chains)和规则(rules)的概念来管理网络流量。以下是如何设置 iptables
链的基本步骤:
1. 查看当前的 iptables
规则
首先,你可以查看当前的 iptables
规则,以便了解现有的配置:
sudo iptables -L -n -v
2. 清空所有规则
如果你需要从头开始设置 iptables
规则,可以先清空所有现有的规则:
sudo iptables -F sudo iptables -X
-F
:清空所有链中的规则。-X
:删除用户自定义的链。
3. 设置默认策略
你可以为每个链设置默认策略,例如 DROP 或 ACCEPT:
sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT
-P
:设置默认策略。
4. 添加规则
你可以添加新的规则到指定的链中。以下是一些常见的规则示例:
允许本地回环接口的流量
sudo iptables -A INPUT -i lo -j ACCEPT
-A
:追加规则到链的末尾。-i lo
:指定输入接口为回环接口。
允许已建立的连接
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-m state
:匹配连接状态。--state ESTABLISHED,RELATED
:允许已建立的连接和相关的连接。
允许特定端口的流量
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
-p tcp
:指定协议为TCP。--dport
:指定目标端口。
阻止所有其他输入流量
sudo iptables -A INPUT -j DROP
5. 保存规则
在 CentOS 7 及更高版本中,iptables
规则在重启后不会自动保存。你可以使用 firewalld
服务来管理防火墙规则,或者手动保存规则。
使用 firewalld
如果你更喜欢使用 firewalld
,可以安装并启用它:
sudo yum install firewalld sudo systemctl start firewalld sudo systemctl enable firewalld
然后使用 firewall-cmd
命令来管理规则。
手动保存规则
你可以手动保存 iptables
规则到一个文件中,并在启动时加载它们:
sudo iptables-save > /etc/sysconfig/iptables
在 /etc/rc.d/rc.local
文件中添加以下行以在启动时加载规则:
iptables-restore < /etc/sysconfig/iptables
6. 重新加载规则
如果你修改了规则文件,可以使用以下命令重新加载 iptables
规则:
sudo iptables-restore < /etc/sysconfig/iptables
通过以上步骤,你可以在 CentOS 系统中设置和管理 iptables
链。根据你的具体需求,可以进一步调整和优化规则。