Linux防火墙核心是netfilter内核框架,iptables为底层灵活工具,ufw为其简化前端;二者均需遵循默认拒绝入站、放行必要端口等最小权限原则,且须协同云平台安全组实现纵深防御。

Linux 系统中管理网络安全,核心是控制进出服务器的数据包。iptables 和 ufw 是两类常用工具:前者是底层、灵活、功能完整的命令行接口;后者是面向用户的简化封装,适合快速上手。选哪个不关键,关键是理解规则逻辑和安全原则——比如“默认拒绝入站、仅放行必要端口”。
先明确基本安全策略
无论用 iptables 还是 ufw,都应遵循最小权限原则:
- INPUT 链(入站)默认设为 DROP,再逐条添加允许规则
- OUTPUT 链(出站)通常设为 ACCEPT,保证本机服务能正常发请求
- FORWARD 链(转发)在单机服务器上一般禁用,可直接设为 DROP
- 必须优先放行已建立的连接(state ESTABLISHED,RELATED),否则 SSH 会断连
- 本地回环(lo 接口)始终放行,避免影响系统内部通信
用 ufw 快速配置(推荐新手)
ufw 默认关闭,启用前先检查状态:
sudo ufw status verbose —— 查看是否启用、当前策略和规则
常见操作:
- sudo ufw enable —— 启用防火墙(首次启用会提示确认)
- sudo ufw allow OpenSSH 或 sudo ufw allow 22 —— 放行 SSH
- sudo ufw allow 80,443/tcp —— 放行 HTTP/HTTPS
- sudo ufw allow from 192.168.1.50 to any port 22 —— 仅允许某 IP 访问 SSH
- sudo ufw deny 23 —— 明确拒绝 Telnet(不推荐启用)
- sudo ufw reset —— 清空所有规则并禁用(慎用)
注意:ufw 的规则本质就是生成并加载到 iptables,所以它和 iptables 不冲突,但不要混用同一套规则——要么全用 ufw 管理,要么直接用 iptables。
用 iptables 手动精细控制(适合进阶)
iptables 规则按顺序匹配,越靠前越优先。建议按“放行信任连接 → 放行服务端口 → 设置默认策略”顺序添加:
- sudo iptables -A INPUT -i lo -j ACCEPT —— 允许本地回环
- sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT —— 允许已有连接的返回流量
- sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT —— 开放 SSH
- sudo iptables -P INPUT DROP —— 设置 INPUT 默认丢弃(执行前务必确认 SSH 已放行!)
查看规则时加 -n -v --line-numbers 更清晰:
sudo iptables -L INPUT -n -v --line-numbers
删除某条规则可指定行号:sudo iptables -D INPUT 3
保存规则需依赖发行版工具(如 Ubuntu 用 sudo iptables-save > /etc/iptables/rules.v4,CentOS 可能用 service iptables save)。
别忘了云环境的双层防护
如果你的服务器部署在云平台(如阿里云、AWS、腾讯云),安全组(Security Group)是第一道网关,iptables/ufw 是第二道。两者独立生效:
- 即使 ufw 放行了 443,安全组没开,外网仍无法访问
- 即使安全组开了 22,ufw 拒绝了,SSH 也会被拦在系统层
- 排查连不通时,要分别检查安全组、ufw/iptables、服务监听状态(ss -tlnp | grep :22)
实际运维中,建议安全组只放开极少数端口(如 22、443),系统防火墙再做细化控制(如限制 SSH 来源 IP),形成纵深防御。


















