CentOS 从零开始设置防火墙的实用技巧
一 版本选择与准备
firewall-cmd --state(返回 running/not running)systemctl start firewalld、systemctl enable firewalldsystemctl stop firewalld、systemctl disable firewalld二 firewalld 快速上手
| 目标 | 命令示例 |
|---|---|
| 启动/开机自启 | `systemctl start |
| 查看状态 | firewall-cmd --state |
| 查看规则 | firewall-cmd --list-all(指定区域:--zone=public) |
| 开放单端口 | firewall-cmd --zone=public --add-port=80/tcp --permanent |
| 开放端口范围 | firewall-cmd --zone=public --add-port=10000-10010/tcp --permanent |
| 开放常用服务 | firewall-cmd --zone=public --add-service=ssh --permanent;... http ...;... https ... |
| 使永久规则生效 | firewall-cmd --reload |
| 删除端口/服务 | firewall-cmd --zone=public --remove-port=80/tcp --permanent;... --remove-service=http ... |
| 查询端口/服务 | firewall-cmd --query-port=80/tcp;firewall-cmd --query-service=ssh |
| 查看支持的服务 | firewall-cmd --get-services |
--permanent 写入持久配置,务必 reload 使其立即生效。--list-all 核对当前生效规则,避免误放通。三 进阶配置与典型场景
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="22" protocol="tcp" accept' --permanent && firewall-cmd --reloadfirewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.0/24" port port="3306" protocol="tcp" drop' --permanent && firewall-cmd --reloadfirewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.10 --permanent && firewall-cmd --reloadfirewall-cmd --zone=public --add-masquerade --permanent && firewall-cmd --reloadfirewall-cmd --permanent --zone=trusted --change-interface=eth1 && firewall-cmd --reloadfirewall-cmd --set-log-denied=xml;查看日志:journalctl -u firewalld -f。四 安全加固与运维建议
firewall-cmd --list-all 巡检。firewall-cmd --runtime-to-permanent 固化运行时规则。banaction=firewallcmd-ipset),对 SSH 等高风险服务做自动封禁。firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" port port="80" protocol="tcp" rate-limit burst=30' --permanent && firewall-cmd --reloadnmap -sV -p 22,80,443 <IP> 校验端口可达性与服务指纹。五 使用 iptables 的对照与迁移要点
yum install -y iptables-services;systemctl start iptables;systemctl enable iptablesiptables -A INPUT -p tcp --dport 80 -j ACCEPTservice iptables save(写入 /etc/sysconfig/iptables);iptables-restore < /etc/sysconfig/iptables