在 Linux 服务器上安装 UFW更新软件包,安装ufw软件包,设置默认策略(拒绝入站流量,允许出站流量),允许 SSH并启用防火墙。UFW(简易防火墙)是一个对新手友好的 iptables/nftables 界面,可帮助您快速保护开放端口,同时保持关键服务的可访问性。
保护一台全新的 Linux 服务器应该从防火墙开始。在本指南中,您将学习如何在 Linux 服务器环境(基于 Ubuntu/Debian 和 RHEL 的系统)上安装 UFW,配置安全的默认设置,打开必要的端口,并应用生产环境中常用的最佳实践。我将分享实用的步骤、实际技巧以及需要避免的常见陷阱。
什么是UFW?为什么要使用它?

UFW(Uncomplicated Firewall,简易防火墙)是一个命令行工具,可以简化 Linux 防火墙的配置。 management。它在iptables/nftables之上提供了可读性更强的语法,使得定义诸如“允许”之类的规则变得更加容易。 SSH或“允许 443/tcp”。它在 Ubuntu 服务器上尤其流行,但也可通过 EPEL 在 Debian 和 RHEL 衍生版本上使用。
为什么选择UFW?
- 语法对初学者友好,默认值可预测
- 快速开启/关闭端口和服务
- 支持 IPv4 以及 IPv6
- 常用应用程序的配置文件(Nginx, Apache,打开SSH)
- 在VPS上运行良好。 专用服务器以及本地主机
先决条件和安全检查清单
在 Linux 服务器环境中安装 UFW 之前,请确认满足以下先决条件。这可以避免您被锁定在服务器之外,尤其是在远程 VPS 实例上。
- SSH ACCESS 具有 sudo 权限
- 您必须保持开放的服务端口(例如,22/SSH(80/HTTP,443/HTTPS)
- 与您的计划(AWS、GCP、Azure)相匹配的云防火墙/安全组
- 控制台/串口访问作为一种安全保障(大多数主机提供商都提供此服务)
黄金法则:永远允许 SSH 启用 UFW 之前。
如何在 Ubuntu 和 Debian 上安装 UFW
Ubuntu 在其主要软件仓库中自带 UFW,并且通常已预装。如果没有预装,请使用 apt 命令安装。
sudo apt update
sudo apt install ufw -y
# Check status (should be inactive before you configure it)
sudo ufw status verbose设置安全默认值,允许 SSH然后启用UFW:
# Deny unsolicited inbound, allow all outbound
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow SSH (use application profile or port)
sudo ufw allow OpenSSH
# or
sudo ufw allow 22/tcp
# Enable the firewall
sudo ufw enable
# Verify
sudo ufw status numbered
sudo ufw status verbose在 Debian 系统中,命令完全相同。请确保您的软件包列表是最新的,并且您已允许安装。 SSH 启用之前。
如何在 RHEL、CentOS、AlmaLinux 和 Rocky 上安装 UFW
基于 RHEL 的发行版通常默认使用 firewalld。您仍然可以通过从 EPEL 软件仓库安装 UFW 来使用它。请决定是否从 firewalld 切换到 UFW;切勿同时运行这两个程序。
# Enable EPEL
sudo dnf install epel-release -y
# Install UFW
sudo dnf install ufw -y
# Stop and disable firewalld if you intend to use UFW instead
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# Enable UFW service at boot on some RHEL-based systems
sudo systemctl enable ufw
# Configure and enable as usual
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verbose如果您希望保留 firewalld(推荐用于原生 RHEL 环境),则可以跳过 UFW 并直接配置 firewalld。这完全取决于您的个人偏好;两者皆可。 manage 底层使用了 nftables/iptables。
UFW 基本配置步骤
在 Linux 服务器系统上安装 UFW 后,应用以下核心配置以保护您的机器并保持其功能。
设置默认策略并启用
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status允许常用服务(网页、邮件、数据库)
只打开你需要的内容。对于 Web 服务器:
# HTTP and HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Alternatively, use application profiles if present
sudo ufw app list
sudo ufw allow "Nginx Full" # opens 80 and 443
sudo ufw allow "Apache Full"对于数据库(除非必要,否则切勿公开):
# MySQL/MariaDB (3306) - ideally restrict to specific hosts
sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp
# PostgreSQL (5432)
sudo ufw allow from 203.0.113.10 to any port 5432 proto tcp允许非标准 SSH 港口
如果你跑步 SSH 如果未使用自定义端口(例如 2222),则允许该端口访问,并移除端口 22 的访问权限。
sudo ufw allow 2222/tcp
# Optional: deny default 22 if not used
sudo ufw delete allow 22/tcp
sudo ufw reload仅允许特定 IP 地址或子网
限制对管理端口的访问(通过源 IP 地址),以减少攻击面。
# Restrict SSH to an office IP
sudo ufw allow from 198.51.100.25 to any port 22 proto tcp
# Allow a whole subnet (CIDR)
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp端口范围和协议
# Allow a TCP port range (e.g., passive FTP 40000-40100)
sudo ufw allow 40000:40100/tcp
# Allow UDP (e.g., DNS, WireGuard)
sudo ufw allow 53/udp
sudo ufw allow 51820/udp管理和审核UFW规则
保持规则集简洁且易于审核。这些命令有助于维护秩序。
# List current rules with numbers
sudo ufw status numbered
# Delete a rule by number
sudo ufw delete 3
# Disable or re-enable UFW
sudo ufw disable
sudo ufw enable
# Reload after changes
sudo ufw reload
# Reset to factory defaults (use with caution)
sudo ufw reset备份时,请复制UFW用户规则文件:
sudo cp /etc/ufw/user.rules ~/user.rules.backup
sudo cp /etc/ufw/user6.rules ~/user6.rules.backup高级选项和最佳实践
启用 IPv6
如果您的服务器有 IPv6确保 UFW manage就这样。编辑配置并重启UFW。
sudo nano /etc/ufw/ufw.conf
# Set:
IPV6=yes
# Apply
sudo ufw disable
sudo ufw enable速率限制 SSH 以及其他敏感服务
限速技术通过限制重复连接来减少暴力攻击噪声。
# Limit SSH
sudo ufw limit 22/tcp
# Limit custom SSH port
sudo ufw limit 2222/tcp开启日志记录(谨慎操作)
UFW 可以记录丢包信息以进行诊断。一般情况下使用“低”设置,调试时可临时使用“中/高”设置。
# Enable logging
sudo ufw logging low
# Check logs
sudo tail -f /var/log/ufw.log # on some systems: /var/log/syslog使用应用程序配置文件
许多软件包会在 /etc/ufw/applications.d 目录下安装 UFW 配置。它们简化了同时打开多个端口的操作。
sudo ufw app list
sudo ufw app info "Nginx Full"
sudo ufw allow "Nginx Full"将 UFW 与 Fail2ban 结合使用
Fail2ban 会根据日志模式动态阻止恶意 IP 地址。它与 UFW 防火墙完美集成,无需替换防火墙规则即可添加临时封禁。
# Ubuntu/Debian
sudo apt install fail2ban -y
# RHEL-based
sudo dnf install fail2ban -y
# Basic enable
sudo systemctl enable --now fail2ban云防火墙、容器和UFW
At YouStable我们建议采用分层控制:先使用云安全组限制广泛访问,然后在每台虚拟机上部署 UFW 进行主机级过滤。确保两层控制都允许所需的端口;端口不匹配会导致“服务器上可以正常工作”的误解。
使用 Docker?Docker 会直接操作 iptables,并可能绕过 UFW 防火墙对容器流量的规则。请注意:
- 使用 -p 仅发布必要的端口
- 使用反向代理容器,仅暴露 80/443 端口
- 探索 Docker 守护进程选项和用户自定义网络
- 防火墙更改后测试容器可达性
对于 Kubernetes 和高级容器部署,主机防火墙与 CNI 插件可以共存。上线前,请对策略进行端到端验证。
UFW故障排除
如果启用 UFW 后出现问题,请按部就班地进行排查。
- 检查端口监听器:sudo ss -tulpen | grep LISTEN
- 验证规则:sudo ufw status numbered
- 查看日志:sudo tail -f /var/log/ufw.log(或 /var/log/syslog)
- 暂时允许所有出站和特定入站服务
- 检查云服务提供商的防火墙/安全组规则
- 对于远程锁定,请使用网络服务提供商的控制台禁用 UFW:sudo ufw disable
实际案例:安全的 LEMP 协议栈
以下是生产环境 LEMP 服务器的最小规则集: SSH 在端口 22 上, Nginx 在 80/443 上,以及 MySQL 仅限受信任的应用服务器。
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow "Nginx Full"
sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp
sudo ufw limit 22/tcp
sudo ufw logging low
sudo ufw enable
sudo ufw status verbose为什么 UFW 对接待至关重要以及如何 YouStable 帮助
防火墙可以降低风险敞口,并争取时间抵御自动扫描和机会主义攻击。UFW 的清晰性意味着更少的错误和更快的修复速度。如果您使用 UFW 进行托管, YouStable我们的专家可以预先加固您的 VPS 或专用服务器,为您的堆栈设置正确的 UFW 规则,并使其与云防火墙策略保持一致,以防止停机。
常见问题解答:在 Linux 服务器上安装 UFW
UFW 比 iptables 或 firewalld 更好吗?
UFW 并非“更好”,而是更简单。它是 iptables/nftables 的前端,专注于易用性。firewalld 是 RHEL 系统原生支持的,并与系统工具集成。选择 UFW 便于阅读和快速设置对于原生 RHEL 工作流程,可以使用 firewalld;对于精细控制,可以使用原始 iptables/nftables。
启用UFW会让我无法访问吗? SSH?
如果你在未允许的情况下启用它,它就可能会出现问题。 SSH 首先,始终运行 sudo ufw allow OpenSSH 在执行 `sudo ufw enable` 命令之前,请确保端口号正确(或端口号正确)。如果被锁定,请使用主机提供商的控制台禁用 UFW 并修复规则。
如何使用UFW打开端口?
使用 `sudo ufw allow PORT/PROTO` 命令,例如 `sudo ufw allow 443/tcp`。要按源 IP 地址限制流量,请使用:`sudo ufw allow from 203.0.113.5 to any port 443 proto tcp`。使用 `sudo ufw status` 命令进行验证。
UFW是否支持 IPv6?
是的。在 /etc/ufw/ufw.conf 文件中将 IPV6 设置为 yes,然后重新启用 UFW。 manage 都 IPv4 以及 IPv6 规则,确保对等性,这样您就不会无意中暴露服务。 IPv6.
如何允许指定端口范围或特定协议?
对于地址范围:sudo ufw allow 10000:10100/tcp。对于 UDP:sudo ufw allow 53/udp。为了清晰起见并确保最小权限原则,请始终指定 tcp 或 udp。
如何将UFW重置为默认设置?
运行 `sudo ufw reset` 命令。这将禁用 UFW 并删除所有规则。重新应用您所需的规则,允许访问。 SSH然后重新启用UFW。建议先备份/etc/ufw/user.rules文件。
UFW 是否支持 Docker?
Docker 会直接修改 iptables 规则,并可能绕过 UFW 防火墙链来处理容器流量。因此,请尽量减少已发布的端口数量,优先使用反向代理,并在更改后测试网络连接。对于复杂的网络配置,建议使用专用的网络策略或带有 Docker 感知规则的 firewalld 防火墙。
结语
在 Linux 服务器上安装 UFW 只需几分钟,即可显著提升基础安全性。设置保守的默认选项,仅开放必要的访问权限,并定期进行审计。如果您需要一款适用于您业务堆栈的生产级防火墙, YouStable 可以预先配置 UFW 以及服务器加固,以便快速启动并保持安全。