本检查清单刻意省略了什么
端口敲门、内核加固 sysctl 配置、SELinux/AppArmor 调优、入侵检测套件——这些都是真实的工具,但没有一个是单用途 VPS 第一天的优先事项,而且有几个很容易被错误配置成将自己锁在外面。这里的 80/20 是诚实的:密钥 + 无密码 + 默认拒绝 + 自动补丁,基本上可以阻止所有非定向入侵。当您的威胁模型明确指向一个能够突破基本防御的对手时,再添加重型工具——如果磁盘级隐私对您的模型很重要,请记住 KVM 层允许您在虚拟机内运行全盘加密。
备份是安全的组成部分
加固降低了概率;备份限制了损失。每个套餐都包含每周快照,但快照与服务器共存——对于任何无法承受损失的数据,同样要推送加密的异地副本:将 restic 或 borg 备份到另一台服务器(另一区域的 3.50 美元 Pup 是一个整洁的备份目标),设置仅需几分钟。测试一次恢复;未经测试的备份是一种期望,而非计划。
- 登录一次,更新所有内容
apt update && apt full-upgrade -y && reboot模板是快照;快照日期与今天之间的时间差正是扫描器探测的窗口。先打补丁,重启进入新内核,然后再进行配置。
- 创建用户并安装 SSH 密钥
adduser ops && usermod -aG sudo ops mkdir -p /home/ops/.ssh && nano /home/ops/.ssh/authorized_keys # paste your ed25519 public key chmod 700 /home/ops/.ssh && chmod 600 /home/ops/.ssh/authorized_keys && chown -R ops:ops /home/ops/.ssh如果您的本地机器上还没有密钥,请先生成:
ssh-keygen -t ed25519。在继续之前,先在第二个终端中测试ssh ops@your-ip。 - 加固 sshd
编辑
/etc/ssh/sshd_config.d/hardening.conf:PermitRootLogin no PasswordAuthentication no KbdInteractiveAuthentication no MaxAuthTries 3 AllowUsers ops然后执行
systemctl restart ssh——前提是您已确认基于密钥的会话正常工作。密码猜测在此终结:没有可猜测的密码。将端口改为非标准端口可以减少日志噪音,但这是外观上的,而非安全上的;如果您喜欢整洁,可以这样做。 - 建立默认拒绝防火墙(nftables)
Debian 的原生防火墙,
/etc/nftables.conf中的最小规则集:table inet filter { chain input { type filter hook input priority 0; policy drop; ct state established,related accept iif lo accept tcp dport 22 accept icmp type echo-request limit rate 5/second accept icmpv6 type { echo-request, nd-neighbor-solicit, nd-neighbor-advert, nd-router-advert } accept } }systemctl enable --now nftables。仅在部署需要相应端口的服务时才开放更多端口——VPN 指南开放 51820/udp,邮件指南开放 25/465/993,依此类推。默认拒绝意味着被遗忘的测试守护进程无法访问,而不是造成安全漏洞。 - 添加 fail2ban 处理残余噪音
apt install -y fail2ban printf "[sshd] enabled = true maxretry = 4 bantime = 1h " > /etc/fail2ban/jail.d/ssh.local systemctl enable --now fail2ban密码已禁用的情况下,这是纵深防御加日志整洁——重复违规者在防火墙层被丢弃,而不是填满您的认证日志。
- 开启无人值守安全更新
apt install -y unattended-upgrades dpkg-reconfigure -plow unattended-upgradesDebian 安全团队现在会在您睡觉时为您的服务器打补丁。按按键次数衡量,这是本页中效果最显著的一行:大多数真实入侵利用的是已存在几个月的旧补丁。
- 两分钟验证
从外部确认安全状态:
ssh root@your-ip # must be refused nmap -p- your-ip # only 22 (and your service ports) open last -a; journalctl -u ssh -n 50 # familiarise yourself with normal可选:在您的 VPSCrypto 账户本身添加 TOTP 2FA——面板可以重建或重装服务器,因此它值得与 root 同等级别的保护。
常见问题
我应该更改 SSH 端口吗?
这是日志噪音控制,而非安全措施——扫描器用 masscan 几秒钟就能找到非标准端口。如果安静的日志有助于您发现真正的异常,可以这样做;但永远不要将其视为一层防御。真正的防御是仅密钥认证和 MaxAuthTries。
禁用密码后还需要 fail2ban 吗?
严格来说对 SSH 不需要——没有可以暴力破解的内容。它仍在清单上,是因为它同样覆盖您以后可能添加的其他服务(邮件、管理面板),并保持日志可读。在极简主义的服务器上可以跳过。
托管商有 DDoS 防护时还需要 VPS 防火墙吗?
它们解决的是不同问题。上游的 DDoS 缓解吸收洪流攻击;您的 nftables 策略控制的是哪些服务根本可以被访问。默认拒绝针对的是被遗忘的守护进程,而非千兆字节级别的攻击。
使用 Ubuntu 而非 Debian 怎么办?
这里的所有内容均适用;Ubuntu 附带 ufw 作为更友好的前端(ufw default deny incoming; ufw allow 22/tcp; ufw enable),并在近期版本中默认启用 unattended-upgrades。sshd 加固配置完全相同。
如果我把自己锁在外面了怎么恢复?
使用您客户区中的控制台访问——它独立于 sshd,因此您可以修复错误配置或恢复快照。这也是为什么在关闭第一个会话之前,要在第二个会话中测试新的 SSH 配置。

