OpenSSH服务器如何配置禁止小于2048位的弱RSA密钥?
如何在OpenSSH服务器禁止弱RSA密钥(小于2048位)
当然有啦!OpenSSH服务器完全支持配置来禁止长度小于2048位的弱RSA密钥,而且不用像你提到的那样用PubkeyAcceptedAlgorithms(应该是PubkeyAcceptedKeyTypes哦,可能手滑打错了)一刀切禁用整个RSA算法类型,咱们可以精准限制密钥长度~
推荐方法:用PubkeyAcceptedKeyTypes配置长度限制(OpenSSH 7.6+)
从OpenSSH 7.6版本开始,官方支持在密钥类型后面追加:min-size=N的后缀,直接指定该类型密钥的最小允许长度。
你只需要在sshd_config配置文件里添加或修改这一行:
PubkeyAcceptedKeyTypes ssh-ed25519,ecdsa-sha2-nistp256,rsa-sha2-256:min-size=2048,rsa-sha2-512:min-size=2048
- 这里明确列出了允许的密钥类型,同时给RSA的两种安全签名算法(
rsa-sha2-256和rsa-sha2-512)加上了最小2048位的限制,小于这个长度的RSA密钥会直接被拒绝。 - 如果你不得不兼容一些老客户端(依赖过时的
ssh-rsa算法,基于SHA-1,安全性较差),也可以加上ssh-rsa:min-size=2048,但真心建议尽量禁用ssh-rsa,毕竟SHA-1已经被证实不安全了。
修改完配置后,记得重启sshd服务让设置生效:
# 用systemd的系统(比如Ubuntu 16.04+、CentOS 7+) systemctl restart sshd # 用SysVinit的老系统 service ssh restart
额外:限制服务器自身的RSA主机密钥长度
如果你还想确保服务器自己生成的RSA主机密钥不会是弱密钥,可以在sshd_config里指定HostKey时加上长度参数:
HostKey /etc/ssh/ssh_host_rsa_key -b 2048
不过这个是针对服务器自身密钥的配置,和客户端登录用的密钥限制是分开的,主要用来避免服务器生成小于2048位的主机密钥。
验证配置是否生效
你可以拿一个小于2048位的RSA密钥尝试登录服务器,应该会直接被拒绝,去服务器的日志文件(通常是/var/log/auth.log或/var/log/secure)里查看,能看到类似“key too small”的错误提示,就说明配置生效啦。
内容的提问来源于stack exchange,提问作者nodakai
相关产品推荐
相关产品推荐

