在 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出站流量一般保持允许即可,除非有特殊安全需求需要限制出站。
步骤 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 规则生效且没有被误拦截。
查看日志
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 enable3. 重置 UFW 配置
如果规则混乱无法修复,可以重置 UFW 到初始状态(会清除所有自定义规则):
sudo ufw reset4. 检查云平台安全组
如果系统防火墙已放行但仍无法连接,检查云厂商控制台的“安全组”或“网络 ACL