ufw 和 firewalld 在 Ubuntu 哪个配置更简单?

文章导读
在 Ubuntu 系统上,ufw 配置更简单,它是官方默认预装的工具,命令直观且无需理解复杂区域概念。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 一键安全配置脚本
  5. 怎么验证是否生效
  6. 常见坑
  7. 参考来源
A A

在 Ubuntu 系统上,ufw 配置更简单,它是官方默认预装的工具,命令直观且无需理解复杂区域概念。

先说结论:对于 Ubuntu 用户,优先选择 ufw,除非你有跨平台统一管理或动态规则的特殊需求。

  • 适合 Ubuntu 桌面及通用服务器场景
  • 重点看默认策略是否放行 SSH
  • 别忽略不要同时启用两个防火墙

命令速用版

ufw 的命令设计更像自然语言,firewalld 则需要指定区域和永久生效参数。

ufw 和 firewalld 在 Ubuntu 哪个配置更简单?
# ufw 开放 80 端口
sudo ufw allow 80/tcp

# firewalld 开放 80 端口(需指定 zone 和 permanent)
sudo firewall-cmd `--zone`=public `--add-port`=80/tcp `--permanent`
sudo firewall-cmd `--reload`

为什么会这样

ufw 全称 Uncomplicated Firewall,设计初衷就是简化 iptables 配置,Ubuntu 20.04 和 22.04 默认预装且启用服务。firewalld 则是 RHEL/CentOS 系的默认工具,引入“区域”(zone)概念来管理不同网络环境,功能更动态但配置层级更多。在 Ubuntu 上强行使用 firewalld 需要额外安装,且可能与系统默认网络管理工具产生冲突。

分步处理

如果你决定使用 ufw,按以下步骤操作:

  1. 检查状态:sudo ufw status,显示 inactive 表示未激活。
  2. 设置默认策略:sudo ufw default deny incoming,禁止所有入站连接。
  3. 放行必要端口:先放行 SSH 防止失联,sudo ufw allow 22/tcp
  4. 启用防火墙:sudo ufw enable

⚠️ 安全警告:远程服务器操作时,务必先放行 SSH 端口再启用防火墙,否则会导致连接中断。

ufw 和 firewalld 在 Ubuntu 哪个配置更简单?

若必须使用 firewalld(如混合环境管理):

  1. 安装:sudo apt install firewalld
  2. 启动:sudo systemctl start firewalld
  3. 注意:启用 firewalld 前建议禁用 ufw,避免规则冲突。

一键安全配置脚本

为避免手动操作遗漏导致锁死,可使用以下脚本快速安全启用 ufw:

ufw 和 firewalld 在 Ubuntu 哪个配置更简单?
#!/bin/bash
# 1. 放行 SSH 端口
sudo ufw allow 22/tcp
# 2. 设置默认拒绝入站
sudo ufw default deny incoming
# 3. 启用防火墙(`--force` 避免交互确认)
sudo ufw `--force` enable
# 4. 检查状态
sudo ufw status verbose

怎么验证是否生效

使用状态命令查看规则是否加载,并结合外部端口扫描确认。

# 查看 ufw 状态及规则
sudo ufw status verbose

# 查看 firewalld 状态
sudo firewall-cmd `--list-all`

# 检查服务是否运行
systemctl status ufw
systemctl status firewalld

常见坑

  • 锁死风险:启用防火墙前未放行 SSH 端口,导致远程连接断开。
  • 双重防火墙:同时运行 ufw 和 firewalld,规则可能互相覆盖或冲突,建议只留一个。
  • 生效延迟:firewalld 添加永久规则后需 reload,ufw 修改规则后通常自动生效但建议检查状态。
  • 后端差异:Ubuntu 22.04 上 ufw 后端可能使用 nftables,而旧版使用 iptables,但命令保持一致。

参考来源

建议查阅 Ubuntu 官方文档或使用 man ufwman firewalld 获取最新信息。