使用指纹和其他方式自动验证虚拟机主机
我一直在研究各种方法来自动和远程验证远程 ssh 服务器(虚拟机)。它们似乎都得出了相同的结论……即主机密钥需要通过某种安全通道(离线、通过 TLS 上的控制面板等)进行验证。
由于大多数云供应商似乎都提供了在 VM 设置期间执行代码的 API 机制(例如通过 TLS 传输),如果云供应商将 UUID 或其他长随机密钥或字符串写入文件系统,以便我可以在用密钥对进行身份验证后进行检查,这是否会提高安全性?
这有什么价值吗?还是只是混淆?如果我根本不使用 DNS 主机名,会有什么变化吗?
我的主要目标是避免基础设施的维护……那么这种事情可能吗?
答案1
我认为您寻找解决方案的方向错误。
当您频繁推出虚拟机并希望防止这种情况发生时,为了提供“简单”的解决方案,您需要在第一次连接到新虚拟机时手动检查新服务器的密钥指纹的有效性,我认为您有两种不同的潜在解决方案。两者都扩展了您使用“用户数据”在推出时自定义虚拟机的想法:
您可以预先创建一个密钥对,使用您自己的 CA 签署公钥,然后将该服务器密钥对部署到新的 VM,而不是让每个服务器在首次启动时生成自己的随机服务器密钥对。
请参阅https://serverfault.com/a/954138/37681或者,您可以插入一个脚本,在部署后,一旦新服务器完成生成其新密钥对,该脚本就会将密钥指纹上传到 DNS。然后您可以使用
VerifyHostKeyDNS
指令自动验证指纹。请参阅RFC 4255