srm*_*ark 9 security ssh authentication
远程用户使用 SSH 通过互联网连接到我们总部的多项服务。SSH 密码与他们的 LAN A/D 帐户同步。
让用户使用 CD 或一张纸之类的东西将 SSH 密钥的副本带回家是否比让用户输入密码更安全?或者我应该两者都需要?
我的问题可能可以重新表述如下:SSH 的密码认证协议是否存在漏洞?
正是这条消息让我怀疑:
The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:.
Are you sure you want to continue connecting (yes/no)?
Run Code Online (Sandbox Code Playgroud)
mat*_*tdm 22
您看到的消息是一个单独的问题。它要求您确认您连接的主机确实是您期望的主机。从服务器,您可以通过运行来获取指纹ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub。然后,当您第一次远程连接时,您可以确保指纹匹配。
在这里看到的主机密钥解决了中间人攻击的问题——也许 DNS 已经被破坏,你正在连接到竞争对手的机器而不是你自己的机器。那台机器会收集您的凭据并透明地将您的连接转发到真实服务器,在您不知情的情况下窃取您的信息。确保主机密钥匹配可以防止这种情况发生,除非攻击者实际上已经窃取了您服务器的公钥。
不过,一个问题仍然存在——你怎么知道哪个键是正确的?第一次连接后,公钥存储在您的~/.ssh/known_hosts文件中,因此后续连接没问题。但是第一次,您要么需要某种带外获取指纹的方法,要么遵循“TOFU”模型:首次使用信任。
但这一切都与密码与密钥没有任何关系,只是密钥和密码都可能通过这种攻击被盗——从某种意义上说,这是您要求的漏洞。
密码比密钥差的原因(至少)有以下三个:
此外,ssh 密钥在与诸如此类的东西一起使用时提供了便利ssh-agent- 您无需每次都重新进行身份验证即可获得轻松的连接操作,同时仍保持合理的安全程度。
要求两者都没有明显的优势,因为有足够权限窃取私钥的人也可以很容易地窃取用户的密码。如果您需要比这更高的安全性,请考虑研究两因素身份验证系统,例如 RSA SecurID 或WiKID。
| 归档时间: |
|
| 查看次数: |
5700 次 |
| 最近记录: |