OpenSSH CBC模式信息泄露漏洞 解决

问题

某个我们对某个服务进行了漏洞扫描,在扫描报告中发现了一个低微漏洞

[ 低风险 ] OpenSSH CBC模式信息泄露漏洞

该漏洞描述为:

OpenSSH是一种开放源码的SSH协议的实现,初始版本用于OpenBSD平台,现在已经被移植到多种Unix/Linux类操作系统下。
如果配置为CBC模式的话,OpenSSH没有正确地处理分组密码算法加密的SSH会话中所出现的错误,导致可能泄露密文中任意块最多32位纯文本。在以标准配置使用OpenSSH时,攻击者恢复32位纯文本的成功概率为2^{-18}, 此外另一种攻击变种恢复14位纯文本的成功概率为2^{-14}。

解决

修改ssh配置文件/etc/ssh/sshd_config,首先查找该文件中是否有下面关键字的配置项

# Ciphers and keying
Ciphers  		....

如果存在则修改为下面这段,不存在则在这个文件的末尾加上下面这段

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],arcfour

重启SSH服务就可以完成配置

CentOS 7 以上的SSH服务重启命令

systemctl restart sshd

CentOS 7 以下的SSH服务重启命令

service sshd restart 

验证

使用SSH针对CBC分组类型的加密算法进行检查

ssh -vv -oCiphers=aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc <你的主机名>

如:

ssh -vv -oCiphers=aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc 127.0.0.1

屏幕打印的日志的最后一行:

....

no matching cipher found: client aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc server aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],arcfour

出现 no matching cipher found: client aes128-cbc,3des-cbc … 说明配置生效。(此时的SSH登录并未成功)

如果有兴趣可以阅读下面的解决思路

解决思路

导致该问题的原因是SSH CBC的加密模式可能存在风险,所以只要关闭CBC模式的分组加密就可以。

如何查看默认SSH支持加密算法分组类型

man sshd_config

打开手册,通过PageDown按键翻页,我们可以找到Ciphers的配置项
OpenSSH CBC模式信息泄露漏洞 解决

q退出,Enter下一行。

从这个描述中我们可以得到,默认情况下支持的加密算法如下:

The default is:

   aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
   [email protected],[email protected],
   [email protected],
   aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
   aes256-cbc,arcfour

其中包括了包含CBC分组类型的加密算法如下:

aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc

所以只需要把这些算法去掉就可以得到一个新的配置信息,然后写入/etc/ssh/sshd_config文件中

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],arcfour

参考文献

[1] 努力改个网名 . 低微漏洞处理办法记录 . https://www.cnblogs.com/lsdb/p/8204578.html