Linux VPS 基础安全配置:SSH 密钥、防火墙与可回滚加固
服务器加固最重要的不是一次执行很多命令,而是每一步都能验证和回滚。本文适用于仍在安全支持期的常见 Linux 发行版;命令、服务名和默认配置可能不同,操作前应同时核对当前发行版文档。
不要在仅有一条 SSH 会话时直接关闭密码或 root 登录。先准备控制台回退通道、验证新账号和密钥,再逐项收紧配置。
操作顺序
- 完成可恢复的实例外备份。
- 确认可以通过 Cloud Manager 的 Lish/Console 进入系统。
- 安装安全更新并确认系统仍受维护。
- 创建非 root 管理账号,验证
sudo。 - 在本地生成 SSH 密钥,只复制公钥。
- 在第二个终端验证新账号密钥登录。
- 检查并重新加载 SSH 配置。
- 最后配置云防火墙和主机防火墙。
整个过程中保留原有已登录会话,直到新的登录方式和回退通道都验证成功。
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 当前端口:仅允许可信管理网络;管理 IP 经常变化时,应先设计可靠的回退方式。
80/tcp和443/tcp:仅在实例确实提供公开 Web 服务时开放。- 其他数据库、缓存和管理端口:默认不对公网开放。
- Inbound Policy:确认允许规则完整后再设为
Drop。
保存前逐条核对源地址、协议和端口。启用后立即从第二个终端复测 SSH 与业务端口;如果无法连接,使用 Lish 修正规则。
主机内还可使用发行版支持的 UFW、firewalld 或 nftables。不要同时堆叠多套不理解的规则;先记录现状,确认 SSH 允许规则,再启用默认拒绝策略。
7. 后续维护
- 定期安装安全更新,并关注发行版生命周期。
- 为 SSH、
sudo、Web 服务和应用错误建立集中日志与告警。 - Fail2Ban 只能减少重复尝试,不能替代密钥认证、防火墙和漏洞修复;需要时使用发行版包并验证规则。
- 定期从实例外备份恢复到测试环境,确认数据和操作文档都可用。
- 删除不用的账号、密钥、端口和服务,按最小权限分配管理能力。