linux服务器初始化防火墙策略核心是“默认拒绝、按需放行”,推荐rhel系用firewalld、debian系用ufw;四步走:启用服务并设开机自启、设public为默认区域、仅开放ssh及必要端口(如http)、禁用icmp等危险服务,最后reload生效并验证。

Linux 服务器初始化时配置安全防火墙策略,核心是“默认拒绝、按需放行”,同时兼顾可用性与可维护性。不建议直接裸奔或全开,也不必一上来就堆砌复杂规则。重点在于建立基础防护骨架,后续再按业务逐步细化。
明确用哪个工具:firewalld 还是 iptables/nftables?
RHEL/CentOS 8+、Fedora、AlmaLinux 等默认使用 firewalld,它更适配初始化场景——区域化管理、命令简洁、支持运行时生效且不中断连接。Debian/Ubuntu 默认未预装 firewalld,多用 ufw(用户友好)或直接操作 nftables。若无特殊要求,新服务器推荐 firewalld(RHEL系)或 ufw(Debian系);老系统或需精细控制的环境,可选 iptables 或 nftables。
基础防火墙初始化四步走
-
启用并设为开机自启
systemctl enable --now firewalld # 验证状态 firewall-cmd --state # 应返回 running
-
切换到合适区域并锁定默认策略
初始化阶段一律用public区域(最低信任级别):firewall-cmd --set-default-zone=public # 查看当前活动区域和接口绑定 firewall-cmd --get-active-zones
public区域默认只允许 SSH(22端口),其余全部拒绝——这正是初始化所需的安全基线。 -
仅开放必需服务端口,禁止泛开
除 SSH 外,初期原则上不开其他端口。如确需(例如调试 HTTP):# 临时允许 HTTP(测试用,非生产) firewall-cmd --add-service=http --permanent # 或精确到端口(更可控) firewall-cmd --add-port=8080/tcp --permanent # 生产环境务必限制源 IP(例如只允运维网段) firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="22" protocol="tcp" accept' --permanent
执行后 reload 生效:
Browser Setup (No-Root Linux)下载在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
firewall-cmd --reload
-
禁用危险服务与冗余入口
- 确保
icmp(ping)在生产环境不开放(避免网络探测):firewall-cmd --remove-icmptype=echo-request --permanent
- 检查是否误绑了
trusted或home区域(高风险):firewall-cmd --list-all-zones | grep -A 5 "trusted\|home" # 若发现接口被错误分配,立即重置: firewall-cmd --zone=public --change-interface=eth0 --permanent
- 确保
附加加固建议(非必须但强烈推荐)
-
配合 SSH 密钥登录 + 禁用密码登录
防火墙挡不住弱口令爆破,必须配合:
修改/etc/ssh/sshd_config:PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes
重启
sshd并确认密钥登录正常后再 reload 防火墙。 -
记录被拒绝的连接(可选)
方便排查误拦或攻击尝试:firewall-cmd --add-rich-rule='rule reject' --permanent # 或只对特定端口记录 firewall-cmd --add-rich-rule='rule family="ipv4" port port="22" protocol="tcp" log prefix="ssh-deny" level="info" reject' --permanent firewall-cmd --reload
-
定期导出规则备份
firewall-cmd --list-all > /root/firewall-init-backup-$(date +%F).txt
不复杂但容易忽略的是:规则加了 --permanent 才持久,--reload 才生效,两者缺一不可。初始化完成后,用另一台机器 telnet 或 curl 测试开放端口,确认策略按预期工作。










