Ubuntu/Debian 推荐 UFW,需先设默认策略(deny incoming/allow outgoing)、放行 SSH 端口再启用;CentOS/RHEL 8+ 默认 firewalld,以 zone 为核心,用 --permanent 添加服务/端口后必须 --reload;云服务器须先配安全组,再配系统防火墙,双层防护。

Linux 运维中,选对防火墙工具并正确配置基础规则,是守住服务器边界的首要动作。Ubuntu/Debian 系统推荐用 UFW(简洁可靠);CentOS/RHEL 8+ 默认用 firewalld(动态策略、区域管理)。两者不兼容,不能同时启用同一套底层规则。下面按发行版和场景分述安装与基础配置要点。
Ubuntu/Debian:UFW 安装与最小化启用
UFW 在 Ubuntu 24.04/22.04/20.04 中已预装,但默认 未启用,直接运行 sudo ufw enable 会立即切断 SSH 连接——这是最常踩的坑。
- 先检查状态:
sudo ufw status verbose。若显示Status: inactive,说明尚未激活 - 设安全基线(必须在启用前执行):
sudo ufw default deny incomingsudo ufw default allow outgoing - 放行当前 SSH 端口(如改过端口,务必写实际值):
sudo ufw allow 22/tcp或sudo ufw allow 2222/tcp - 最后启用:
sudo ufw enable。成功后提示Firewall is active and enabled on system startup - 验证:
sudo ufw status numbered查看规则编号与顺序,确保 SSH 规则在前、默认策略生效
CentOS/RHEL 8+:firewalld 安装与区域策略
firewalld 是 systemd 管理的服务,默认已安装并启用。它以“区域(zone)”为核心概念,public 区域适用于公网暴露的服务器,trusted 仅用于内网可信环境。
- 确认服务状态:
sudo systemctl status firewalld。若为inactive,运行:sudo systemctl enable --now firewalld - 查看当前默认区域:
sudo firewall-cmd --get-default-zone(通常为public) - 开放必要服务(自动映射端口及协议):
sudo firewall-cmd --permanent --add-service=sshsudo firewall-cmd --permanent --add-service=httpsudo firewall-cmd --permanent --add-service=https - 重载使永久规则生效:
sudo firewall-cmd --reload - 查看当前生效规则:
sudo firewall-cmd --list-all(含服务、端口、富规则等)
通用基础规则操作对比
无论 UFW 还是 firewalld,核心目标一致:只开必需端口、限制非必要访问、避免自锁。关键差异在于语法逻辑和持久化方式。
-
开放单端口:
UFW →sudo ufw allow 3306/tcp
firewalld →sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload -
限制来源 IP 访问 SSH:
UFW →sudo ufw allow from 203.0.113.5 to any port 22
firewalld →sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.5" service name="ssh" accept' -
删除规则:
UFW 用编号删更安全:sudo ufw status numbered→sudo ufw delete 3
firewalld 必须带--permanent并重载:sudo firewall-cmd --permanent --remove-service=ftp && sudo firewall-cmd --reload
云服务器特别提醒
阿里云、腾讯云、AWS 等平台的安全组(Security Group)工作在网络入口第一层,优先于系统内防火墙。UFW 或 firewalld 规则只有在安全组放行后才能生效。
- 安全组应作为第一道防线:例如,SSH 端口只允许你办公室或家庭公网 IP 访问,而非
0.0.0.0/0 - UFW/firewalld 作为第二道防线:管控应用层行为,比如禁止某内网 IP 访问 Redis(6379),或限制 HTTP 请求速率
- 切勿依赖单一防护层。双层控制既防误配,也防横向移动


















