在 CentOS 系统中,使用 iptables
设置默认策略可以通过以下步骤完成。以下示例将展示如何为 INPUT
、FORWARD
和 OUTPUT
链设置默认策略。
1. 备份当前的 iptables 规则
在进行任何修改之前,建议先备份当前的 iptables
规则,以便在需要时可以恢复。
sudo iptables-save > /etc/iptables/iptables.backup
2. 设置默认策略
使用 iptables
命令为不同的链设置默认策略。常见的默认策略有 ACCEPT
(接受)和 DROP
(丢弃)。
a. 设置 INPUT 链的默认策略为 DROP
sudo iptables -P INPUT DROP
这意味着除了明确允许的规则外,所有进入本机的流量将被丢弃。
b. 设置 FORWARD 链的默认策略为 DROP
sudo iptables -P FORWARD DROP
这将阻止所有未经明确允许的转发流量。
c. 设置 OUTPUT 链的默认策略为 ACCEPT
sudo iptables -P OUTPUT ACCEPT
通常,默认允许本机发起的流量。
3. 允许必要的流量
根据你的需求,添加规则以允许必要的流量通过。例如:
a. 允许已建立的连接和相关流量
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
b. 允许 SSH 连接(假设使用默认端口 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
c. 允许本地回环接口的流量
sudo iptables -A INPUT -i lo -j ACCEPT
d. 允许 HTTP 和 HTTPS 流量(如果需要)
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
4. 保存 iptables 规则
CentOS 7 及以上版本使用 firewalld
作为默认防火墙管理工具,iptables
规则在重启后不会自动保存。你可以使用 firewalld
来持久化规则,或者手动保存 iptables
规则。
a. 使用 firewalld 持久化规则(推荐)
如果系统已安装并启用了 firewalld
,可以使用以下命令添加规则并使其在重启后生效:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
b. 手动保存 iptables 规则
如果你更倾向于使用 iptables
并希望规则在重启后仍然有效,可以安装 iptables-services
并启用保存服务:
sudo yum install iptables-services sudo systemctl enable iptables sudo systemctl start iptables
然后,使用以下命令保存规则:
sudo service iptables save
或者,手动将规则保存到 /etc/sysconfig/iptables
文件中。
5. 验证 iptables 规则
使用以下命令查看当前的 iptables
规则,确保设置正确:
sudo iptables -L -v -n
注意事项
- 谨慎设置默认策略:将默认策略设置为
DROP
可能会导致无法远程访问服务器,除非你已经允许了必要的流量(如 SSH)。 - 备份规则:在进行任何修改之前,务必备份当前的规则,以防止意外断开连接或配置错误。
- 测试环境:在生产环境中应用新规则之前,建议先在测试环境中验证其效果。
通过以上步骤,你可以在 CentOS 系统中使用 iptables
设置默认策略,并根据需要允许特定的网络流量。