CentOS 防火墙最佳实践
一 基础与工具选择
二 基线配置步骤
sudo systemctl start firewalldsudo systemctl enable firewalldsudo systemctl status firewalldfirewall-cmd --get-active-zonessudo firewall-cmd --set-default-zone=publicsudo firewall-cmd --zone=public --add-interface=eth0sudo firewall-cmd --permanent --zone=public --add-service=sshsudo firewall-cmd --permanent --zone=public --add-service=http 与 --add-service=httpssudo firewall-cmd --permanent --zone=public --add-port=8080/tcpsudo firewall-cmd --permanent --zone=public --add-port=10000-10010/tcpsudo firewall-cmd --reloadfirewall-cmd --zone=public --list-allfirewall-cmd --zone=public --query-port=8080/tcpsudo firewall-cmd --panic-on(排查后 sudo firewall-cmd --panic-off)/etc/firewalld/ 配置目录后再变更;必要时直接编辑区域文件(如 public.xml)并 sudo firewall-cmd --reload 使生效。三 安全加固要点
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" accept'sudo firewall-cmd --permanent --zone=public --add-source=198.51.100.0/24http):sudo firewall-cmd --permanent --zone=public --remove-service=http && sudo firewall-cmd --reloadsudo firewall-cmd --set-log-denied-all,并结合 rsyslog/SIEM 进行集中监控与告警。四 常见场景与命令示例
| 场景 | 命令示例 |
|---|---|
| 公网 Web 服务 | sudo firewall-cmd --permanent --zone=public --add-service=http --add-service=https && sudo firewall-cmd --reload |
| 管理口仅内网访问 | sudo firewall-cmd --permanent --zone=internal --add-source=10.0.0.0/8 && sudo firewall-cmd --permanent --zone=internal --add-service=ssh && sudo firewall-cmd --reload |
| 限制某 IP 访问某端口 | sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port port="3306" protocol="tcp" accept' && sudo firewall-cmd --reload |
| 批量放行端口段 | sudo firewall-cmd --permanent --zone=public --add-port=10000-20000/tcp && sudo firewall-cmd --reload |
| 临时封禁某网段 | sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="198.51.100.0/24" drop' && sudo firewall-cmd --reload |
| 端口转发/NAT(出口或端口映射) | 启用伪装:sudo firewall-cmd --zone=public --add-masquerade --permanent;端口转发示例:sudo firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.10 && sudo firewall-cmd --reload |
| 紧急阻断与恢复 | sudo firewall-cmd --panic-on / sudo firewall-cmd --panic-off |
以上命令均遵循“先永久后重载”的流程,变更后用 firewall-cmd --list-all 或按端口/源地址查询进行校验。 |
五 运维与变更管理
sudo firewall-cmd --reload → 校验与留痕(变更单、命令日志)。