关注【索引目录】服务号,更多精彩内容等你来探索!
介绍
如果您是负责 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 集群的攻击面。
关注【索引目录】服务号,更多精彩内容等你来探索!

