ufw 的规则模型
ufw 用「服务名或端口 + 源地址 + 协议」三元组管理规则,删除可以按原规则描述,也可以按 status numbered 里的编号。它比直接写 iptables 直观,适合日常维护,但有两点要记住:ufw 会自行整理规则集,不按书写顺序匹配;IPv6 默认一并纳入管理。日常维护应把它当作规则唯一入口,避免和手工 iptables 规则互相打架。
基本信息
| 适用平台 | Linux(Ubuntu / Debian 系) |
|---|---|
| 风险等级 | 中 |
| 基线要求 | 每条放行规则都能追溯到具体业务 |
| 配置文件 | /etc/ufw/ 与 /etc/default/ufw |
| 状态查看 | ufw status verbose 与 ufw status numbered |
典型使用场景
- 只允许管理网段访问 SSH,其余来源一律拒绝
- 按业务开通端口并核对已有放行项
- 清理历史遗留的临时放行规则
- 排查规则写了却不生效的匹配问题
- 主机加固基线里的规则最小化检查
增删查
增删查
sudo ufw allow from 10.0.0.0/8 to any port 22 proto tcp # 只放行管理网段访问 SSH
sudo ufw allow 443/tcp # 放行 HTTPS
sudo ufw deny 3306 # 拒绝数据库端口对外
sudo ufw status numbered # 带编号查看规则
sudo ufw delete allow 443/tcp # 按原规则描述删除
sudo ufw delete 3 # 按编号删除,编号会实时变动复核必查项
| 检查项 | 含义 | 注意点 |
|---|---|---|
| 规则顺序 | ufw 整理后的规则集顺序 | 不要用 iptables 的先到先得直觉推断 |
| 源地址 | 规则限定的来源网段 | 管理类端口建议限源 |
| 协议与端口 | 放行的协议与端口 | 能写 proto tcp 就不要留 any |
| 默认策略 | 入站与出站的默认动作 | 入站应为 deny 基座 |
| IPv6 管理 | /etc/default/ufw 的 IPV6 取值 | 禁用 IPv6 的机器要改成 no |
用编号删除前必须重新执行一次 status numbered:编号会随删除动作实时变动,多人同时操作时极易误删。
ufw 与手工 iptables 规则会互相干扰:若机器上已有其他工具维护规则(firewalld 或 iptables 脚本),要统一规则入口,不要两套同时改。
排查时用 ufw status verbose 可以一次看到默认策略与日志开关;规则是否真的命中,可以结合系统日志里的 ufw 记录来确认。