CentOS 7.5 下的 iptables 配置与管理
在 CentOS 7.5 系统中,iptables 是一款强大的防火墙工具,用于控制网络流量,尽管 CentOS 7.5 默认使用 firewalld 作为防火墙管理工具,但 iptables 仍然被广泛使用,尤其是在需要精细规则配置的场景下,本文将介绍 iptables 的基本概念、常用命令、规则管理以及注意事项,帮助用户高效配置系统安全策略。

iptables 基础概念
iptables 是基于 Linux 内核的 netfilter 框架实现的包过滤工具,它通过规则链(Chain)和规则(Rule)来管理数据包的流向,在 iptables 中,默认包含三种规则链:
- INPUT:处理进入本机的数据包。
- OUTPUT:处理从本机发出的数据包。
- FORWARD:处理经过本机但不进入本机的数据包(常用于路由器场景)。
用户还可以自定义链,以满足复杂需求,规则链中的每条规则都定义了匹配条件和处理动作(如 ACCEPT、DROP、REJECT 等)。
检查 iptables 状态
在 CentOS 7.5 中,首先需要确认 iptables 服务是否运行,可以通过以下命令查看:
systemctl status iptables
如果服务未启用,可以使用以下命令启动并设置开机自启:
systemctl start iptables systemctl enable iptables
查看当前 iptables 规则则使用:
iptables -L -n -v
-L 表示列出规则,-n 以数字形式显示地址和端口,-v 显示详细信息。
基本规则配置
允许特定端口访问
允许 HTTP(80 端口)和 HTTPS(443 端口)的访问:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT
禁用所有入站流量并允许回环
为了安全性,建议默认拒绝所有入站流量,然后明确允许必要的连接:

iptables -P INPUT DROP iptables -A INPUT -i lo -j ACCEPT
防止 IP 欺骗
添加以下规则可以防止源地址伪造:
iptables -A INPUT -s 127.0.0.0/8 -j DROP iptables -A INPUT -s 224.0.0.0/4 -j DROP iptables -A INPUT -s 240.0.0.0/5 -j DROP
保存与持久化规则
在 CentOS 7.5 中,iptables 规则默认不会在重启后自动保存,可以使用以下命令保存当前规则:
service iptables save
此命令会将规则保存到 /etc/sysconfig/iptables 文件中,如果需要手动编辑规则文件,可以直接修改该文件,然后重启 iptables 服务:
systemctl restart iptables
高级规则管理
端口转发
如果需要将本地 8080 端口的流量转发到 80 端口,可以使用以下命令:
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
限制连接频率
防止暴力破解,限制每分钟最多 5 次 SSH 连接尝试:
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 5 -j DROP
注意事项
- 规则顺序:iptables 按顺序匹配规则,一旦匹配即停止,因此重要规则应放在前面。
- 默认策略:谨慎设置默认策略(DROP 或 ACCEPT),避免意外阻断必要流量。
- 备份规则:修改规则前建议备份,以便出错时快速恢复:
iptables-save > /root/iptables_backup
FAQs
如何在 CentOS 7.5 中禁用 firewalld 并使用 iptables?
首先停止并禁用 firewalld:
systemctl stop firewalld systemctl disable firewalld
然后安装 iptables 服务:

yum install iptables-services -y
启动并启用 iptables:
systemctl start iptables systemctl enable iptables
iptables 规则误删后如何恢复?
如果未手动保存规则,可以通过以下方式恢复:
iptables-restore < /root/iptables_backup
如果没有备份,可以尝试重启 iptables 服务(如果规则已保存到文件):
systemctl restart iptables
若规则未保存,可能需要重新配置,建议定期备份规则文件以避免数据丢失。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复