设置可接受的rsa密钥的最小大小

有没有办法将sshd接受的最小尺寸设置为RSA公钥?

我想限制用户使用使用ssh-keygen -b 8196或更高版本生成的RSA密钥。

我没有在sshd_config中看到任何选项。 有一个ServerKeyBits选项,但似乎只适用于SSHv1。

在现代的sshd版本中(比提问时更新),可以使用AuthorizedKeysCommand来获取用户的公钥。 通常的原因是从一些中央存储(ldap,mysql …)中获取密钥。 但是你也可以用它来过滤用户的密钥。 您还应该将AuthorizedKeys文件设置为none,以避免回退到未过滤的密钥。

我要在这里同意CodeInChaos和Brad。 他们提出了一些有效的观点,说明你为了使ssh安全而采取的可疑方法。

就这样吧,你可以看看PAM。 如果您检查/etc/pam.d/sshd,您可以看到哪些安全模块sshd使用。 您可以编写自己的模块,以确保使用8196位生成用于身份validation的公共RSA密钥,然后将该模块置于/ lib / security中。 然后在/etc/pam.d/sshd中添加一行,如下所示:

account required /lib/security/<my_fancy_security>.so 

我承认,我不确定你将使用什么机制来检查使用的密钥。 例如,您可以尝试检查正在使用的公钥的字符长度。 在我的机器上,生成公钥私钥rsa对的密钥总是产生一个长度为1424个字符的公钥和一个长度为6446个字符的私钥。 同样,产生2048位的rsa密钥总是会产生一个400个字符的公钥和一个1766个字符的私钥。 请注意,这似乎是操作系统相关的; 我的笔记本电脑生产不同长度的钥匙 这不是一个微不足道的限制。

这是我能想到的最好的。 如果sshd没有为您提供解决scheme,您可能需要获得创意并开始编码。

8196?!?!?

我没有尝试过,但也许,修改ssh.h后从源代码编译:

 /* Minimum modulus size (n) for RSA keys. */ #define SSH_RSA_MINIMUM_MODULUS_SIZE 768 

到你想要的模量大小?