Linux VPS 基础安全配置:SSH 密钥、防火墙与可回滚加固

· 更新于 · LinodeLinux教程

服务器加固最重要的不是一次执行很多命令,而是每一步都能验证和回滚。本文适用于仍在安全支持期的常见 Linux 发行版;命令、服务名和默认配置可能不同,操作前应同时核对当前发行版文档。

不要在仅有一条 SSH 会话时直接关闭密码或 root 登录。先准备控制台回退通道、验证新账号和密钥,再逐项收紧配置。

操作顺序

  1. 完成可恢复的实例外备份。
  2. 确认可以通过 Cloud Manager 的 Lish/Console 进入系统。
  3. 安装安全更新并确认系统仍受维护。
  4. 创建非 root 管理账号,验证 sudo
  5. 在本地生成 SSH 密钥,只复制公钥。
  6. 在第二个终端验证新账号密钥登录。
  7. 检查并重新加载 SSH 配置。
  8. 最后配置云防火墙和主机防火墙。

整个过程中保留原有已登录会话,直到新的登录方式和回退通道都验证成功。

1. 更新系统并准备回退

先在发行版官网确认当前版本的支持周期,并使用其包管理器安装安全更新。生产服务器应先做变更记录、实例外备份和恢复验证;只把压缩包放在本机磁盘上不算灾难恢复方案。

在 Cloud Manager 中打开 Lish Console,确认即使 SSH 配置出错也能进入系统。记录当前 SSH 端口和防火墙规则:

sudo sshd -T | grep -E '^(port|passwordauthentication|pubkeyauthentication|permitrootlogin) '
sudo ss -lntp

2. 创建非 root 管理账号

以下是 Ubuntu/Debian 常见示例;其他发行版应使用其当前官方文档中的用户和管理员组命令:

sudo adduser exampleuser
sudo usermod -aG sudo exampleuser
sudo -l -U exampleuser

exampleuser 替换为实际用户名。不要删除 root、修改现有认证方式或退出当前会话。

3. 在本地生成并安装 SSH 公钥

密钥对必须在你的本地电脑生成:

ssh-keygen -t ed25519
ssh-copy-id exampleuser@服务器IP

~/.ssh/id_ed25519 是私钥,始终保留在本地并设置通行短语;只有以 .pub 结尾的公钥内容进入服务器的 ~/.ssh/authorized_keys

如果本地没有 ssh-copy-id,可以通过一次受信任的现有连接把公钥内容追加到远端 authorized_keys。检查远端权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

4. 用第二个终端验证登录

保持原会话不动,打开第二个终端:

ssh -o PreferredAuthentications=publickey exampleuser@服务器IP
sudo -v

只有新会话能用密钥登录并成功执行 sudo,才继续修改 SSH。若失败,先检查用户名、公钥、文件权限和服务日志,不要关闭现有认证方式。

5. 收紧 SSH 配置

Ubuntu 的 OpenSSH 支持 /etc/ssh/sshd_config.d/ 配置片段;其他发行版应先确认主配置包含对应 Include,并以 man sshd_config 和发行版文档为准。可在单独片段中评估以下设置:

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no

这些值不是所有环境的唯一答案。例如依赖密码认证的自动化、集中身份系统或紧急账户需要单独迁移。保存后先做语法检查:

sudo sshd -t
sudo sshd -T | grep -E '^(passwordauthentication|pubkeyauthentication|permitrootlogin) '

sudo sshd -t 没有报错且有效配置符合预期后,才使用当前发行版对应的服务单元重新加载 OpenSSH。Ubuntu 常见命令为:

sudo systemctl reload ssh.service

不要关闭原会话。再次从第二个终端建立全新连接并验证 sudo;成功后才结束维护窗口。若失败,通过仍保留的会话或 Lish 恢复配置,再运行 sudo sshd -t

6. 配置防火墙

Cloud Firewall 位于实例外,可先在 Cloud Manager 中创建规则,再关联实例。常见最小入口是:

保存前逐条核对源地址、协议和端口。启用后立即从第二个终端复测 SSH 与业务端口;如果无法连接,使用 Lish 修正规则。

主机内还可使用发行版支持的 UFW、firewalld 或 nftables。不要同时堆叠多套不理解的规则;先记录现状,确认 SSH 允许规则,再启用默认拒绝策略。

7. 后续维护

参考文档