云服务器 Linux 系统防火墙 UFW 配置方法

第一部分:核心概念与安装检查

1. UFW 状态检查

首先,检查 UFW 是否已安装及当前状态。

bash

复制代码
# 查看状态 (Status: inactive 表示未启用,active 表示已启用)
sudo ufw status verbose

# 如果命令未找到,请先安装
# Ubuntu/Debian:
sudo apt update && sudo apt install ufw

# CentOS/RHEL (通常需要先启用EPEL仓库):
sudo yum install epel-release
sudo yum install ufw
sudo systemctl enable ufw --now
2. 云服务器的关键警告:确保不会锁死自己!

在云服务器上配置防火墙,最重要的一条原则 是:在启用 UFW 之前,必须确保允许你当前 SSH 连接的端口! 否则规则一旦生效,你会立刻被断开连接并无法再登录。

大多数云服务商(如 AWS、Azure、Google Cloud、阿里云、腾讯云)都有自己的安全组(Security Group) 机制。这是一个运行在云平台网络层面的防火墙,独立于你服务器内部的 UFW 或 iptables。

最佳实践建议:

  • 方法一(推荐): 优先使用云平台的安全组来设置主要的访问控制(如只允许你的IP访问SSH端口)。然后使用 UFW 作为服务器内部的第二道防线,管理应用层面的端口(如HTTP/HTTPS)。这样可以避免因配置失误导致服务器失联。

  • 方法二: 如果只想用 UFW,务必在执行下一步之前,先允许你的 SSH 端口。


第二部分:UFW 基本配置流程

步骤 1:重置为初始状态(可选)

如果你是第一次配置或想重新开始,可以先重置 UFW。

bash

复制代码
sudo ufw disable  # 先禁用
sudo ufw reset    # 重置所有规则
步骤 2:设置默认策略

设置默认策略是安全的基础。推荐的策略是默认拒绝所有传入连接,允许所有传出连接。这样服务器主动向外发起的连接是允许的,而外部未经允许的入站连接都会被拒绝。

bash

复制代码
sudo ufw default deny incoming  # 默认拒绝所有入站流量
sudo ufw default allow outgoing # 默认允许所有出站流量
步骤 3:允许必要的端口

根据你的服务器角色,允许特定的服务或端口。

  • 允许 SSH 连接(这是第一步,至关重要!)

    bash

    复制代码
    # 如果你的SSH端口是标准的22(强烈建议更改默认端口)
    sudo ufw allow ssh
    
    # 或者直接指定端口号,例如允许端口 2222
    sudo ufw allow 2222/tcp

    重要:如果你修改了 SSH 端口,这里一定要指定你实际使用的端口号。

  • 允许 Web 服务

    bash

    复制代码
    # 允许 HTTP (80) 和 HTTPS (443)
    sudo ufw allow http
    sudo ufw allow https
    
    # 等价于
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
  • 允许其他应用(按需)

    bash

    复制代码
    # 允许 MySQL (3306)
    sudo ufw allow 3306/tcp
    
    # 允许自定义端口,如 3000 端口的Node.js应用
    sudo ufw allow 3000/tcp
    
    # 允许来自特定IP的访问,例如只允许IP 1.2.3.4 访问SSH
    sudo ufw allow from 1.2.3.4 to any port 22
步骤 4:启用 UFW

在确认已允许 SSH 端口后,启用防火墙使规则生效。

bash

复制代码
sudo ufw enable

系统会提示"命令可能会破坏现有的 SSH 连接,是否继续?",因为你已经允许了 SSH 端口,所以输入 y 并回车。

步骤 5:验证规则

再次查看状态,确认规则已按预期添加。

bash

复制代码
sudo ufw status verbose
# 或者以编号形式显示,便于管理
sudo ufw status numbered

输出示例:

text

复制代码
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
2222/tcp                   ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)                ALLOW       Anywhere (v6)
2222/tcp (v6)               ALLOW       Anywhere (v6)

第三部分:高级管理与常用命令

1. 拒绝连接

bash

复制代码
# 明确拒绝某个端口的所有连接(连接方会收到“拒绝”响应)
sudo ufw deny 8000/tcp
2. 删除规则

有两种方法,推荐使用 numbered 方式。

  • 方法A(通过规则本身删除):

    bash

    复制代码
    sudo ufw delete allow http  # 删除当初添加的 'allow http' 规则
  • 方法B(通过编号删除,更安全直观):

    bash

    复制代码
    sudo ufw status numbered    # 查看带编号的规则列表
    sudo ufw delete 2           # 删除编号为 2 的规则
3. 限制访问(模拟fail2ban)

limit 规则可以自动限制某端口的频繁连接,用于防止暴力破解,非常有用。

bash

复制代码
# 对SSH端口启用limit规则,默认是每分钟最多6次连接,超过则拒绝
sudo ufw limit ssh

# 或者指定端口
sudo ufw limit 2222/tcp
4. 禁用 UFW

如果需要临时关闭防火墙(排查问题等)。

bash

复制代码
sudo ufw disable
5. 查看 UFW 的日志

UFW 的日志位于 /var/log/ufw.log。查看被拒绝的连接尝试,有助于排查问题。

bash

复制代码
sudo tail -f /var/log/ufw.log

第四部分:云服务器特定场景示例

场景:部署一个 Web 应用

假设你的应用使用端口 3000,并且使用 Nginx 作为反向代理。

  • UFW 配置:

    bash

    复制代码
    # 设置默认策略
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    
    # 允许SSH(你的自定义端口,例如2222)
    sudo ufw allow 2222/tcp
    
    # 允许HTTP和HTTPS(Nginx将处理这些请求并代理到3000端口)
    sudo ufw allow http
    sudo ufw allow https
    
    # 通常不需要直接对外开放3000端口,因为Nginx在内部访问它
    # 如果你的应用集群需要内部通信,可以允许内网IP段
    # sudo ufw allow from 10.0.0.0/8 to any port 3000
    
    # 启用UFW
    sudo ufw enable
场景:锁紧服务器,只允许特定管理IP访问SSH

bash

复制代码
# 先清空现有规则
sudo ufw reset

# 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 假设你的办公室公网IP是 203.0.113.100
sudo ufw allow from 203.0.113.100 to any port 2222

# 允许所有IP访问Web服务
sudo ufw allow http
sudo ufw allow https

# 谨慎地启用UFW,并确保你有其他方式访问服务器(如云控制台的VNC)以防配错
sudo ufw enable

总结

  1. 顺序是关键默认拒绝 -> 允许SSH -> 允许其他服务 -> 启用

  2. 云平台安全组:理解并利用好云服务商提供的安全组,它与 UFW 是双重保险。

  3. 切勿锁死自己 :确保在 ufw enable 前,SSH 规则已正确添加。

  4. 使用 status numbered 来管理规则比回忆规则本身更容易。

  5. 善用 limit 规则来保护 SSH 等敏感服务。

相关推荐
wifi chicken28 分钟前
Linux 端口扫描及拓展
linux·端口扫描·网络攻击
旺仔.29143 分钟前
Linux 信号详解
linux·运维·网络
放飞梦想C1 小时前
CPU Cache
linux·cache
Hoshino.411 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
AI周红伟2 小时前
周红伟:《OpenClaw安全防控:OpenClaw++Skills智能体安全部署、实操和企业应用实操》
人工智能·阿里云·云计算·腾讯云·openclaw
恒创科技HK2 小时前
通用型云服务器与计算型云服务器:您真正需要哪些配置?
运维·服务器
吴佳浩 Alben3 小时前
GPU 生产环境实践:硬件拓扑、显存管理与完整运维体系
运维·人工智能·pytorch·语言模型·transformer·vllm
播播资源3 小时前
CentOS系统 + 宝塔面板 部署 OpenClaw源码开发版完整教程
linux·运维·centos
源远流长jerry4 小时前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip
学不完的4 小时前
Docker数据卷管理及优化
运维·docker·容器·eureka