SSD Nodes Learn
指南 Matt Connor作者: Matt Connor · 更新于 2026-07-19

新 VPS 的前 10 分钟必做清单

新 VPS 从第一分钟起就是攻击目标。这份十分钟操作手册教您创建用户、配置 SSH 密钥、禁用 root 登录并开启防火墙。

前 10 分钟决定您的服务器有多安全

全新的 VPS 并不安全。从它拥有公网 IP 的那一刻起,扫描器就在尝试登录,而默认镜像给了它们一个很大的攻击面:root 往往可以直接访问、往往允许密码登录、没有防火墙、也没有任何定期打补丁的机制。好消息是,关上这些门大约只需要十分钟和少数几条命令。这就是我在往每台新服务器上放任何东西之前都会执行的操作手册。

请按顺序完成,因为每一步都建立在上一步之上。每一步都有自己的专门指南,会在过程中给出链接;本页是把它们串联起来的快速通道。

第 1 分钟:更新所有软件包

用服务商给您的凭据以 root 身份登录,在做其他任何事之前先把系统更新到最新:

apt update && apt upgrade -y

未打补丁的机器是最容易被攻破的目标,所以这一步排在最前面。完成后,配置自动安全更新,让系统无需您记着也能保持已打补丁的状态。

第 2 分钟:创建一个带 sudo 的普通用户

不要一直以 root 身份工作。为自己创建一个用户,并赋予它 sudo 权限:

adduser matt
usermod -aG sudo matt

从现在起,您以这个用户登录,并用 sudo 来执行管理任务。始终以 root 身份运行,意味着每一次失误、每一次被入侵都发生在拥有无限权限的情况下,而这正是以非特权用户身份运行要防止的事情。

第 4 分钟:配置 SSH 密钥

密码会被猜出来,密钥不会。在您自己的笔记本电脑上,如果还没有密钥,就创建一个:

ssh-keygen -t ed25519

然后把公钥部分复制到服务器上:

ssh-copy-id matt@YOUR_SERVER

ssh-copy-id 需要新用户的密码登录处于开启状态;如果已经关闭,请把 root 的 ~/.ssh/authorized_keys 复制到 /home/matt/.ssh/authorized_keys(属主为 matt),或者手动把您的公钥粘贴进那个文件。

这一步背后的思路,即每台设备一个密钥、哪些权限会导致密钥登录失败、以及如何吊销丢失的密钥,都在SSH 密钥管理基础中有介绍。

用密钥以 matt 身份退出再重新登录,在动下一步之前确认它能正常工作。在还没能用密钥登录之前就锁死 SSH,正是人们把自己关在门外的原因。

第 6 分钟:关闭 root 登录和密码登录

既然您的密钥已经能用,就关上扫描器所依赖的两扇门。使用一个 drop-in 文件,这样软件包升级就不会覆盖它。把它命名为 00- 开头,让它排在 50-cloud-init.conf 之前,Ubuntu 云镜像自带的这个文件里写着 PasswordAuthentication yes;sshd 只保留它读到的第一个值,所以排序在后的文件会悄无声息地失效:

sudo nano /etc/ssh/sshd_config.d/00-hardening.conf
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no

然后重新加载 SSH:

sudo systemctl restart ssh

接着检查 sshd 实际使用的设置,这样一个失效的 drop-in 文件就骗不了您:

sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'

关闭密码登录、去掉 root 登录之后,针对您服务器的持续暴力破解流量就根本无法得逞。完整的处理方法,包括可选的端口更改,见VPS 上的 SSH 加固

第 8 分钟:开启防火墙

对所有入站流量默认拒绝,然后只放行您需要的。在启用防火墙之前先放行 SSH,否则您会切断自己的连接:

sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw enable

为您实际运行的每个服务添加 allow 规则,比如网站需要的 80/tcp443/tcp。检查 IPv4 和 IPv6 是否都被覆盖,因为只过滤 IPv4 的防火墙会让IPv6 那一侧完全敞开。完整的操作步骤见VPS 防火墙入门

第 10 分钟:用 Fail2ban 拖慢扫描器

最后,加上 Fail2ban 来驱逐那些不停敲打您端口的地址:

sudo apt install -y fail2ban

在 Ubuntu 24.04 上,默认安装从首次启动起就会保护 SSH。既然已经强制使用密钥,这只是一道后备防线,用来削减日志噪声、封锁屡次尝试的地址,而不是您的主要防御手段。

您的清单

这就是整份操作手册。用下面的生成器逐项勾选每一项控制措施,生成一份可以随服务器保存的个性化清单,其中包含每一步的确切命令:

ToolBuild your VPS hardening checklist

每台新服务器都照着做一遍,整个流程就会变成肌肉记忆。现在花十分钟,能帮您省下服务器被攻破之后那个非常糟糕的下午。

把这些基本功配置好之后,Ubuntu 上的自动安全更新会让服务器保持最新,而无需您再登录回来。

FAQ

新 VPS 上我该先做什么?

先用 apt update && apt upgrade -y 更新系统,然后创建一个带 sudo 的普通用户,不再以 root 身份工作。接着配置 SSH 密钥、禁用 root 登录和密码认证、启用默认拒绝的防火墙,并安装 Fail2ban。按这个顺序执行,意味着每一步都可以安全地进行,而不会把自己锁在门外。

加固 SSH 时如何避免把自己锁在门外?

在禁用密码或 root 之前,先配置并测试您的 SSH 密钥登录。用密钥退出再登录,确认它能正常工作,然后才关闭 PasswordAuthenticationPermitRootLogin。启用防火墙时,先放行 22 端口再运行 ufw enable。如果真的被锁在外面,您服务商的网页控制台可以在不用 SSH 的情况下让您重新进入。

在一台小服务器上真的都需要这些吗?

需要,因为扫描器根本不在乎您的服务器有多小。它们对每一个公网 IP 都用同样的方式尝试。整份操作手册大约只需要十分钟,就能堵住那些容易被利用的路径:没有 root 登录、无法猜测密码、没有您未选择却暴露在外的东西,已知漏洞也会自动打补丁。

最重要的一步是哪一步?

只用密钥登录 SSH 并禁用 root 登录。针对全新 VPS 的大多数攻击,都是针对 root 的自动化密码猜测,把这两项都关掉就让这一整类攻击变得不可能。防火墙和 Fail2ban 随后再限制暴露面,并拖慢任何残留的攻击。

我怎么确认服务器确实已经锁好了?

在信任它之前,手动检查三件事。运行 sudo ss -tlnp,确认只有您打算开放的端口在公网地址上监听,没有任何您已经忘掉的 0.0.0.0[::] 服务。运行 sudo ufw status verbose,确认默认入站策略是 deny,并且普通规则和 (v6) 规则都在。另外,务必在关闭第一个 SSH 会话之前先打开第二个 SSH 会话,这样 SSH 配置里的失误就不会把您锁在服务器之外。如果这三项看起来都没问题,基本功就到位了。