针对MITM攻击的服务器ssh证书链?

分享于 

3分钟阅读

互联网

  繁體 雙語

问题:

通过ssh与服务器的第一次联系,给出了选择密钥算法的服务器密钥的public。 验证后,结果通常保存到 ~/.ssh/known_hosts 文件中,以应对以后的MITM攻击。


$ ssh host.example.com


The authenticity of host 'host.example.com (1.2.3.4)' can't be established.


ECDSA key fingerprint is SHA256:xxxxxxxxxxxxx.


Are you sure you want to continue connecting (yes/no)?



这种情况显然不能帮助我们对第一个连接进行MITM攻击,而且只需要将问题转移到用户,就可以验证给出的public 密钥,我们都知道该如何结束这个问题。

是否可以分发与公司CA签署的ssh服务器密钥以应对第一个联系人上的mitm攻击? 带有证书链的public-private-key基础设施通常支持这一点- 但我从未见过在企业环境中使用它来保护ssh服务器。

通常,信任一组主机的CA密钥是:


trust *.example.com SHA256:<fingerprint(public key(corporate-ca))>



并且由CA签名且已经由CA签名的每个主机都受信任:


ca.example.com


+- host.example.com



这类似于HTTPS的安全,因为ssh使用了相同的底层技术- - 类似于已经在OpenSSH中实现的,我没有找到它?


回答 1:

另一种方法是在DNS中将SSH密钥指纹发布为SHFP记录:
请参见 RFC 4255 https://tools.ietf.org/html/rfc4255

这样,一旦你将 VerifyHostKeyDNS 设置为( 全局) ssh客户端缺省值,就可以对 public 关键字进行自动化的验证。


回答 2:

如果处于企业环境中,你还可以使用你喜欢的配置管理工具在所有客户机上拥有一个中央管理的SSH密钥列表,然后将它的部署到所有客户机上。 这也可以用于在机器之间直接进行主机验证。 ( 集中管理SSH主机密钥对于在重新安装服务器时防止不需要的主机密钥更改也很有用

当然,这种方法只适用于"内部"ssh访问,其中客户端和服务器都在你的控制之下。 如果需要任意外部用户到( 你不能把known_hosts文件给他们) 中的SSH,那么在中的SSHFP记录可以能就是一种方式。



Server  ATT  SSH  cer  CHAI  Chain  
相关文章