将自定义 SSH DH 组部署到仅限客户端的系统是否有任何安全优势?

将自定义 SSH DH 组部署到仅限客户端的系统是否有任何安全优势?

建议采取以下缓解策略:僵局与 SSH 相关的攻击是使用类似的东西生成自定义 SSH Diffie-Hellman 组(下面是针对 OpenSSH 的)

ssh-keygen -G moduli-2048.candidates -b 2048
ssh-keygen -T moduli-2048 -f moduli-2048.candidates

然后用输出文件替换系统范围的模量文件moduli-2048。(ssh-keygen -G用于生成候选 DH-GEX 素数,并ssh-keygen -T测试生成的候选素数的安全性。)

这显然是在 SSH 服务器上合理的做法,否则将使用众所周知的组,这些组非常适合进行预计算,但是将自定义 SSH DH 组部署到仅限客户端的系统上是否有任何安全优势?(也就是说,系统连接到 SSH 服务器,但本身从不充当 SSH 服务器。)

我主要对与 Linux 上的 OpenSSH 相关的答案感兴趣,但我也希望得到更通用的答案。

答案1

如果你真的想要,你可以这样做,但我不会费心为 OpenSSH 重新生成 2048 位 DH 参数。你需要做更重要的事情确保 SSH 安全,例如禁用弱加密

要做的就是删除现有的小于 2048 位的数据。

awk '$5 >= 2000' /etc/ssh/moduli > /etc/ssh/moduli.strong && \
mv /etc/ssh/moduli.strong /etc/ssh/moduli

如果您还没有注意到,OpenSSH 附带了大量预生成的模数,​​最高可达 8192 位。虽然我们今天肯定担心 1024 位素数,但人们认为 2048 位素数在可预见的未来是安全的。虽然这种情况最终会改变,可能是下周,但更有可能在我们退休后很久才会改变……

手册页中还有一点令人好奇ssh-keygen

重要的是,该文件包含一系列位长度的模数,并且连接的两端共享公共模数。

这似乎反对替换现有的模数,尽管它并没有真正提供这样做的实际理由。

答案2

答案是:没有,没有任何好处。:)

/etc/ssh/moduli文件仅用于服务器端。

您不需要担心 SSH 客户端的文件:

您可以跟踪 SSH 客户端的执行并检查它是否没有打开该文件。

$ strace -e openat ssh user@localhost

相关内容