本轮按官方资料重新整理,保留原地址和原始发布日期。文内步骤未在本站生产服务器执行,使用前请确认你自己的版本、权限和恢复方式。
先确认服务是否真的在监听
ss -lnt
firewall-cmd --state
firewall-cmd --get-active-zones
命令可能需要维护权限,或系统没有使用 firewalld。监听在 127.0.0.1 的服务不会因为打开防火墙就自动变为公网服务;云安全组、反向代理与服务访问控制也可能单独影响连接。旧文所指 CentOS Linux 7 已结束生命周期,应安排迁移。
读取实际区域的规则
下面仅假定已从上一步确认目标网卡或来源属于 public 区域。不是 public 时使用实际区域;不要照抄默认值。
firewall-cmd --zone=public --list-all
firewall-cmd --zone=public --query-service=https
firewall-cmd --permanent --zone=public --query-service=https
只为目标业务增加规则
确认服务应当公开、端口和访问范围正确,并保留控制台或备用管理连接后,才由维护方变更规则。对于已确认的标准 HTTPS 服务,可以先添加限时运行规则:
firewall-cmd --zone=public --add-service=https --timeout=600
规则在运行时生效并按超时撤销。验证外部连接及原有管理连接;若确需长期保留,再单独写入永久配置,不用重载整套规则来完成这一步:
firewall-cmd --permanent --zone=public --add-service=https
撤回前先看原状态
只有确认本次新增加的规则原来不存在时,才使用同一区域的 remove-service 撤回相应运行或永久规则。不要移除已有规则,也不要删除不属于这次变更的端口。涉及来源限制或自定义端口,按该业务单独设计规则。
不要把所有保护一起关闭
防火墙与 SELinux 是不同层面的机制。本文不再提供全局关闭二者作为通用排障的方法;如果日志指向 SELinux,需要按具体拒绝记录处理。旧文中混入的 Hadoop、格式化和 SSH 配置片段已移除。