在CentOS系统中封端口是常见的安全管理操作,通常用于限制特定服务的访问或防止恶意攻击,封端口可以通过多种方式实现,如使用防火墙工具(如firewalld、iptables)或TCP Wrappers,本文将详细介绍在CentOS系统中封端口的常用方法、操作步骤及注意事项。

使用firewalld封端口
firewalld是CentOS 7及以上版本的默认防火墙管理工具,支持动态规则管理,无需重启即可生效,以下是使用firewalld封端口的步骤:
检查firewalld服务状态
首先确认firewalld服务是否运行,可通过以下命令查看:
systemctl status firewalld
若未运行,使用systemctl start firewalld启动服务,并设置开机自启:
systemctl enable firewalld
添加封端口规则
firewalld支持通过区域(zone)管理端口规则,默认区域为public,可通过以下命令永久禁用TCP/UDP端口的访问:
firewall-cmd --permanent --remove-port=端口号/协议类型
禁用TCP协议的8080端口:
firewall-cmd --permanent --remove-port=8080/tcp
若需禁用UDP端口,将tcp改为udp。
重新加载防火墙配置
添加规则后,需重新加载配置使规则生效:

firewall-cmd --reload
验证规则是否生效
查看当前防火墙规则,确认端口已被禁用:
firewall-cmd --list-ports
使用iptables封端口
iptables是CentOS 6及更早版本的默认防火墙工具,在CentOS 7中仍可使用,以下是iptables封端口的操作步骤:
安装iptables
若系统中未安装iptables,可通过以下命令安装:
yum install iptables-services -y
添加封端口规则
使用iptables命令添加规则,例如禁用TCP的22端口:
iptables -A INPUT -p tcp --dport 22 -j DROP
-A INPUT表示添加到INPUT链,-p tcp指定协议,--dport 22为目标端口,-j DROP表示丢弃数据包。
保存规则
iptables规则默认重启后失效,需手动保存:
service iptables save
重启iptables服务
保存规则后,重启服务使配置生效:

systemctl restart iptables
使用TCP Wrappers封端口
TCP Wrappers通过控制主机访问权限来限制服务,适用于基于xinetd的服务,修改/etc/hosts.deny和/etc/hosts.allow文件即可实现封端口。
编辑hosts.deny文件
在/etc/hosts.deny中添加拒绝规则,格式为服务名: 主机/IP,拒绝所有主机访问SSH服务:
sshd: ALL
编辑hosts.allow文件(可选)
若需允许特定主机访问,可在/etc/hosts.allow中添加允许规则,例如允许192.168.1.100访问SSH:
sshd: 192.168.1.100
重启相关服务
修改配置后,重启受影响的服务(如sshd)使规则生效:
systemctl restart sshd
注意事项
- 规则优先级:firewalld和iptables的规则优先级较高,建议优先使用firewalld。
- 测试环境验证:在生产环境操作前,建议在测试环境中验证规则是否影响正常服务。
- 备份配置:修改防火墙规则前,备份当前配置以便回滚。
- 日志记录:建议开启防火墙日志,便于排查问题。
FAQs
Q1: 如何临时开放端口后自动关闭?
A1: 可使用firewalld的--timeout参数设置规则有效期,例如开放80端口30分钟后自动关闭:
firewall-cmd --add-port=80/tcp --timeout=1800
Q2: 封端口后如何恢复?
A2: 对于firewalld,使用--add-port重新添加端口规则并重载;对于iptables,通过iptables -D删除规则后保存,恢复8080端口:
firewall-cmd --permanent --add-port=8080/tcp && firewall-cmd --reload