Ubuntu 22.04 默认使用 UFW 管理防火墙,配置 VPS 安全组需同时在云服务商控制台放行端口并在系统内启用 UFW 规则,操作前务必确认 SSH 端口已放行以防失联。
先说结论:Ubuntu 22.04 防火墙配置核心是 UFW 工具,需配合云厂商安全组双重防护,优先保障 SSH 连通性再限制其他端口。
- 适合:使用 Ubuntu 22.04 系统的 VPS 实例,需要基础网络访问控制场景
- 先准备:确认当前 SSH 端口号,保留云控制台远程终端访问权限
- 验收:执行 ufw status 显示 active 且关键端口状态为 ALLOW
命令速用版
# 允许 SSH 连接(防止锁死)
sudo ufw allow 22/tcp
# 启用防火墙
sudo ufw enable
# 查看状态
sudo ufw status
# 允许特定端口(如 Web)
sudo ufw allow 80/tcp为什么会这样
VPS 网络安全依赖云厂商安全组与系统防火墙两层防御,仅配置一层可能导致规则被绕过或管理混乱。
云服务商的安全组工作在 hypervisor 网络层,流量到达实例前已被过滤;UFW 工作在操作系统内核 netfilter 层,控制实例内部进出流量。两层配置一致可避免单点失效,例如云安全组放行但系统防火墙拦截会导致服务不可达,反之则存在暴露风险。
分步处理
步骤 1:确认 SSH 端口并放行
检查 SSH 配置端口,默认为 22,若修改过需记录实际端口号。
执行命令:sudo ufw allow 22/tcp(若修改过端口则替换数字)。
检查点:命令返回 Rules updated 类似提示。
步骤 2:启用 UFW 防火墙
执行命令:sudo ufw enable。
系统会提示 Command may disrupt existing ssh connections,输入 y 确认。
风险边界:若 SSH 端口未放行,执行此命令会导致远程连接中断。
步骤 3:配置云厂商安全组
登录云服务商控制台,找到实例对应的安全组或防火墙设置。
添加入站规则,协议 TCP,端口范围与 UFW 允许端口一致,源地址按需限制(如 0.0.0.0/0 或特定 IP)。
操作动作:保存规则并应用到实例。
步骤 4:放行其他业务端口
根据业务需要开放 80、443 等端口。
执行命令:sudo ufw allow 80/tcp。
回滚提醒:若配置错误,可通过云控制台 VNC 或救援模式进入系统执行sudo ufw disable恢复。
怎么验证是否生效
使用状态查询命令与外部连通性测试结合验证。
1. 本地状态检查:执行sudo ufw status verbose,确认 Status: active 且默认策略为 deny (incoming)。
2. 端口监听检查:执行ss -tuln,确认业务端口处于 LISTEN 状态。
3. 外部连通性测试:使用本地终端执行telnet 你的 VPS IP 端口或使用在线端口扫描工具,确认放行端口通、未放行端口断。
常见坑
1. SSH 端口未放行即启用:这是最高频故障,务必先 allow 22 再 enable。
2. IPv6 配置遗漏:UFW 默认可能同时管理 IPv6,若云厂商不支持 IPv6 需在/etc/default/ufw中设置 IPV6=no。
3. 默认策略未修改:启用后默认入站是 deny,若需开放新服务必须显式 allow,不要依赖默认允许。
常见问题
如何重置 UFW 配置?
执行sudo ufw reset可清除所有规则并禁用防火墙,需重新配置。
UFW 日志在哪里查看?
默认日志位于/var/log/ufw.log,可使用sudo tail -f /var/log/ufw.log实时查看拦截记录。
云安全组和 UFW 哪个优先级高?
云安全组优先级更高,流量先经过云安全组过滤,到达实例后再经 UFW 处理,任一层面拦截都会导致连接失败。
参考来源
Ubuntu 官方文档 - Firewall configuration with UFW
URL: https://ubuntu.com/server/docs/firewall-u-fw