概要

本文记录我初始化 Linux 服务器的 标准作业程序(SOP),这并非通用指南,仅作为个人快速部署环境的速查手册。

关联阅读:

性能测试

我要「验牌」(法国音~)

刚拿到服务器机器,在重装系统前,建议对 Linux 服务器的硬件性能进行一次基准测试,使用 root 用户执行 YABS (Yet Another Bench Script) 脚本:

curl -sL yabs.sh | bash -s -- -5

下面是一个测试结果示例:

root@ncrs1000:~# curl -sL yabs.sh | bash -s -- -5
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #
#              Yet-Another-Bench-Script              #
#                     v2025-04-20                    #
# https://github.com/masonr/yet-another-bench-script #
# ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## #

Sat Feb 28 04:59:28 AM CET 2026

Basic System Information:
---------------------------------
Uptime     : 0 days, 0 hours, 1 minutes
Processor  : AMD EPYC 9634 84-Core Processor
CPU cores  : 4 @ 2246.622 MHz
AES-NI     : ✔ Enabled
VM-x/AMD-V : ❌ Disabled
RAM        : 7.8 GiB
Swap       : 0.0 KiB
Disk       : 503.9 GiB
Distro     : Debian GNU/Linux 13 (trixie)
Kernel     : 6.12.73+deb13-amd64
VM Type    : KVM
IPv4/IPv6  : ✔ Online / ✔ Online

IPv4 Network Information:
---------------------------------
ISP        : netcup GmbH
ASN        : AS197540 netcup GmbH
Host       : netcup GmbH
Location   : Karlsruhe, Baden-Wurttemberg (BW)
Country    : Germany

fio Disk Speed Tests (Mixed R/W 50/50) (Partition /dev/vda3):
---------------------------------
Block Size | 4k            (IOPS) | 64k           (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 174.89 MB/s  (43.7k) | 716.07 MB/s  (11.1k)
Write      | 175.35 MB/s  (43.8k) | 719.84 MB/s  (11.2k)
Total      | 350.25 MB/s  (87.5k) | 1.43 GB/s    (22.4k)
           |                      |
Block Size | 512k          (IOPS) | 1m            (IOPS)
  ------   | ---            ----  | ----           ----
Read       | 1.29 GB/s     (2.5k) | 1.89 GB/s     (1.8k)
Write      | 1.36 GB/s     (2.6k) | 2.01 GB/s     (1.9k)
Total      | 2.65 GB/s     (5.1k) | 3.91 GB/s     (3.8k)

iperf3 Network Speed Tests (IPv4):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed      | Ping
-----           | -----                     | ----            | ----            | ----
Clouvider       | London, UK (10G)          | 1.85 Gbits/sec  | 1.19 Gbits/sec  | 15.0 ms
Eranium         | Amsterdam, NL (100G)      | 2.69 Gbits/sec  | 2.36 Gbits/sec  | 10.1 ms
Uztelecom       | Tashkent, UZ (10G)        | 2.49 Gbits/sec  | 1.14 Gbits/sec  | 82.2 ms
Leaseweb        | Singapore, SG (10G)       | 577 Mbits/sec   | 1.79 Gbits/sec  | --
Clouvider       | Los Angeles, CA, US (10G) | 1.10 Gbits/sec  | 442 Mbits/sec   | 158 ms
Leaseweb        | NYC, NY, US (10G)         | 2.21 Gbits/sec  | 2.14 Gbits/sec  | 89.9 ms
Edgoo           | Sao Paulo, BR (1G)        | 2.13 Gbits/sec  | 785 Mbits/sec   | 217 ms

iperf3 Network Speed Tests (IPv6):
---------------------------------
Provider        | Location (Link)           | Send Speed      | Recv Speed      | Ping
-----           | -----                     | ----            | ----            | ----
Clouvider       | London, UK (10G)          | 2.71 Gbits/sec  | busy            | 14.8 ms
Eranium         | Amsterdam, NL (100G)      | 2.69 Gbits/sec  | 2.31 Gbits/sec  | 10.1 ms
Uztelecom       | Tashkent, UZ (10G)        | 2.38 Gbits/sec  | 1.91 Gbits/sec  | 82.2 ms
Leaseweb        | Singapore, SG (10G)       | 2.15 Gbits/sec  | 1.86 Gbits/sec  | --
Clouvider       | Los Angeles, CA, US (10G) | 1.10 Gbits/sec  | 593 Mbits/sec   | 157 ms
Leaseweb        | NYC, NY, US (10G)         | 2.21 Gbits/sec  | 2.11 Gbits/sec  | 89.9 ms
Edgoo           | Sao Paulo, BR (1G)        | 1.95 Gbits/sec  | 591 Mbits/sec   | 217 ms

Geekbench 5 Benchmark Test:
---------------------------------
Test            | Value
                |
Single Core     | 1412
Multi Core      | 4832
Full Test       | https://browser.geekbench.com/v5/cpu/24146433

YABS completed in 8 min 44 sec

测试完成后,首先核对 CPU、内存、硬盘容量及网络带宽等基础信息,确认是否与服务商的承诺相符。

其次,Geekbench 5 的单核跑分是衡量服务器绝对性能的核心指标,我们可以按以下几个梯队来评估其可用性:

  • 单核 400 分左右: 入门级性能,适合运行简单的代理服务、静态网页、轻量级定时任务或个人博客,不适合处理高并发或高性能占用的应用;
  • 单核 800 分左右: 主流及格线,足以应对日常建站需求,例如稳定运行中等流量的 WordPress、部署基础的 Docker 容器、搭建个人网盘或小型数据库;
  • 单核 1200 分左右: 优秀的高性能表现,能够流畅承载负载较重的 Web 应用、中型关系型数据库(MySQL/PostgreSQL)、CI/CD 流水线,以及多容器并行运行;
  • 单核 2000 分以上: 顶级的旗舰性能,计算能力充沛,完美胜任吃单核性能的游戏服务端、重度视频转码、高并发电商后端及复杂的数据处理。

此外,对于 KVM 虚拟化的服务器,多核得分通常应大致等于 核心数 × 单核得分。如果比例严重失衡,通常意味着服务器存在严重的超售现象,「邻居」抢占资源的情况较为恶劣,实际体验会大打折扣。

如果以上结果都没啥问题,现在就可以开始设置新服务器,准备使用了。

重装操作系统

重装有风险,本文不为任何脚本的安全性背书,请自行衡量并承担后果。如果条件允许,请尽可能使用自定义 ISO 镜像手动安装。

使用一键 DD 脚本

对于不支持自定义 ISO 镜像的服务商,使用一键 DD 脚本比较方便。开始前,务必花费几分钟读下作者的说明文档,这远比盲目粘贴命令重要。

  1. bin456789/reinstall 支持重装的系统类型更多
  2. bohanwood/debi 专注于纯净、精简的 Debian 系统环境

以 Oracle ARM 机器安装 Debian 为例,使用 debi 脚本的操作流程如下:

下载脚本

curl -fLO https://raw.githubusercontent.com/bohanyang/debi/master/debi.sh && chmod +x debi.sh

重装配置

sudo ./debi.sh \
  --version 13 \
  --architecture arm64 \
  --cloudflare \
  --user viamoe \
  --authorized-keys-url https://github.com/githubUserName.keys \
  --ssh-port 22122

参数说明:

  • --version 13 指定 Debian 13(代号 Trixie
  • --architecture arm64 指定系统架构,这里的 arm64 匹配 ARM 架构机器
  • --cloudflare 预设 Cloudflare 作为默认 DNS
  • --user viamoe 创建具有 sudo 权限的普通用户 viamoe
  • --authorized-keys-url https://github.com/githubUserName.keys 导入 SSH 公钥,实现无密码登录
  • --ssh-port 22122 更改默认 SSH 端口,规避低级暴力扫描

开始重装

重启后,机器将自动联网重装系统

sudo reboot

期间可通过 VNC 观察安装进度,一般几分钟后新系统即可就绪。

使用自定义 ISO 镜像

若服务商支持上传自定义 ISO 镜像手动安装,这是最为推荐的方式,能让我们从源头掌控系统环境的纯净度。针对 Netcup 服务器的具体操作可参考: Netcup 服务器安装自定义 ISO 镜像

完成重装后,使用预设的用户凭据登录,开始后续配置。

配置用户

赋予普通用户 sudo 权限,方便后续使用和管理。

# 切换到 root 用户
su
# 安装 sudo
apt update && apt install -y sudo
# sudo 免密码
# 替换 dejavu 为实际用户名
echo "dejavu ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/dejavu
# 设置权限
chmod 440 /etc/sudoers.d/dejavu
# 退出 root 用户
exit

安装基础软件包

sudo apt update && apt upgrade
sudo apt install \
    apt-transport-https \
    build-essential \
    git \
    curl \
    wget \
    unzip \
    tmux \
    btop \
    bind9-dnsutils \
    tree \
    vim

SSH 安全加固

配置公钥登录

# 创建公钥目录
mkdir -p ~/.ssh
# 粘贴 SSH 公钥
vim ~/.ssh/authorized_keys
# 或者上传 SSH 公钥
# ssh -i /path/to/your/ed25519_key username@<IP> -p <port>
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

优化 SSH 配置

sudo vim /etc/ssh/sshd_config

重点修改以下配置:

# 修改默认 SSH 端口
Port 22122
# 登录宽限时间
# 超过 1 分钟不输入密码/密钥自动断开
LoginGraceTime 1m
# 禁止 root 用户直接登录
PermitRootLogin no
# 严格模式,检查主目录权限
StrictModes yes
# 开启 SSH 公钥登录方式
PubkeyAuthentication yes
# 禁止传统密码登录方式
PasswordAuthentication no
# 禁止空密码登录
PermitEmptyPasswords no
# 禁用键盘交互式认证(防止通过 PAM 绕过密码限制)
KbdInteractiveAuthentication no
# Debian 默认需要 yes,否则可能会影响部分会话功能。
UsePAM yes
# 关闭 X11 转发
X11Forwarding no
# 保持 SSH 会话连接
# 服务器每 60 秒发一次心跳包
ClientAliveInterval 60
# 如果客户端 5 次没回应才断开
ClientAliveCountMax 5
# 禁止 DNS 反向解析
UseDNS no

保持当前终端会话,新开一个 SSH 连接,确认正常,否则回到保持的 SSH 会话中检查配置。

# 检查 SSH 配置
sudo sshd -t
# 使新的 SSH 配置生效
sudo systemctl restart sshd

IPv6 静态路由

Netcup 服务器提供 /64 的 IPv6,建议设置静态路由(不同服务商配置有所区别)

sudo vim /etc/network/interfaces

添加

iface ens3 inet6 static
    address <静态 IPv6 地址>
    netmask 64
    # Netcup network gateway
    gateway fe80::1
    # 接受路由公告
    accept_ra 2

然后执行

sudo ip addr flush dev ens3

推荐使用针对虚拟化优化、更加轻量和高效的 Cloud 内核。

sudo apt install -y linux-image-cloud-amd64

重启加载新内核

sudo reboot
uname -r
# 输出
6.12.63+deb13-cloud-amd64

清理旧内核

# 列出已安装的内核包
sudo dpkg --list | grep linux-image
# 输出示例
ii  linux-image-6.12.63+deb13-amd64       6.12.63-1                            amd64        Linux 6.12 for 64-bit PCs (signed)
ii  linux-image-6.12.63+deb13-cloud-amd64 6.12.63-1                            amd64        Linux 6.12 for x86-64 cloud (signed)
ii  linux-image-amd64                     6.12.63-1                            amd64        Linux for 64-bit PCs (meta-package)
ii  linux-image-cloud-amd64               6.12.63-1                            amd64        Linux for x86-64 cloud (meta-package)
# 移除常规内核元包及具体版本(请根据实际输出的版本号替换)
sudo apt purge -y linux-image-amd64 linux-image-6.12.63+deb13-amd64
# 更新引导
sudo update-grub
# 运行清理
sudo apt autoremove --purge -y

安装 Docker

参考 Docker 官方文档 说明的步骤,下列命令不保证时效性

# 添加 Docker 官方的 GPG 密钥
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 添加软件源
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl status docker

补充资料: 给 Docker 启用 IPv6 支持

安装 Nginx

同样地,参考 Nginx 项目文档——在 Debian 上的 安装步骤

sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring

# 导入 GPG 密钥
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
    
# 验证 GPG 密钥
mkdir -m 700 ~/.gnupg
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

# 设置仓库锁定,优先使用 Nginx 官方提供的软件包
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx

# 安装 Nginx
sudo apt update && sudo apt install nginx

# 启动 Nginx
sudo systemctl start nginx

使用自签 SSL/TLS 证书,设置 Nginx 默认回退 (Fallback) 虚拟主机。

# 准备目录
sudo mkdir -p /etc/nginx/cert
sudo chmod 700 /etc/nginx/cert
# 生成证书
sudo openssl req -x509 -new -nodes -newkey rsa:2048 \
  -sha256 \
  -days 3650 \
  -keyout /etc/nginx/cert/deny.key \
  -out /etc/nginx/cert/deny.pem \
  -subj "/C=XX/ST=Denied/L=Denied/O=Denied/CN=invalid.local" \
  -addext "subjectAltName=DNS:invalid.local"
  
# 设置权限
sudo chmod 600 /etc/nginx/cert/deny.key
sudo chmod 644 /etc/nginx/cert/deny.pem

新建虚拟主机配置文件

sudo vim /etc/nginx/conf.d/00-default.conf

内容如下:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 444; 
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;
    server_name _;
    
    ssl_certificate /etc/nginx/cert/deny.pem; 
    ssl_certificate_key /etc/nginx/cert/deny.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;

    error_page 497 =444 /dev/null;

    return 444;
}

重载 Nginx 配置

sudo nginx -t
sudo nginx -s reload

设置 ZRAM 和 Swap

合理配置 ZRAM 和 Swap,平衡硬盘 I/O 性能和 CPU 开销。

配置 ZRAM

ZRAM 通过在 RAM 中划分一块区域压缩,速度远快于硬盘上的 Swap 空间。

# 安装 zram-tools 管理工具
sudo apt update && sudo apt install -y zram-tools

编辑 ZRAM 配置

sudo vim /etc/default/zramswap

参数说明:

# 选择 zstd 算法,最佳平衡压缩比和速度
ALGO=zstd
# 分配 ZRAM 比例
# 1GB RAM 建议 100%
# 2~4GB RAM 建议 60%
# 8GB RAM 以上建议 25%
PERCENT=70
# 优先级 100,确保系统优先使用 ZRAM
PRIORITY=100

配置 Swap

Swapfile 比 Swap 分区更为灵活

# 创建 2GB 的 Swapfile
# 1024 * 2 = 2048
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
# 设置权限
sudo chmod 600 /swapfile
# 格式化
sudo mkswap /swapfile
# Swap 启用优先级低于 ZRAM
sudo swapon --priority -2 /swapfile
# 启动时自动挂载
echo '/swapfile none swap sw,pri=-2 0 0' | sudo tee -a /etc/fstab
# 检查挂载
sudo mount -a

系统内核调整

根据物理 RAM 大小,调整设置系统使用 Swap 的「积极性」。

# 1GB RAM(激进)
echo "vm.swappiness=100" | sudo tee -a /etc/sysctl.conf
# 2GB/4GB RAM(积极)
echo "vm.swappiness=60" | sudo tee -a /etc/sysctl.conf
# 8GB RAM 以上(保守)
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

对于 2GB RAM 以下的机器,应当更倾向于释放文件缓存:

echo "vm.vfs_cache_pressure=50" | sudo tee -a /etc/sysctl.conf

应用配置

sudo sysctl -p

验证状态

sudo swapon --show
sudo zramctl

SSD Trim 优化

如果 VPS/VDS 使用的是 NVMe SSD,建议启用 Trim 自动优化。

# 定时任务
sudo systemctl enable --now fstrim.timer

并非所有服务商提供的 VPS/VDS 都支持 Trim,可以验证下:

# DISC-MAX 列不为 0
lsblk -D
NAME   DISC-ALN DISC-GRAN DISC-MAX DISC-ZERO
sr0           0        0B       0B         0
zram0         0        4K       2T         0
vda           0      512B       2G         0
├─vda1        0      512B       2G         0
└─vda2        0      512B       2G         0
# 尝试手动触发
sudo fstrim -v /
/: 434.4 GiB (466435428352 bytes) trimmed

NTP 时区同步

设置 UTC 时区

无论服务器位于何处,我都习惯将时区统一设置为 UTC(世界协调时),避免跨时区运维时产生的日志混乱和时间差纠纷,是一个非常省心的「隐性福利」。

sudo timedatectl set-timezone UTC

使用 Chrony 同步时间

与默认的 systemd-timesyncd 比,Chrony 的精度和性能更佳。

# 安装 Chrony 客户端
sudo apt update
sudo apt install chrony

添加 NTP 服务器

sudo vim /etc/chrony/chrony.conf

注释默认的 poolserver 行,添加 Cloudflare NTP 节点:

server time.cloudflare.com iburst
server time.cloudflare.com iburst
server time.cloudflare.com iburst
server time.cloudflare.com iburst

启动 Chrony 服务

sudo systemctl mask systemd-timesyncd.service
sudo systemctl enable --now chrony

验证同步状态

chronyc sources -v

配置 nftables 防火墙

nftables 是 Linux 内核现代化的包过滤框架。在 Debian 13 中,我们应该摒弃过时的 iptables 和 UFW,直接拥抱原生且高效的 nftables。

检查环境

从 Debian 10 开始,nftables 是默认安装的,但通常处于未启用状态,检查:

# 确保 nftables 已安装
sudo apt update && sudo apt install nftables -y
# 默认 inactive 状态是正常的
sudo systemctl status nftables

若此前安装过 UFW,建议卸载以免冲突

sudo ufw disable && sudo apt purge ufw -y

理解配置

在编写规则前,只需掌握三个层级:

  • 表(Table):规则的顶级容器

  • 链(Chain):绑定在网络钩子(INPUT/FORWARD/OUTPUT)上的规则集,定义默认策略(Drop 或 Accept)

  • 规则(Rule):具体的匹配条件与行动

开始使用

以下配置是典型的「安全」服务器方案:仅允许 Cloudflare CDN 回源访问 80/443 端口,除 SSH 端口外全部切断。

# 编辑配置文件
sudo vim /etc/nftables.conf

语法很简单,可以看注释

#!/usr/sbin/nft -f

# 刷新规则
flush ruleset

table inet filter {
    # ============================================================
    # IP 集合 (Sets)
    # ============================================================
    set cloudflare_v4 {
        type ipv4_addr; flags interval;
        elements = {
            173.245.48.0/20,
            103.21.244.0/22,
            103.22.200.0/22,
            103.31.4.0/22,
            141.101.64.0/18,
            108.162.192.0/18,
            190.93.240.0/20,
            188.114.96.0/20,
            197.234.240.0/22,
            198.41.128.0/17,
            162.158.0.0/15,
            104.16.0.0/13,
            104.24.0.0/14,
            172.64.0.0/13,
            131.0.72.0/22
        }
    }

    set cloudflare_v6 {
        type ipv6_addr; flags interval;
        elements = {
            2400:cb00::/32,
            2606:4700::/32,
            2803:f800::/32,
            2405:b500::/32,
            2405:8100::/32,
            2a06:98c0::/29,
            2c0f:f248::/32
        }
    }

    # ============================================================
    # INPUT 链 (入站)
    # ============================================================
    chain input {
       # 规则外流量拒绝
        type filter hook input priority filter; policy drop;

        # 放行已建立连接
        ct state established, related accept
        # 丢弃无效包
        ct state invalid drop

        # 允许回环接口
        iif "lo" accept
        # 允许 IPv6 NDP
        ip6 nexthdr icmpv6 icmpv6 type { nd-neighbor-solicit, nd-neighbor-advert, nd-router-advert } accept

        # 允许 ICMP (速率限速)
        ip protocol icmp limit rate 4/second accept
        ip6 nexthdr icmpv6 icmpv6 type echo-request limit rate 4/second accept

        # 允许 SSH 端口
        tcp dport 22122 accept

        # 仅限 Cloudflare IP 段访问 80/443
        ip saddr @cloudflare_v4 tcp dport { 80, 443 } accept
        ip6 saddr @cloudflare_v6 tcp dport { 80, 443 } accept
    }

    # ============================================================
    # FORWARD 链 (转发)
    # ============================================================
    chain forward {
        # 规则外流量拒绝
        type filter hook forward priority filter; policy drop;

        # 放行已建立连接
        ct state established, related accept
        # 丢弃无效包
        ct state invalid drop

        # 允许 Docker 出站 (覆盖默认网桥和自定义网桥)
        iifname "docker0" accept
        iifname "br-*" accept

        # 允许 Docker 容器间通信
        iifname "docker0" oifname "docker0" accept
        iifname "br-*" oifname "br-*" accept
    }

    # ============================================================
    # OUTPUT 链 (出站)
    # ============================================================
    chain output {
        # 默认允许所有出站
        type filter hook output priority filter; policy accept;
    }
}

应用规则

# 检查语法
sudo nft -c -f /etc/nftables.conf
# 启动服务
sudo systemctl enable --now nftables
# Docker 重启后会自动注入规则
sudo systemctl restart nftables && sudo systemctl restart docker
# 测试 Docker 出站
sudo docker run --rm busybox ping -c 4 dejavu.moe

安装配置 Fail2ban

# 安装 Fail2ban
sudo apt update && sudo apt install fail2ban
# 创建一个最小的 SSH 服务保护配置
sudo vim /etc/fail2ban/jail.local

配置内容如下:

[DEFAULT]
# 本机地址自动忽略,防止误封自己
ignoreip = 127.0.0.1/8 ::1
# 封禁 1 天
bantime  = 1d
# 在 10 分钟内累计失败即触发
findtime = 10m
# 触发封禁的失败次数阈值
maxretry = 3
# 自动 nftables 规则插入
banaction = nftables-multiport
banaction_allports = nftables-allports
[sshd]
# 启用 SSH 保护
enabled = true
# SSH 服务的监听端口(务必正确匹配)
port    = 22122
# 使用 systemd 日志后端
backend = systemd
# 严格地匹配失败日志
mode    = aggressive

启动 Fail2ban 服务

sudo systemctl enable --now fail2ban
sudo systemctl restart nftables && sudo systemctl restart fail2ban

测试一下封禁

# 封禁一个「黑户」
sudo fail2ban-client set sshd banip 2400:6180:0:d2:0:2:9699:d000
# 检查 nftables 规则中是否存在 f2b 动态表
sudo nft list ruleset | grep f2b

检查 Fail2ban 配置

# 巡查「监狱」
sudo fail2ban-client status
# 查封禁 IP
sudo fail2ban-client status sshd

至此,一台纯净、安全的服务器已经准备就绪。Happy Hosting!