本文可能包含联盟链接 — 我们团队只推荐经过亲自测试的服务。编辑政策

VPS安全指南

UFW防火墙完整指南:Ubuntu VPS防火墙配置教程 2026

作者:CloudPicked编辑团队 · 最后更新:2026年10月 · 阅读时间约12分钟

Ubuntu VPS服务器UFW防火墙安全配置

当您在 DigitalOcean、Bangmod Cloud 或其他服务商开通新的VPS时,服务器默认对所有端口开放——恶意机器人在服务器上线后几分钟内就会开始扫描。

UFW(Uncomplicated Firewall,简易防火墙)是Ubuntu默认的防火墙工具,旨在让iptables配置变得简单易用,无需深入了解网络知识。本指南将带您从零开始完成生产级UFW配置。

重要警告:始终在 sudo ufw enable 之前运行 sudo ufw allow ssh。默认策略拒绝所有入站流量——跳过这一步会立即将您锁定在服务器外。

目录

  1. UFW是什么及其工作原理
  2. 安装和启用UFW
  3. UFW基本命令
  4. Web服务器防火墙规则
  5. 使用UFW保护SSH
  6. UFW速率限制
  7. 应用程序配置文件
  8. 日志配置
  9. 高级规则与规则管理
  10. 生产服务器最佳实践
  11. 常见问题

UFW是什么及其工作原理

UFW全称 Uncomplicated Firewall(简易防火墙),由Ubuntu团队开发,旨在简化iptables管理。其目标是让普通用户无需记住iptables的链、表和规则语法即可配置防火墙。

根据官方Ubuntu Wiki:UFW提供了一种"用户友好的方式来创建IPv4或IPv6基于主机的防火墙",并且在所有Ubuntu版本上默认处于禁用状态。

UFW与iptables的区别

UFW不是替代iptables,而是作为iptables的前端自动生成规则。当您运行 sudo ufw allow 80 时,UFW会在后台自动将其转换为正确的iptables规则。

特性UFW直接使用iptables
复杂度简单 — 语法可读复杂 — 需要了解链/表
IPv6内置支持需要单独设置ip6tables
应用程序配置文件有(nginx、apache、openssh)无 — 必须手动指定端口
重启持久性自动需要手动保存/恢复
适用场景通用VPS、开发/生产高级网络管理员

安装和启用UFW

在Ubuntu 20.04 / 22.04 / 24.04上,UFW已预安装。如需重新安装:

sudo apt update
sudo apt install ufw -y

启用UFW之前,必须先放行SSH:

# 方式1:通过服务名放行SSH(推荐)
sudo ufw allow ssh

# 方式2:直接放行22端口
sudo ufw allow 22/tcp

# 方式3:如果您更改了SSH端口(例如2222)
sudo ufw allow 2222/tcp

然后启用UFW:

sudo ufw enable
# 输入y确认

检查状态:

sudo ufw status verbose

预期输出:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
默认策略:UFW默认设置为拒绝所有入站,允许所有出站 — 这是最安全的起点。您只需明确开放所需服务的端口即可。

UFW基本命令

查看状态

# 一般状态
sudo ufw status

# 详细状态(含默认策略)
sudo ufw status verbose

# 带编号的状态(用于删除特定规则)
sudo ufw status numbered

允许和拒绝

# 允许端口
sudo ufw allow <port>
sudo ufw allow <port>/tcp
sudo ufw allow <port>/udp

# 允许端口范围
sudo ufw allow 8000:8080/tcp

# 拒绝端口
sudo ufw deny <port>
sudo ufw deny <port>/tcp

删除规则

# 方式1:通过指定原始规则删除
sudo ufw delete allow 80/tcp

# 方式2:通过编号删除(来自ufw status numbered)
sudo ufw delete 3

重置和禁用

# 临时禁用UFW
sudo ufw disable

# 重置 — 删除所有规则并恢复默认
sudo ufw reset
警告:sudo ufw reset 会删除所有规则,包括SSH规则——在远程服务器上执行此命令而没有恢复控制台将导致您被锁定在外。

Web服务器防火墙规则

对于运行Nginx或Apache的VPS,需要开放以下端口:

# HTTP
sudo ufw allow 80/tcp

# HTTPS
sudo ufw allow 443/tcp

# 或使用应用程序配置文件(如果nginx/apache已安装)
sudo ufw allow 'Nginx Full'
sudo ufw allow 'Apache Full'

数据库服务器规则

# MySQL/MariaDB — 仅允许可信IP
sudo ufw allow from 192.168.1.100 to any port 3306

# PostgreSQL — 仅允许内部子网
sudo ufw allow from 10.0.0.0/8 to any port 5432

# Redis — 绝不对公网开放
sudo ufw deny 6379
绝不向互联网暴露数据库端口!MySQL (3306)、Redis (6379) 和 MongoDB (27017) 应只允许来自localhost或应用服务器IP的访问——对公网开放这些端口是严重的安全风险。

LAMP/LEMP Stack完整规则集

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

使用UFW保护SSH

22端口是暴力破解攻击的主要目标——机器人24小时不间断扫描。UFW提供多种SSH加固方法:

1. 仅允许可信IP访问SSH

# 只允许您的特定IP
sudo ufw allow from 203.0.113.5 to any port 22 proto tcp

# 允许整个办公室子网
sudo ufw allow from 203.0.113.0/24 to any port 22 proto tcp

2. 更改SSH端口

常见的加固方法是将SSH从22端口改为非标准端口(例如2222):

# 在/etc/ssh/sshd_config中将Port 22改为Port 2222
# 然后:
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp    # 仅在成功通过新端口重新连接后执行
sudo systemctl restart sshd

UFW速率限制

UFW内置速率限制功能——当某个IP在30秒内尝试连接超过6次时会被屏蔽。这对防止SSH暴力破解攻击非常有效:

sudo ufw limit ssh
# 或按端口号
sudo ufw limit 22/tcp

建议:在每台生产服务器上使用 ufw limit ssh

这一条命令能显著降低SSH暴力破解风险,无需安装Fail2ban。对于追求简洁的小型VPS部署来说是理想选择,设置后无需额外配置即可持续保护。

应用程序配置文件

某些已安装的应用程序会自动向UFW注册配置文件,使按名称放行变得更加简便:

# 列出可用配置文件
sudo ufw app list

# 示例输出:
# Available applications:
#   Apache
#   Apache Full
#   Apache Secure
#   Nginx Full
#   Nginx HTTP
#   Nginx HTTPS
#   OpenSSH

# 按配置文件名称放行
sudo ufw allow 'Nginx Full'     # 开放HTTP和HTTPS
sudo ufw allow 'Nginx HTTPS'    # 仅开放HTTPS
sudo ufw allow 'OpenSSH'        # 开放SSH

# 查看配置文件详情
sudo ufw app info 'Nginx Full'

日志配置

UFW日志帮助您追踪哪些流量被屏蔽了。根据Ubuntu文档,日志级别如下:

级别说明
off禁用所有日志
low仅记录被屏蔽的数据包(默认)
medium记录被屏蔽+不匹配任何规则的数据包
high记录所有数据包(含速率限制)
full记录所有数据包(无速率限制)
# 启用日志(默认=low)
sudo ufw logging on

# 设置特定级别
sudo ufw logging medium

# 禁用日志
sudo ufw logging off

日志写入 /var/log/ufw.log,实时监控:

sudo tail -f /var/log/ufw.log

高级规则与规则管理

按IP地址允许/拒绝

# 允许单个IP(所有端口)
sudo ufw allow from 203.0.113.5

# 允许单个IP访问特定端口
sudo ufw allow from 203.0.113.5 to any port 3306

# 屏蔽IP或子网
sudo ufw deny from 198.51.100.0/24

按网络接口允许

# 仅允许通过eth0进入的80端口流量
sudo ufw allow in on eth0 to any port 80

在指定位置插入规则

# 查看带编号的当前规则
sudo ufw status numbered

# 在第1位插入规则(最高优先级)
sudo ufw insert 1 allow from 203.0.113.5 to any port 22

生产服务器最佳实践

1. 最小权限原则

只开放服务实际需要的端口——每增加一个开放端口就增加一分攻击面。

2. UFW与云防火墙配合使用

DigitalOcean 等服务商提供在流量到达服务器之前就进行拦截的云级防火墙。同时使用两者——云防火墙作为外层防线,UFW作为基于主机的内层防护,实现纵深防御。

3. 重置前备份规则

sudo cp /etc/ufw/user.rules /etc/ufw/user.rules.backup
sudo cp /etc/ufw/user6.rules /etc/ufw/user6.rules.backup

4. 先在测试环境验证

在将防火墙规则更改应用到生产环境之前,始终先在测试服务器上验证。同时保持控制台或KVM访问权限开放,以防被锁定时恢复使用。

5. WordPress/通用VPS推荐规则集

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw limit ssh           # SSH加速率限制
sudo ufw allow 80/tcp        # HTTP
sudo ufw allow 443/tcp       # HTTPS
sudo ufw deny 3306/tcp       # 屏蔽公网MySQL访问
sudo ufw deny 6379/tcp       # 屏蔽公网Redis访问
sudo ufw enable

寻找安全配置简便的VPS?
AsiaGB.com提供配备DirectAdmin的VPS,支持泰语24小时全天候客服。

查看AsiaGB VPS

总结:UFW是VPS安全的基础

UFW只需不到5分钟即可配置完成,但能有效防御暴力破解攻击和未经授权的访问。开通新VPS后的立即行动清单:

  1. 首先放行SSH
  2. 启用UFW
  3. 放行所需端口(80、443)
  4. 启用 ufw limit ssh 防暴力破解
  5. 用 sudo ufw status verbose 验证配置

常见问题解答

UFW是什么?

UFW (Uncomplicated Firewall,简易防火墙) 是Ubuntu默认的防火墙管理工具,旨在简化iptables配置,提供简洁易读的命令语法。

Ubuntu默认启用UFW吗?

不会 — 根据官方Ubuntu Wiki,UFW在所有Ubuntu版本上默认处于禁用状态。您必须运行 sudo ufw enable 才能激活。

启用UFW前必须先设置规则吗?

必须 — 始终在 sudo ufw enable 之前运行 sudo ufw allow ssh。默认策略拒绝所有入站连接,若不提前放行SSH会被立即锁定在服务器外。

UFW和iptables有什么区别?

UFW是iptables的前端工具,自动将简单命令转换为iptables规则。底层仍使用iptables内核模块,但命令语法更简单易懂。

如何查看所有活跃的UFW规则?

运行 sudo ufw status verbose 查看所有规则和默认策略,或运行 sudo ufw status numbered 查看带行号的规则(便于删除特定规则)。

UFW支持IPv6吗?

支持 — UFW在同一命令中处理IPv4和IPv6。请确保 /etc/default/ufw 中设置了 IPV6=yes。