怎么在 Ubuntu 22.04 上使用 ufw 禁止所有入站流量例外

文章导读
在 Ubuntu 22.04 上要实现入站流量默认拒绝,最稳妥的做法是先放行 SSH 等关键服务端口,再启用 UFW 并设置默认拒绝入站策略,避免把自己锁在服务器外面。
📋 目录
  1. 命令速用版
  2. 分步处理
  3. 怎么验证是否生效
  4. 被锁在外面怎么办(紧急恢复)
A A

在 Ubuntu 22.04 上要实现入站流量默认拒绝,最稳妥的做法是先放行 SSH 等关键服务端口,再启用 UFW 并设置默认拒绝入站策略,避免把自己锁在服务器外面。

先说结论:UFW 默认策略可以设置为拒绝所有入站流量,但必须先添加允许规则(尤其是 SSH),否则启用后可能无法远程连接服务器。

  • 先判断:确认当前是否有其他远程访问方式(如云厂商控制台、VNC),防止配置失误后无法恢复
  • 优先做:先添加 SSH 等必要服务的允许规则,再设置默认拒绝策略并启用 UFW
  • 再验证:sudo ufw status verbose检查策略是否生效,并测试关键端口是否可访问

命令速用版

如果你已经确认当前有 SSH 连接或其他远程访问方式,可以直接按以下顺序执行:

# 1. 先允许 SSH(端口 22),防止启用防火墙后断开连接
sudo ufw allow ssh

# 2. 设置默认拒绝入站流量
sudo ufw default deny incoming

# 3. 设置默认允许出站流量(一般不需要改,但显式设置更清晰)
sudo ufw default allow outgoing

# 4. 启用 UFW 防火墙
sudo ufw enable

# 5. 查看当前状态和规则
sudo ufw status verbose

如果需要允许其他服务,比如 Web 服务器,再追加规则:

# 允许 HTTP 和 HTTPS
sudo ufw allow http
sudo ufw allow https

# 或者指定端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

分步处理

步骤 1:检查 UFW 是否已安装

大多数 Ubuntu 系统已预装 UFW,可以用以下命令确认:

sudo ufw version

如果提示未找到命令,先安装:

sudo apt update
sudo apt install ufw

步骤 2:添加必要的允许规则

在启用防火墙之前,必须先放行关键服务。最常见的是 SSH:

sudo ufw allow ssh

如果 SSH 端口不是默认的 22,需要指定端口号:

sudo ufw allow 2222/tcp

如果运行 Web 服务,再添加 HTTP 和 HTTPS:

sudo ufw allow http
sudo ufw allow https

步骤 3:设置默认策略

显式设置入站和出站策略,确保行为符合预期:

sudo ufw default deny incoming
sudo ufw default allow outgoing

出站流量一般保持允许即可,除非有特殊安全需求需要限制出站。

怎么在 Ubuntu 22.04 上使用 ufw 禁止所有入站流量例外

步骤 4:启用 UFW

确认规则添加完成后,再启用防火墙:

sudo ufw enable

系统会提示启用后可能中断现有连接,如果已经添加了 SSH 允许规则,可以输入y确认。

步骤 5:添加其他例外规则

启用后如需开放其他服务,可以继续添加规则:

# 允许特定 IP 访问 MySQL
sudo ufw allow from 192.168.1.100 to any port 3306

# 限制 SSH 连接速率(防暴力破解)
sudo ufw limit ssh

# 拒绝特定 IP 或网段
sudo ufw deny from 203.0.113.0/24

怎么验证是否生效

检查防火墙状态

sudo ufw status verbose

输出中应该能看到Default: deny (incoming), allow (outgoing),以及你添加的允许规则列表。

查看带编号的规则

sudo ufw status numbered

这个视图方便后续删除或修改特定规则。

测试端口连通性

从另一台机器测试 SSH 是否还能连接:

ssh username@your-server-ip

如果连接成功,说明 SSH 规则生效且没有被误拦截。

怎么在 Ubuntu 22.04 上使用 ufw 禁止所有入站流量例外

查看日志

UFW 可以记录被拒绝的连接尝试,日志位于:

/var/log/ufw.log

启用日志记录:

sudo ufw logging on

如果有异常流量,可以通过日志分析来源 IP 和尝试访问的端口。

被锁在外面怎么办(紧急恢复)

如果配置失误导致无法 SSH 连接,请按以下顺序尝试恢复:

1. 使用云厂商控制台(VNC/串行控制台)

云服务器(如阿里云、腾讯云、AWS)通常提供带外管理控制台。登录云厂商网页控制台,找到实例的“远程连接”或“VNC 登录”功能。这种方式不经过网络防火墙,可以直接登录系统。

2. 临时关闭防火墙

通过控制台登录后,执行以下命令临时关闭 UFW 恢复网络:

sudo ufw disable

恢复 SSH 连接后,再重新检查规则并启用:

sudo ufw allow ssh
sudo ufw enable

3. 重置 UFW 配置

如果规则混乱无法修复,可以重置 UFW 到初始状态(会清除所有自定义规则):

sudo ufw reset

4. 检查云平台安全组

如果系统防火墙已放行但仍无法连接,检查云厂商控制台的“安全组”或“网络 ACL