UFW 防火墙入门:6 条命令守住 Linux 服务器大门

UFW 防火墙入门:6 条命令守住 Linux 服务器大门

UFW 教程Linux 防火墙服务器防火墙设置Ubuntu 防火墙
📶 入门 🧩 UFW

UFW 防火墙入门:6 条命令守住 Linux 服务器大门

新买的云服务器只要绑定了公网 IP,24 小时内就会遭遇成百上千次自动化端口扫描。即便是一台标价仅 ¥38/年(价格查询于 2026-10-02)的轻量服务器,不加防护也会沦为僵尸网络节点。iptables 规则链对新手门槛过高。UFW(Uncomplicated Firewall)将复杂的网络安全简化成了几句基础命令。它预装在 Ubuntu 24.04 LTS 中,几步操作就能解决端口裸奔问题。

配置 IPv6 支持并拦截未知流量

大多数云主机默认分配 IPv6 地址。如果不加限制,攻击者能绕过传统的 IPv4 防线。防火墙必须对双栈网络一视同仁。建立防线的第一步,是拒绝一切未经授权的访问。

编辑 UFW 默认配置文件,确认开启 IPv6 支持:

sudo nano /etc/default/ufw

确认文件中包含以下配置:

IPV6=yes

修改后,设置严格的默认进出站规则:

sudo ufw default deny incoming
sudo ufw default allow outgoing

这两条命令切断了外界主动发起的所有连接,同时允许服务器内部程序访问外部网络(如下载包或请求外部 API)。执行 sudo ufw status verbose 查看到的默认策略,就是网络安全的基石。

放行 SSH 端口预防远程失联

启用防火墙前如果不给 SSH 留通道,系统重启后就会失联。服务器安全加固必须兼顾日常的可运维性。

通过服务名放行标准 SSH 端口:

sudo ufw allow ssh

如果修改了非标准端口(如 2222),需直接指定端口号与协议:

sudo ufw allow 2222/tcp

执行后终端提示规则已添加。此时尚未激活防火墙,但通过 sudo ufw show added 能确认管理通道已在放行列表中。这排除了被系统拦在门外的风险。

开启速率限制抵御暴力破解

仅放行端口只能解决登录需求,脚本小子的密码字典每秒能尝试几百次。UFW 原生支持针对特定端口的连接频率限制。

对 SSH 端口启用限速规则:

sudo ufw limit ssh

一旦同一个源 IP 地址在 30 秒内发起 6 次以上新连接,UFW 会直接阻断该 IP。这个机制巧妙拦截了自动化的爆破脚本,且不影响正常登录。这比安装 Fail2ban 简单得多,适合作为第一道防波堤。

放行 Web 业务与锁定来源 IP

当服务器搭建网站或数据库时,需要精准开放特定端口。权限最小化原则要求只开必须开的端口,对敏感服务还要限制请求来源。

开放标准 HTTP 与 HTTPS 端口:

sudo ufw allow http
sudo ufw allow https

对于数据库等内部核心服务,绝不能对外暴露。只允许应用服务器 203.0.113.4 访问 3306 端口:

sudo ufw allow from 203.0.113.4 to any port 3306

通过指定 from 参数,你为核心数据建了一道白名单围栏。用 sudo ufw status numbered 检查规则序号,就能看到刚刚添加的访问控制规则。

激活防火墙并清理废弃规则

所有规则部署完毕后,最后一步是让它们真正生效。业务变更带来的废弃规则也要及时清理,避免留下隐患。

正式激活 UFW 防火墙:

sudo ufw enable

遇到「可能中断现有 SSH 连接」的提示,输入 y 确认。

如果某个业务下线,需要清理对应的端口放行规则。通过序号删除是防范误操作的做法:

sudo ufw status numbered
sudo ufw delete 2

确认删除后,被释放的端口立刻回到静默阻断状态。定期清理未使用端口,是将攻击面降到最低的关键运维习惯。

常见问题(FAQ)

启用 UFW 后为什么有些 Docker 容器依然能从公网直接访问?

Docker 默认会直接修改 iptables 规则做端口映射,这个操作的优先级在 UFW 规则链之前。必须在 Docker 的 daemon.json 中禁用 iptables 修改(添加 "iptables": false),或者改用本地环回地址映射容器端口,再由 Nginx 代理对外服务。

怎么查看防火墙到底拦截了哪些异常流量?

执行 sudo ufw logging on 开启系统日志。相关记录保存在 /var/log/ufw.log 中。如果有外部设备频繁扫描你的服务器,日志里会留下大量的 UFW BLOCK 记录,展示对方源 IP 和尝试探测的目标端口。

误操作把所有规则搞乱了,怎么快速恢复出厂设置?

执行 sudo ufw reset,它会清空所有自定义规则,并将防火墙重置为未激活状态。重置后,默认拒绝策略也需要重新手动配置,这是面临配置逻辑混乱时的重构手段。

如果这台服务器只做 3 件事,请确保执行:开启 IPv6 支持、ufw default deny incoming 封锁全网,以及 ufw limit ssh 护住管理通道。安全的本质是从一开始就不给攻击者留出闲置的敞口。

参考链接:

  • Ubuntu Community Help Wiki - UFW