UFW在Ubuntu 24.04上已预装,但直接sudo ufw enable会立即锁死SSH连接;启用前必须先设默认策略、放行SSH端口,再启用防火墙,否则将无法远程访问。

UFW 在 Ubuntu 24.04 上已预装,无需安装;但直接 sudo ufw enable 会立刻锁死 SSH 连接——这是最常踩的坑。
确认状态和预装情况
先看 UFW 是否就位、是否已启用,避免重复操作或误判:
-
ufw命令不存在?说明没装(极少见于 Ubuntu 24.04,但云镜像或最小化安装可能删了):运行sudo apt install ufw -y -
sudo ufw status返回Status: inactive→ 防火墙没开,规则不生效 -
sudo ufw status verbose能看到默认策略、已添加规则、日志开关等完整信息,调试时必用 - 别依赖
ufw version判断是否可用——它只报版本号,不反映运行状态
启用前必须做的三件事
远程服务器上执行 sudo ufw enable 的瞬间,若没提前放行 SSH,连接会立即中断,且无法重连(除非有控制台访问权限):
- 先设默认策略:
sudo ufw default deny incoming和sudo ufw default allow outgoing—— 这是安全基线,不是可选项 - 再明确放行当前 SSH 端口:
sudo ufw allow 22/tcp(若改过端口,比如用了2222,就得写sudo ufw allow 2222/tcp) - 最后才启用:
sudo ufw enable;成功后终端会输出Firewall is active and enabled on system startup - 注意:
sudo ufw allow ssh看似方便,但它依赖/etc/ufw/applications.d/openssh-server文件,该文件在某些精简系统中可能缺失,直接写端口号更可靠
按场景加规则:端口、IP、范围怎么写
规则写错会导致服务不可达,或开放了不该开的入口:
- Web 服务:用
sudo ufw allow 80/tcp和sudo ufw allow 443/tcp,不建议用http/https别名——它们只是软链接,实际仍查配置文件,多一层间接就多一分不确定性 - 单 IP 访问特定端口(如只让运维机连数据库):
sudo ufw allow from 192.168.1.100 to any port 5432 - 端口段(如开发调试用):
sudo ufw allow 8080:8090/tcp;UDP 同理,但别混写:8080:8090/udp是独立规则,不会自动覆盖 TCP - 删除规则别靠猜:
sudo ufw status numbered查编号,再用sudo ufw delete <编号>,比sudo ufw delete allow 80更精准(后者可能删错同端口不同协议的规则)
云服务器特别注意事项
阿里云、腾讯云、AWS 等平台的安全组(Security Group)在 UFW 之前就拦截流量,UFW 规则根本收不到包:
- 安全组应作为第一道防线:只放行你真正需要的端口(如仅限你办公室 IP 访问
2222),而不是全放开再靠 UFW 拦 - UFW 宜作为第二道防线:管应用层逻辑,比如禁止内网某 IP 访问
6379(Redis),或限制某个端口只接受特定子网 - 别同时开 iptables + UFW:UFW 底层就是调用 iptables/nftables,两者共存极易规则冲突,
sudo systemctl stop iptables并禁用自启是必要前置动作 - 日志默认关闭,排查被拒连接时记得开:
sudo ufw logging on,日志落进/var/log/ufw.log,但别长期开 high 级别——IO 压力明显


















