大数跨境

在 Linux 服务器上保护 SSH 密钥管理的 7 个技巧

在 Linux 服务器上保护 SSH 密钥管理的 7 个技巧 索引目录
2025-09-22
1
导读:关注【索引目录】服务号,更多精彩内容等你来探索!介绍如果您是负责 Linux 服务器集群的 DevOps 主管,那么 SSH 密钥就是您日常运营的生命线。

关注【索引目录】服务号,更多精彩内容等你来探索!

介绍

如果您是负责 Linux 服务器集群的 DevOps 主管,那么 SSH 密钥就是您日常运营的生命线。它们虽然方便,但一个泄露的私钥就可能打开您整个基础设施的大门。本教程将引导您完成七个实用步骤,以强化 SSH 密钥管理,涵盖从密钥生成到密钥轮换和密钥审核的各个环节。


1. 为每个用户生成强大且唯一的密钥

切勿在多个帐户或服务器中重复使用相同的密钥。请使用现代算法和足够长的密钥:

# Generate an Ed25519 key (recommended) with a 100‑character comment
ssh-keygen -t ed25519 -a 100 -C "alice@prod‑bastion"
  • 为什么选择 Ed25519?
    它提供与 RSA‑4096 相当的安全性,但占用空间更小,操作速度更快。
  • 密码保护
    增加了第二个因素。将密码存储在安全的密码管理器中,而不是纯文本中。

2. 使用 SSH 代理或 Vault 集中管理私钥

将私钥分散存放在工作站上存在风险。常见的做法有两种:

  • ssh‑agent
    :每个会话加载一次密钥并让代理处理身份验证。
  • HashiCorp Vault(或类似)
    :将私钥存储在密封的秘密后端并根据需要检索。

向代理添加密钥的示例:

ssh-add ~/.ssh/id_ed25519

如果您更喜欢 Vault,那么最小策略可能如下所示:

path "ssh/creds/readonly" {
  capabilities = ["read"]
}

3. 强化authorized_keys选择

authorized_keys文件可以强制执行每个密钥的限制。在密钥材料前添加选项:

no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="/usr/local/bin/readonly-shell" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE... alice@prod-bastion

常用选项:

  • no-pty
    – 阻止交互式 shell。
  • restrict
    – 一组安全默认值的简写。
  • from="10.0.0.0/8"
    – 限制源 IP 范围。

这些限制限制了攻击者即使获得私钥也能做的事情。

4.部署堡垒主机(跳转盒)

不要允许 SSH 直接连接到生产环境,而是将所有流量通过强化的堡垒机进行传输。堡垒机可以:

  • 强制执行 MFA(例如,Duo、Google Authenticator)。
  • 使用auditd或记录每个会话tlog
  • 应用速率限制和入侵检测规则。

sshd_config堡垒的最低要求可能包括:

Port 22
Protocol 2
PermitRootLogin no
PasswordAuthentication no
AllowTcpForwarding no
LogLevel VERBOSE

5.定期轮换密钥

将 SSH 密钥视为密码:定期轮换密钥(每季度轮换一次比较好),或在人员变动后立即轮换。使用一个简单的脚本即可自动轮换密钥:

#!/usr/bin/env bash
# Rotate a user’s key and push to all servers via Ansible
USER=alice
NEWKEY=$(ssh-keygen -t ed25519 -a 100 -f /tmp/${USER}_id -N '' -C "${USER}@$(hostname)" && cat /tmp/${USER}_id.pub)
ansible all -m authorized_key -a "user=${USER} key='${NEWKEY}' state=present"

确保state=absent在验证新密钥后撤销旧密钥()。

6. 使用硬件安全模块(HSM)或 YubiKeys

对于高价值账户,请将私钥存储在永远不会离开设备的硬件令牌上。工作流程略有不同:

# Use the YubiKey as a smartcard for SSH
ssh-add -K /usr/local/lib/opensc-pkcs11.so

私钥永远不会接触文件系统,从而大大减少了暴露。

7. 审计和监控 SSH 活动

可见性是最后一道防线。在 SSH 守护进程上启用详细日志记录,并将日志发送到集中式 SIEM。

# /etc/ssh/sshd_config additions
LogLevel VERBOSE
# Forward logs to syslog
SyslogFacility AUTH

设置以下提醒:

  • 登录失败激增
    (可能是暴力破解)。
  • 来自意外 IP 的密钥使用情况
  • 执行受限命令

诸如fail2ban可以自动禁止违规 IP 的工具,同时auditd可以捕获命令执行详细信息。


快速检查表

  • [ ] 使用密码生成唯一的 Ed25519 密钥。
  • [ ] 将私钥存储在 SSH 代理或 Vault 中。
  • [ ] 在 中应用限制性选项authorized_keys
  • [ ] 通过堡垒主机路由所有 SSH。
  • [ ] 安排季度密钥轮换。
  • [ ] 对特权帐户使用硬件令牌。
  • [ ] 启用详细日志记录并转发到 SIEM。

结论

确保 SSH 密钥管理的安全,需要严谨的流程和可靠的配置。通过生成强密钥、集中密钥、加强安全机制authorized_keys、通过堡垒机引导流量、轮换密钥、利用硬件令牌以及持续审计活动,您可以显著缩小 Linux 集群的攻击面。


关注【索引目录】服务号,更多精彩内容等你来探索!


【声明】内容源于网络
0
0
索引目录
索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
内容 444
粉丝 0
索引目录 索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
总阅读12
粉丝0
内容444