UFW 详解:为 Linux 打造的“不复杂”防火墙
UFW 成功地在简单性与功能性之间找到了平衡。对于个人桌面用户、云服务器初学者甚至多数生产环境,UFW 足以应对 90% 以上的防火墙需求。它隐藏了底层 iptables 的复杂性,同时又保留了足够的灵活性。如果你正在管理一台 Linux 服务器,不妨从开始,为你的系统筑起第一道坚实的防线。
UFW 详解:为 Linux 打造的“不复杂”防火墙

文章目录
在 Linux 系统中,防火墙的核心是 Netfilter 框架,而传统的管理工具如
iptables 虽然功能强大,但其复杂的语法和链式规则往往让新手望而却步,即使是经验丰富的管理员也难免配置出错。UFW(Uncomplicated Firewall)正是为了解决这一痛点而生。本文将详细介绍 UFW 的设计理念、安装配置、规则管理、高级特性以及最佳实践,帮助你快速掌握这一实用的防火墙工具。
一、UFW 核心概念
UFW 的名字直译就是“不复杂的防火墙”。它的核心设计目标如下:
- 用户友好:通过简洁的命令行语法,让不具备防火墙专业知识的管理员也能快速上手。
- 底层封装:UFW 本身不进行数据包过滤,而是作为一个前端工具,将用户输入的规则自动转换为底层
iptables或nftables规则。 - 策略驱动:UFW 采用“默认策略 + 自定义规则”的工作模式,通常推荐“默认拒绝传入,默认允许传出”的安全基线。
- 应用配置(App Profile):支持通过应用程序名称(如
ufw allow ssh)直接放行服务,无需记忆端口号。
二、安装与基本配置
2.1 安装 UFW
绝大多数 Ubuntu 和 Debian 发行版都预装了 UFW。如果系统中没有,可以用包管理器安装:
# Ubuntu / Debian
sudo apt update
sudo apt install ufw -y
2.2 基本配置步骤
在启用防火墙之前,请务必按照以下顺序操作,否则可能导致服务器失联。
1. 设置默认策略
这是防火墙的安全基线。采用“拒绝所有传入,允许所有传出”的策略,既能保护系统免受外部主动连接,又不会影响系统对外访问:
sudo ufw default deny incoming
sudo ufw default allow outgoing
2. 允许必要的连接
这是最关键的一步! 对于远程服务器,一定要先放行 SSH,否则一旦启用防火墙,你将立即失去对服务器的控制:
sudo ufw allow ssh
如果你修改了 SSH 的默认端口(例如改为 2222),请使用:
sudo ufw allow 2222/tcp
对于 Web 服务器,通常还需要放行 HTTP/HTTPS:
sudo ufw allow http
sudo ufw allow https
3. 启用防火墙
确认必要规则添加无误后,启用 UFW:
sudo ufw enable
启用后,可随时查看状态:
sudo ufw status # 简洁状态
sudo ufw status verbose # 详细状态(包括默认策略、日志级别等)
sudo ufw status numbered # 显示规则编号(便于删除)
三、规则管理
UFW 支持灵活的规则定义,从简单的端口放行到基于 IP、子网、网卡的高级筛选。
3.1 基础规则
| 操作 | 命令示例 |
|---|---|
| 允许 TCP 端口 8080 | sudo ufw allow 8080/tcp |
| 拒绝 UDP 端口 53 | sudo ufw deny 53/udp |
| 允许来自特定 IP 的所有访问 | sudo ufw allow from 192.168.1.100 |
| 拒绝整个 C 段 | sudo ufw deny from 203.0.113.0/24 |
3.2 高级筛选
按端口和子网组合:允许局域网访问特定端口(例如 3306 的 MySQL):
sudo ufw allow from 192.168.1.0/24 to any port 3306 proto tcp
按网络接口:只允许从内部网卡 eth1 发起的 SSH 连接:
sudo ufw allow in on eth1 to any port 22
3.3 规则维护
- 删除规则:可以先
sudo ufw status numbered查看编号,再用sudo ufw delete <编号>删除;也可以直接重复添加命令并在前面加delete,如sudo ufw delete allow 8080/tcp。 - 重置所有规则:
sudo ufw reset会将 UFW 恢复到初始未启用状态。 - 试运行:在修改重要规则前,可使用
--dry-run参数预览实际生成的 iptables 规则,避免误操作。
四、高级特性
4.1 端口范围
可以一次性放行一段连续端口,例如允许 8000-8010 端口的 TCP 流量:
sudo ufw allow 8000:8010/tcp
4.2 应用配置(App Profiles)
UFW 可以读取 /etc/ufw/applications.d/ 中的配置文件,或系统预定义的应用。查看可用应用:
sudo ufw app list
示例输出:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
通过应用名称快速添加规则:
sudo ufw allow 'Apache Full'
4.3 速率限制(Rate Limiting)
limit 命令用于防止暴力破解。它会限制同一个 IP 在 30 秒内最多建立 6 次新连接:
sudo ufw limit ssh
对 SSH 端口启用速率限制是一个非常有效的安全加固手段。
4.4 日志管理
通过调整日志级别,可以在性能和可审计性之间取得平衡:
sudo ufw logging on # 开启日志(默认级别 low)
sudo ufw logging medium # 级别可选:off/low/medium/high
日志默认写入 /var/log/ufw.log,可以使用 tail -f 实时查看:
sudo tail -f /var/log/ufw.log
五、UFW 与 iptables 的深度关系
很多人会问:我该用 UFW 还是 iptables?答案是——它们不是二选一的对立关系。
- 本质区别:
iptables是直接操作内核 Netfilter 的用户态工具,功能极为强大,但语法晦涩。UFW 则是封装在iptables之上的简化层。 - 相互查看:执行
sudo iptables -L可以看到 UFW 生成的底层规则,规则链名通常以ufw-开头。 - 何时绕开 UFW:当你需要实现策略路由、复杂的 NAT 重定向、字符串匹配或 CONNMARK 等高级功能时,UFW 无法直接支持,此时仍需手动编写 iptables 规则。
- 共存问题:两者可以共存,但手动添加的 iptables 规则可能会与 UFW 生成的规则产生冲突。建议要么完全使用 UFW,要么彻底停用 UFW 后手动管理 iptables。
六、安全最佳实践
以下实践可以帮助你构建一个安全可靠的防火墙策略:
- 坚持最小权限原则:
deny incoming/allow outgoing是经过验证的默认策略。 - 保护 SSH:
- 启用 UFW 前,务必先
allow ssh。 - 修改 SSH 服务端口(编辑
/etc/ssh/sshd_config),并配合ufw limit [新端口]/tcp。 - 若仅需内网或特定 IP 访问 SSH,使用
allow from <IP> to any port 22。
- 启用 UFW 前,务必先
- 先放行,后启用:在远程操作时,若需删除现有 SSH 规则或修改默认策略,请务必先通过另一个终端保持一条存活连接,或者预先添加备用管理途径(如带外管理网卡或 IPMI)。
- 定期审计规则:运行
sudo ufw status numbered检查规则列表,及时删除不必要的规则。 - 开启并监控日志:
ufw logging medium配合日志分析工具(如 fail2ban)可以自动封禁恶意 IP。
七、图形界面:GUFW
如果你不太习惯命令行,可以安装 GUFW:
sudo apt install gufw
启动后(通常可在系统设置中找到“防火墙”图标),你将看到一个图形化界面,可以直观地开关防火墙、调整默认策略、添加或删除规则。GUFW 与 UFW 命令行的状态完全同步,适合桌面 Linux 用户。
八、结语
UFW 成功地在简单性与功能性之间找到了平衡。对于个人桌面用户、云服务器初学者甚至多数生产环境,UFW 足以应对 90% 以上的防火墙需求。它隐藏了底层 iptables 的复杂性,同时又保留了足够的灵活性。如果你正在管理一台 Linux 服务器,不妨从 sudo ufw enable 开始,为你的系统筑起第一道坚实的防线。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)