Home Knowledge base Skyline Cloud 如何使用 UFW 和 Fail2ban 保护 Linux 服务器 KNOWLEDGE BASE

如何使用 UFW 和 Fail2ban 保护 Linux 服务器

一份实用的分步指南,教你用 UFW 防火墙和 Fail2ban 入侵防御加固 Linux 服务器——关闭闲置端口、限速 SSH,并自动封禁暴力破解攻击者。

如何使用 UFW 和 Fail2ban 保护 Linux 服务器

一份实用的分步指南,教你用 UFW 防火墙和 Fail2ban 入侵防御加固 Linux 服务器——关闭闲置端口、限速 SSH,并自动封禁暴力破解攻击者。

你将搭建什么

互联网上每一台对外开放的服务器,上线几分钟内就会被探测——自动化机器人会扫描开放端口,并不停地对 SSH 进行凭据猜测。两款轻量、久经考验的工具就能为你应对其中绝大部分情况:

  • UFW(Uncomplicated Firewall,简易防火墙)——iptables/nftables 的友好前端,用于控制哪些端口处于开放状态。
  • Fail2ban——监视日志文件中反复出现的登录失败,并临时封禁发起攻击的 IP 地址。

本教程将带你在 Debian 或 Ubuntu 服务器上完成这两款工具的配置(在其他发行版上的命令也几乎相同)。无论你运行的是云服务器、VPS 还是独立主机都同样适用,本文也是我们沙特阿拉伯 VPS 与云服务器知识专题的一部分。

前置条件

  • 一台你能通过 SSH 访问的 Linux 服务器。
  • 一个具备 sudo 权限的用户(切勿在没有备用恢复手段的情况下,通过对外暴露的连接以 root 身份执行这些操作)。
  • 你的 SSH 端口(默认是 22;如果你修改过,请在全文中使用你的实际端口值)。

警告: 防火墙可能把你自己挡在门外。在启用 UFW 之前,请确保放行 SSH 的规则已经就位。如果你使用云服务商,请保持其网页控制台或恢复访问通道处于可用状态,以便在操作失误时能够恢复。

步骤 1 — 安装并配置 UFW

大多数 Ubuntu 镜像都自带 UFW。如有需要可按如下方式安装:

sudo apt update
sudo apt install ufw

设置合理的默认策略——拒绝所有入站流量,放行所有出站流量:

sudo ufw default deny incoming
sudo ufw default allow outgoing

这是良好防火墙策略的核心:除非你明确放行,否则没有任何流量能够到达你的服务。

步骤 2 — 放行你确实需要的服务

在开启防火墙之前,先打开服务器所使用的端口。务必首先放行 SSH,否则你会被断开连接:

sudo ufw allow OpenSSH

UFW 会从 /etc/ufw/applications.d 读取命名的应用配置文件。使用 sudo ufw app list 可列出可用的配置。如果你修改过 SSH 端口,请改为显式放行该端口:

sudo ufw allow 2222/tcp

如果你运行网站或商务邮件与 Web 服务,请放行 Web 流量:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

你可以将某条规则限制为仅允许受信任的来源——例如,只允许从你的应用服务器访问数据库:

sudo ufw allow from 10.0.0.5 to any port 3306 proto tcp

步骤 3 — 对 SSH 限速并启用防火墙

UFW 的 limit 规则会对任何在 30 秒内尝试连接超过 6 次的 IP 进行限流——这是一道成本低廉却行之有效的减速带,可用来对抗暴力破解工具:

sudo ufw limit OpenSSH

现在启用防火墙:

sudo ufw enable

通过带编号的列表确认你的规则:

sudo ufw status numbered

预期输出类似如下:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] OpenSSH                    LIMIT       Anywhere
[ 2] 80/tcp                     ALLOW       Anywhere
[ 3] 443/tcp                    ALLOW       Anywhere

要删除某条规则,引用其编号即可:sudo ufw delete 2

步骤 4 — 安装 Fail2ban

UFW 负责关闭端口,但那些你必须保持开放的端口(比如 SSH)仍然暴露在猜测攻击之下。Fail2ban 会监视日志并封禁屡次作案者:

sudo apt install fail2ban

在现代系统上,Fail2ban 通过 systemd 读取日志,因此开箱即用。确认服务正在运行:

sudo systemctl status fail2ban

步骤 5 — 使用 jail.local 文件配置 Fail2ban

切勿直接编辑 jail.conf——它会在升级时被覆盖。请改为创建一个本地覆盖文件:

sudo nano /etc/fail2ban/jail.local

添加以下内容:

[DEFAULT]
# Don't ban your own trusted networks. Add your office/home IP.
ignoreip = 127.0.0.1/8 ::1

# How long a ban lasts (10 minutes).
bantime  = 10m

# Time window for counting failures.
findtime = 10m

# Failures allowed before a ban.
maxretry = 5

# Tell Fail2ban to act through UFW.
banaction = ufw

[sshd]
enabled = true

[sshd] jail 使用位于 /etc/fail2ban/filter.d/sshd.conf 的内置 sshd 过滤器。设置 banaction = ufw 会让 Fail2ban 通过你现有的防火墙插入拒绝规则,而不是直接操作原始的 iptables

重启以使配置生效:

sudo systemctl restart fail2ban

步骤 6 — 验证与监控

检查整体状态,以及专门查看 SSH jail 的状态:

sudo fail2ban-client status
sudo fail2ban-client status sshd

jail 状态会显示当前失败和被封禁的 IP:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     23
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     4
   `- Banned IP list:   203.0.113.42

要手动解封某个地址:

sudo fail2ban-client set sshd unbanip 203.0.113.42

推荐的基线配置

设置项 取值 原因
UFW 入站默认策略 deny 默认全部关闭
SSH 规则 limit 减缓暴力破解
bantime 10m1h 惩罚屡次作案者
maxretry 35 严格但能容忍手误
ignoreip 你的管理 IP 避免把自己锁在门外

更进一步

对于生产服务器,还应为你所暴露的任何服务启用相应的 jail(例如 nginx-http-auth 或你的邮件栈),使用 SSH 密钥代替密码,并考虑设置更长或递增的 bantime。UFW 和 Fail2ban 是一套强有力的基线,而非完整的安全方案——请保持软件包持续打补丁,并使用云备份定期备份。

将你的业务负载托管在沙特境内,对性能以及满足 PDPL、NCA 和 SDAIA 的数据本地化要求都至关重要。Skyline Cloud 在沙特阿拉伯境内运营云服务器、VPS 和独立硬件,提供本地阿拉伯语支持和透明的定价。

准备好部署一台已加固的服务器了吗? 创建你的 Skyline Cloud 账户几分钟即可启动一台 VPS

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.