云服务器 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 等敏感服务。

相关推荐
慧星云2 分钟前
魔多 AI 支持 Qwen-lmage 在线训练 :复杂文字也能精准生成
人工智能·云计算·aigc
EnigmaCoder4 分钟前
【Linux】用户与用户组管理
linux·运维·服务器·数据库
TG_yilongcloud27 分钟前
AWS亚马逊云账号注册指南
服务器·云计算·aws
池易31 分钟前
Debian/Ubuntu 系统 Redis 安装部署
运维
tan77º1 小时前
【项目】分布式Json-RPC框架 - 抽象层与具象层实现
linux·服务器·c++·分布式·tcp/ip·rpc·json
xiaok1 小时前
chown和chmod的使用
linux
mit6.8241 小时前
[pilot智驾系统] 自动驾驶守护进程(selfdrived)
linux·c++·自动驾驶
柯南二号1 小时前
【开发配置】云服务器配置Gitlab服务
运维·服务器·gitlab
zt1985q1 小时前
外网访问个人 IT 工具箱 it-tools
服务器·spring cloud·网络安全·云原生·eureka
chenglin0162 小时前
阿里云——应用交付与负载均衡
阿里云·云计算·负载均衡