Ubuntu VPS 配置 UFW 防火墙防护攻击

目录

  1. UFW 是什么及为何需要防火墙
  2. 前置条件
  3. 检查状态并启用 UFW
  4. 设置默认策略
  5. 开放必要端口
  6. 管理 UFW 规则
  7. 封锁可疑 IP
  8. 配置限速
  9. 日志与监控
  10. 常用 UFW 命令参考
  11. 常见问题(FAQ)
  12. 总结

UFW 是什么?为何 VPS 需要防火墙?

UFW(Uncomplicated Firewall,简易防火墙)是 iptables 的前端工具,随 Ubuntu 预装,让系统管理员无需编写复杂的 iptables 语法即可管理防火墙规则。

直接连接互联网的 VPS 时刻面临各种攻击威胁——SSH 暴力破解、端口扫描、对未授权服务的非法访问。防火墙充当"守门员",检查进出 VPS 的每一个数据包。

💡 关键事实:没有防火墙的 VPS 通常在部署后几分钟内就会被端口扫描。一旦存在漏洞服务暴露,可能立即遭到利用。

UFW 适用场景:

前置条件

开始前请确认以下条件:

⚠️ 重要提示:启用 UFW 之前,务必先允许 SSH 端口。否则启用后新的 SSH 连接将被阻断,需要通过服务商 VNC 控制台才能修复。

检查状态并启用 UFW

首先验证 UFW 已安装并检查当前状态:

sudo apt update
sudo apt install ufw -y

# 检查当前状态
sudo ufw status verbose

若 UFW 尚未启用,将显示 Status: inactive,请先配置基础规则再启用。

ℹ️ Ubuntu 20.04+ 已预装 UFW,无需额外安装。

设置默认策略

默认策略定义防火墙在无特定规则时的基础行为。最佳实践是"拒绝所有入站,允许所有出站":

# 默认拒绝所有入站连接
sudo ufw default deny incoming

# 允许所有出站连接(VPS 可自由对外通信)
sudo ufw default allow outgoing

此"白名单"方式比允许一切再逐个封锁更安全,是服务器安全的行业标准做法。

开放必要端口(SSH、HTTP、HTTPS)

设置默认拒绝后,在启用 UFW 之前开放必要端口:

# SSH(关键 — 必须在 ufw enable 之前执行)
sudo ufw allow ssh
# 或直接指定端口
sudo ufw allow 22/tcp

# Web 服务器
sudo ufw allow http
sudo ufw allow https
# 等价于:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 若 SSH 使用自定义端口(如 2222)
sudo ufw allow 2222/tcp

# 启用 UFW(仅在允许 SSH 之后执行)
sudo ufw enable

运行 ufw enable 后系统会提示确认,输入 y 并回车即可。

管理 UFW 规则

查看所有现有规则(带编号,便于精确删除):

# 简单查看
sudo ufw status

# 带编号的详细视图
sudo ufw status numbered

# 按编号删除规则(如删除规则 #3)
sudo ufw delete 3

# 按规则内容删除
sudo ufw delete allow 8080/tcp

ℹ️ 使用 ufw delete allow 删除规则时,IPv4 和 IPv6 规则将同时被删除。

封锁可疑 IP

若发现某 IP 持续扫描或攻击服务器,可立即封锁:

# 封锁单个 IP
sudo ufw deny from 192.168.1.100

# 封锁整个子网
sudo ufw deny from 10.20.0.0/16

# 仅阻止该 IP 访问特定端口
sudo ufw deny from 203.0.113.1 to any port 22

# 查看当前封锁的 IP
sudo ufw status | grep DENY

deny 规则立即生效,且优先于后来添加的 allow 规则进行评估。

配置限速(Rate Limiting)

UFW 内置限速功能,无需安装 Fail2Ban 即可防止暴力破解:

# 限制 SSH 连接频率
sudo ufw limit ssh
# 或
sudo ufw limit 22/tcp

limit 命令将封锁在 30 秒内连接尝试超过 6 次的 IP,60 秒后自动解封。

💡 对于多用户登录的服务器,建议将 ufw limit ssh 与 Fail2Ban 结合使用,构建多层防护。

日志记录与监控

启用日志以追踪防火墙的拦截情况:

# 启用日志(级别:low、medium、high)
sudo ufw logging low

# 实时查看日志
sudo tail -f /var/log/ufw.log

# 通过 journalctl 查看
sudo journalctl -f | grep UFW

# 统计过去 24 小时的拦截次数
sudo grep -c "UFW BLOCK" /var/log/ufw.log 2>/dev/null || \
  sudo journalctl --since "24 hours ago" | grep -c "UFW BLOCK"

low 日志级别适合生产环境——记录拦截数据包而不产生过多 I/O 开销。

常用 UFW 命令参考表

命令 效果
sudo ufw status verbose显示状态和所有规则
sudo ufw enable启用 UFW
sudo ufw disable禁用 UFW(保留规则)
sudo ufw reset重置为默认值(删除所有规则)
sudo ufw allow 80/tcp开放 TCP 端口 80
sudo ufw deny 3306封锁端口 3306(MySQL)
sudo ufw limit ssh限制 SSH 连接频率
sudo ufw delete allow 80/tcp删除端口 80 的开放规则
sudo ufw allow from 203.0.113.0/24允许整个子网访问
sudo ufw deny from 198.51.100.0/24封锁整个子网
sudo ufw logging medium设置日志级别为 medium
sudo ufw app list列出可用的应用配置文件

常见问题(FAQ)

UFW 与 iptables 有什么区别?
UFW 是 iptables 的简化前端。iptables 功能强大但语法复杂,UFW 将简单命令自动转换为 iptables 规则,显著降低日常防火墙管理难度。
启用 UFW 会中断 SSH 连接吗?
如果在 ufw enable 之前运行了 ufw allow ssh,当前会话不受影响。若忘记允许 SSH,新连接将被阻断,需通过服务商 VNC 控制台添加 SSH 规则后恢复访问。
UFW 限速是如何工作的?
ufw limit 封锁在 30 秒内尝试连接超过 6 次的 IP,60 秒后自动解封。无需额外工具即可提供基础暴力破解防护。
UFW 支持 IPv6 吗?
支持,但需先在 /etc/default/ufw 中设置 IPV6=yes。之后添加的规则将同时作用于 IPv4 和 IPv6。
UFW 和 Fail2Ban 可以同时使用吗?
完全可以,两者配合极佳。Fail2Ban 监控日志中的登录失败记录,自动向 UFW/iptables 添加封锁规则,形成多层防护体系。
如何将 UFW 重置为初始状态?
运行 sudo ufw reset 将删除所有规则并禁用 UFW,恢复至初始状态,然后按需重新配置。

总结

UFW 是配置简便、效果显著的防火墙,随 Ubuntu 预装无需额外安装。通过几条命令即可实现:

对于需要更高安全级别的 VPS,建议将 UFW 与 Fail2Ban 结合使用,构建全面的多层防护体系。

准备好部署您的 Ubuntu VPS 了吗?

AsiaGB 提供泰国、新加坡和 OVHcloud 俄勒冈 (US-WEST-OR) VPS,SSD 存储,99% 在线率,中文客服支持。

查看全部 VPS 套餐