Skip to content

参考:UFW 命令速查、端口规则与 iptables 对照

基于 UFW 0.36 · 核于 2026-08

速查

  • UFW 定位:iptables/nftables 的配置前端,把复杂语法简化成 ufw allow 22,底层是内核 netfilter。
  • 默认策略default deny incoming(拒绝入站)+ default allow outgoing(允许出站),最小攻击面。
  • 核心命令enable/disable/allow/deny/limit/status/delete/reset
  • 必放三端口:22(SSH)、80(HTTP)、443(HTTPS)。
  • 数据库端口绝不开公网:3306/5432/6379/27017/9200,只允许内网 IP。

一、UFW 命令速查

命令作用
ufw enable启用防火墙(加载所有规则)
ufw disable禁用防火墙
ufw status查看规则列表
ufw status verbose详细状态(含默认策略、日志)
ufw status numbered带编号的规则(删除用)
ufw default deny incoming设置默认拒绝入站
ufw default allow outgoing设置默认允许出站
ufw allow 端口放行端口
ufw allow 端口/tcp放行指定协议
ufw allow 服务名按服务名放行(ssh/http/https)
ufw allow 'App Profile'按应用配置放行('Nginx Full')
ufw allow from IP to any port N按源 IP 限制访问
ufw deny 端口拒绝端口(DROP)
ufw reject 端口拒绝端口(回 RST)
ufw limit 端口限流防暴破(30s 超 6 次拒)
ufw delete 编号按编号删除规则
ufw delete allow 端口按命令删除规则
ufw insert N 规则插入规则到指定位置
ufw reset清空所有规则
ufw app list列出应用配置
ufw reload重新加载规则

二、常用端口规则

服务端口推荐规则
SSH22ufw limit 22/tcp(限流防暴破)
HTTP80ufw allow 80/tcp
HTTPS443ufw allow 443/tcp
MySQL3306ufw allow from 内网 to any port 3306(绝不开公网)
PostgreSQL5432ufw allow from 内网 to any port 5432
Redis6379ufw allow from 内网 to any port 6379
MongoDB27017ufw allow from 内网 to any port 27017
DNS53ufw allow 53/tcp + ufw allow 53/udp

三、典型配置流程

bash
# 1. 先放行 SSH(最重要)
sudo ufw allow 22/tcp            # 或 sudo ufw limit 22/tcp

# 2. 放行 Web
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 3. 默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 4. 启用
sudo ufw enable

# 5. 验证
sudo ufw status verbose

四、UFW 与 iptables 命令对照

功能UFWiptables
放行 22ufw allow 22iptables -A INPUT -p tcp --dport 22 -j ACCEPT
拒绝 3306ufw deny 3306iptables -A INPUT -p tcp --dport 3306 -j DROP
按源 IPufw allow from 10.0.0.0/8 to any port 3306iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 3306 -j ACCEPT
已建立连接(UFW 自动配)iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
查看规则ufw statusiptables -L INPUT -n -v

五、netfilter 表与链速查

作用主要链UFW 是否管理
filter过滤(防火墙核心)INPUT/OUTPUT/FORWARD是(主要操作这个)
nat地址转换/端口转发PREROUTING/POSTROUTING否(需手写 iptables)
mangle修改包头所有链
raw连接跟踪前PREROUTING/OUTPUT

六、易错点清单

  • 「先 enable 再 allow SSH」:危险。先 enable(默认 deny)会立刻断开 SSH。必须先 allow 22enable
  • 「UFW 是独立的防火墙引擎」:错。UFW 是 iptables/nftables 的配置前端,底层是内核 netfilter。
  • ufw deny 3306 在默认 deny 时有意义」:冗余。默认 deny incoming 已拒绝所有未 allow 的端口,单独 deny 3306 多余(除非要覆盖 allow)。
  • 「数据库端口可以开公网」:危险。3306/6379 等内部服务绝不开公网,默认无鉴权会被秒攻破,只允许内网 IP。
  • 「deny 和 reject 一样」:不同。deny(DROP)丢包无响应(更安全,不暴露端口存在);reject 回拒绝包(暴露端口存在但不可连)。公网用 deny。
  • 「UFW 能挡住所有攻击」:错。UFW 只管端口级访问控制,挡不住应用层攻击(SQL 注入/XSS),那需 WAF + 应用代码。
  • 「Docker 发布端口受 UFW 控制」:错。Docker 自己管理 iptables(DOCKER 链),绕过 UFW 的 INPUT 链,导致 UFW 规则对容器端口无效(经典坑)。
  • 「limit 能根治 SSH 暴力破解」:不完全。limit 只减缓(30s 超 6 次拒),根治靠禁用密码登录 + SSH 密钥。
  • 「改完 UFW 规则要重启」:错。UFW 命令即时生效(写入内核 netfilter),无需重启或 reload(除非手编 before.rules 需 reload)。
  • 「UFW 在所有 Linux 发行版都用」:错。UFW 主要在 Ubuntu/Debian;RHEL/CentOS 系默认用 firewalld(语法不同)。

权威链接