InfrawireInfrawire 标志文档

在 VPS 上安装和配置 UFW

本指南将教您如何安装和配置 UFW(简单防火墙),这是 Linux 的一个简单但有效的防火墙。UFW 使管理 VPS 服务器上的防火墙规则变得更加容易。

📋 先决条件

  • 具有 root 或 sudo 访问权限的 VPS 服务器
  • 活动的 SSH 连接
  • Ubuntu/Debian(命令适用于这些发行版)

📥 安装 UFW

在 Ubuntu/Debian 上安装

Bash
sudo apt update sudo apt install ufw -y

验证安装

Bash
# 检查 UFW 状态 sudo ufw status

如果 UFW 未激活,您将看到消息:Status: inactive

⚙️ 基本配置

设置默认规则

Bash
# 阻止所有传入,允许传出 sudo ufw default deny incoming sudo ufw default allow outgoing

允许基本连接

Bash
1# 允许 SSH(端口 22)- 非常重要! 2sudo ufw allow 22/tcp 3 4# 允许 HTTP 和 HTTPS(如果您有 Web 服务器) 5sudo ufw allow 80/tcp 6sudo ufw allow 443/tcp

启用 UFW

Bash
# 启用防火墙 sudo ufw enable

在询问时用 y 确认。

🔧 高级规则

允许特定端口

Bash
1# 允许 TCP 端口 2sudo ufw allow 8080/tcp 3 4# 允许 UDP 端口 5sudo ufw allow 53/udp 6 7# 允许特定协议的端口 8sudo ufw allow 3306/tcp # MySQL 9sudo ufw allow 5432/tcp # PostgreSQL

允许特定 IP

Bash
1# 允许来自某个 IP 的所有连接 2sudo ufw allow from 192.168.1.100 3 4# 为某个 IP 允许特定端口 5sudo ufw allow from 192.168.1.100 to any port 22 6 7# 允许 IP 范围 8sudo ufw allow from 10.0.0.0/8

阻止 IP 或端口

Bash
1# 阻止 IP 2sudo ufw deny from 192.168.1.100 3 4# 阻止端口 5sudo ufw deny 3306/tcp

📊 规则管理

列出所有规则

Bash
1# 简单状态 2sudo ufw status 3 4# 带编号的详细状态 5sudo ufw status numbered 6 7# 非常详细的状态 8sudo ufw status verbose

删除规则

Bash
1# 按编号删除(使用 status numbered 找到) 2sudo ufw delete 3 3 4# 按规则删除 5sudo ufw delete allow 8080/tcp

重置所有规则

Bash
sudo ufw --force reset

🎯 配置示例

Web 服务器配置

Bash
1sudo ufw default deny incoming 2sudo ufw default allow outgoing 3sudo ufw allow ssh 4sudo ufw allow 80/tcp 5sudo ufw allow 443/tcp 6sudo ufw enable

数据库服务器配置

Bash
1sudo ufw default deny incoming 2sudo ufw default allow outgoing 3sudo ufw allow ssh 4sudo ufw allow from 10.0.0.0/8 to any port 3306 5sudo ufw enable

游戏服务器配置(例如 Minecraft)

Bash
1sudo ufw default deny incoming 2sudo ufw default allow outgoing 3sudo ufw allow ssh 4sudo ufw allow 25565/tcp # Minecraft 端口 5sudo ufw enable

📝 验证和监控

查看日志

Bash
1# 实时查看日志 2sudo tail -f /var/log/ufw.log 3 4# 查看最后条目 5sudo tail -n 50 /var/log/ufw.log

检查详细状态

Bash
sudo ufw status verbose

此命令显示:

  • 防火墙状态(活动/非活动)
  • 默认规则
  • 所有活动规则
  • 网络接口

🔄 禁用 UFW(如需要)

Bash
1# 临时禁用 2sudo ufw disable 3 4# 重新启用 5sudo ufw enable

✅ 最佳实践

  1. 在启用之前始终允许 SSH:确保在启用防火墙之前允许 SSH 端口(22)。

  2. 最小权限原则:仅允许您的服务所需端口和 IP。

  3. 测试规则:在断开连接之前,测试一切是否正常工作。

  4. 监控日志:定期检查日志以检测入侵尝试。

  5. 使用 fail2ban:将 UFW 与 fail2ban 结合使用,以加强对暴力破解攻击的防护。

🆘 故障排除

我被锁定在服务器外

如果您在启用防火墙后被锁定:

  1. 使用您的凭据联系 Infrawire 支持
  2. 如果可用,请使用控制面板中的 VNC/KVM 控制台
  3. 直接连接并禁用 UFW:sudo ufw disable

规则不工作

Bash
1# 检查 UFW 是否已激活 2sudo ufw status 3 4# 检查规则顺序 5sudo ufw status numbered 6 7# 重新加载规则 8sudo ufw reload

UFW 与 Docker 冲突

如果您使用 Docker,需要配置 Docker 使其不与 UFW 规则冲突:

Bash
1# 编辑 Docker 配置 2sudo nano /etc/docker/daemon.json 3 4# 添加此配置 5{ 6 "iptables": false 7} 8 9# 重启 Docker 10sudo systemctl restart docker

📚 其他资源

❓ 常见问题

问:我可以将 UFW 与其他防火墙一起使用吗?
答:不可以,您应该一次只使用一个防火墙以避免冲突。

问:UFW 可以与 Docker 一起使用吗?
答:可以,但您需要配置 Docker 使其不与 UFW 规则冲突(请参阅故障排除部分)。

问:如何同时允许多个端口?
答:您可以使用循环或创建 bash 脚本来自动化添加规则。

问:我可以在 CentOS/RHEL 上使用 UFW 吗?
答:可以,但安装可能不同。请查阅您的发行版文档。


配置顺利!🚀