一份实用的分步指南,教你加固全新的 Linux VPS:创建 sudo 用户、将 SSH 锁定为仅密钥登录,并使用 UFW 配置防火墙。内含 Fail2ban 与无人值守安全更新。
SKYLINE Engineering @skyline
发布于 2026 年 6 月 8 日 | 阅读时长 5 分钟
全新的 VPS 从开机那一刻起就暴露在公共互联网上。几分钟之内,自动化机器人就会开始针对 22 端口发起撞库攻击。好消息是:只需若干步广为人知的操作,就能消除其中绝大多数风险。本指南将带你像专业人员上线第一天那样,加固一台全新的 Linux 服务器(假定为 Ubuntu/Debian;这些命令与其他发行版也高度对应)。
如果你还在为工作负载挑选运行环境,Skyline 在沙特阿拉伯境内提供云服务器与 VPS,让你的数据符合 PDPL/NCA 的数据驻留规定,并让一支讲阿拉伯语的本地支持团队随时为你服务。
开始之前
你需要:
- 一台拥有公网 IP 的全新 VPS,以及由服务商提供的初始
root凭据(或默认的 sudo 用户)。 - 本机上的一个 SSH 客户端。Linux/macOS 已内置;Windows 上请使用 OpenSSH 客户端或 PowerShell。
- 一对 SSH 密钥。如果还没有,请在本地生成:
ssh-keygen -t ed25519 -C "you@example.com"
ed25519 密钥短小、快速,且比传统的 2048 位 RSA 更安全。按回车采用默认路径(~/.ssh/id_ed25519),并设置一个口令。
第 1 步 — 先更新系统
登录后,在做其他任何事情之前,先把所有软件包升级到最新,让你从一个已打补丁的基线开始:
ssh root@your_server_ip
apt update && apt upgrade -y
第 2 步 — 创建一个非 root 的 sudo 用户
日常以 root 身份操作很危险:一个输入错误就可能造成灾难,而 root 又是每个攻击者首先盯上的账户。请改为创建一个专用的管理员用户:
adduser deploy
usermod -aG sudo deploy
接着把你的 SSH 公钥复制给这个新用户,以便你能以该用户身份登录:
rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy/
如果你当初是用密码登录开通的服务器,则改为从本机运行 ssh-copy-id deploy@your_server_ip。在做任何其他操作之前,请打开第二个终端,确认你能以 deploy 身份登录并运行 sudo whoami(应当输出 root)。在新的访问方式验证成功之前,切勿关闭你正在使用的会话。
第 3 步 — 加固 SSH 守护进程
这是单项影响最大的改动。编辑 SSH 配置:
sudo nano /etc/ssh/sshd_config
设置以下指令(取消注释或新增它们):
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
MaxAuthTries 3
X11Forwarding no
| 指令 | 作用 |
|---|---|
PermitRootLogin no |
阻止通过 SSH 直接以 root 登录 |
PasswordAuthentication no |
强制仅密钥认证,挫败暴力破解 |
MaxAuthTries 3 |
在 3 次失败尝试后断开连接 |
通过重新加载服务来应用改动:
sudo systemctl reload ssh
退出登录前,请在新终端中测试。 确认密钥登录仍然有效,且密码登录尝试会被拒绝。如果出现问题,你现有的会话仍处于打开状态,可用来修复。
可选:更改 SSH 端口
把 SSH 从 22 端口移走(例如改到 2222)并不能阻止铁了心的攻击者,但能大幅减少自动化扫描器产生的日志噪音。在 sshd_config 中设置 Port 2222,在重新加载之前于防火墙中放行该端口(见下一步),然后用 ssh -p 2222 deploy@your_server_ip 连接。
第 4 步 — 用 UFW 配置防火墙
UFW(Uncomplicated Firewall,简易防火墙)是 iptables 的一个友好前端。默认情况下,拒绝所有入站流量,只放行你确实需要的:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
如果你运行 Web 服务器,也要开放 HTTP 和 HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
关键: 务必在启用防火墙_之前_放行你的 SSH 端口,否则你会把自己锁在门外。如果你更改了端口,请用
sudo ufw allow 2222/tcp代替OpenSSH。
启用并验证:
sudo ufw enable
sudo ufw status verbose
第 5 步 — 安装 Fail2ban
Fail2ban 会监视你的日志,并临时封禁那些表现出恶意模式(例如反复登录失败)的 IP:
sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
编辑 jail.local,在 [sshd] 一节下,确认该 jail 已启用并设置了合理的限制:
[sshd]
enabled = true
maxretry = 3
bantime = 1h
findtime = 10m
重启并检查该 jail:
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
第 6 步 — 启用自动安全更新
未打补丁的软件是最常见的入侵途径。在 Ubuntu/Debian 上,启用无人值守安全升级:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
这样会自动应用安全补丁,同时把功能性升级仍然交由你掌控。
加固检查清单
- ☑ 系统已完全更新
- ☑ 已创建并验证非 root 的 sudo 用户
- ☑ 已禁用 root 的 SSH 登录
- ☑ 已禁用密码认证(仅密钥)
- ☑ 已启用 UFW 防火墙并采用默认拒绝策略
- ☑ Fail2ban 已在 SSH jail 上运行
- ☑ 已启用自动安全更新
接下来该做什么
这套基线措施能挡住绝大多数机会型攻击。在此基础上,可以考虑针对各应用做加固(反向代理、通过 Let's Encrypt 启用 TLS、将数据库绑定到 localhost)、集中化日志,以及定期的异地备份。如果你的服务器还要处理电子邮件,我们的企业邮箱托管能让邮件脱离本机,并通过 SPF、DKIM 和 DMARC 进行妥善认证。
想了解更多在沙特境内运行服务器的指南,欢迎浏览我们的 VPS 与云服务器中心。
准备好在境内基础设施上部署,享受透明定价与本地支持了吗?创建你的 Skyline Cloud 账户,几分钟内即可启动一台已加固的 VPS。
Comments
0 total · 0 threads