OpenSSH算法协议漏洞修复

OpenSSH算法协议漏洞修复

由于低版本的OpenSSH使用了过时不安全的加密算法协议,通常OpenSSH在版本迭代更新时会弃用这些不安全的加密算法。
如果我们仍要继续使用旧版本的OpenSSH,可以根据实际情况,考虑屏蔽掉不安全的加密算法,以降低安全风险。

SSH Weak Key Exchange Algorithms Enabled(启用SSH弱密钥交换算法)

OpenSSH算法协议漏洞修复_第1张图片

查看kexalgorithms

查看客户端支持的kexalgorithms

ssh -Q kex

OpenSSH算法协议漏洞修复_第2张图片
查看服务端支持的kexalgorithms

sshd -T | grep -w kexalgorithms

在这里插入图片描述

修复方法

修改sshd_config配置文件,屏蔽掉不安全的KexAlgorithms。其中sshd_config的配置参数说明如下:

  • 当前openssh版本支持的算法列表和参数用法可以从帮助文档中查找到。
  • 指定可用的KEX (Key Exchange)算法,多个算法之间必须以逗号分隔。
  • 另外,如果指定的列表以’ + '字符开头,则指定的算法将被追加到默认集,而不是替换原有默认的。
  • 如果指定的列表以’ - '字符开头,则指定的算法(包括通配符)将从默认集中删除,而不是替换。(演示环境中的openssh7.4不支持)
  • 如果指定的列表以’ ^ '字符开头,则指定的算法将被放在默认集的开头。(演示环境中的openssh7.4不支持)
man sshd_config |grep -A 40 -w KexAlgorithms
echo "KexAlgorithms curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1" >> /etc/ssh/sshd_config
systemctl restart sshd
sshd -T | grep -w kexalgorithms

OpenSSH算法协议漏洞修复_第3张图片
在这里插入图片描述

测试验证

客户端指定KexAlgorithms进行连接测试

ssh -v -oKexAlgorithms=diffie-hellman-group1-sha1 [email protected]

OpenSSH算法协议漏洞修复_第4张图片
不指定 KexAlgorithms 连接测试

ssh -v [email protected]

OpenSSH算法协议漏洞修复_第5张图片

SSH Server CBC Mode Ciphers Enabled(启用SSH服务器CBC模式密码)-CVE-2008-5161

OpenSSH算法协议漏洞修复_第6张图片

查看ciphers

查看客户端支持的ciphers

ssh -Q cipher

OpenSSH算法协议漏洞修复_第7张图片
查看服务端支持的ciphers

sshd -T | grep -w ciphers

在这里插入图片描述

修复方法

修改sshd_config配置文件,屏蔽掉不安全的ciphers,重启sshd服务。其中sshd_config的配置参数说明如下:

  • 当前openssh版本支持的ciphers列表和参数用法可以从帮助文档中查找到。
  • 指定允许使用的ciphers,多个ciphers必须以逗号分隔。
  • 如果指定的列表以’ + '字符开头,则指定的ciphers将被追加到默认ciphers集,而不是替换默认的ciphers。
  • 如果指定的列表以’ - '字符开头,则指定的ciphers(包括通配符)将从默认中删除,而不是替换。(演示环境中的openssh7.4不支持)
  • 如果指定的列表以’ ^ '字符开头,则指定的ciphers将放在默认集的开头。(演示环境中的openssh7.4不支持)
man sshd_config |grep -A 40 -w Ciphers
echo "Ciphers [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]" >> /etc/ssh/sshd_config
systemctl restart sshd
sshd -T | grep -w ciphers

OpenSSH算法协议漏洞修复_第8张图片
在这里插入图片描述

测试验证

客户端指定 CBC Mode Ciphers 进行连接测试

ssh -v -oCiphers=3des-cbc [email protected]

OpenSSH算法协议漏洞修复_第9张图片
不指定 Ciphers 连接测试

ssh -v [email protected]

OpenSSH算法协议漏洞修复_第10张图片

Nessus扫描

修复前扫描结果
OpenSSH算法协议漏洞修复_第11张图片
修复后扫描结果
OpenSSH算法协议漏洞修复_第12张图片

Diffie-Hellman Key Agreement Protocol 资源管理错误漏洞(CVE-2002-20001)

在这里插入图片描述
与上述 SSH Weak Key Exchange Algorithms Enabled(启用SSH弱密钥交换算法)中方法类似,屏蔽不安全的KexAlgorithms DH算法

附:ssh客户端与服务器命令

ssh -Q kex							#查看客户端支持的KexAlgorithms列表
ssh -Q cipher						#查看客户端支持的Ciphers列表
sshd -T | grep -w kexalgorithms		#查看服务端支持的KexAlgorithms列表
sshd -T | grep -w ciphers			#查看服务端支持的Ciphers列表
man sshd_config |grep -A 40 -w KexAlgorithms				#查看当前openssh版本支持的KexAlgorithms列表
man sshd_config |grep -A 40 -w Ciphers						#查看当前openssh版本支持的Ciphers列表
ssh -v -oKexAlgorithms={KexAlgorithms} {user}@{ipaddr}		#客户端指定KexAlgorithms进行连接测试
ssh -v -oCiphers={ciphers} {user}@{ipaddr}					#客户端指定Ciphers进行连接测试,并显示debug信息

服务端支持的KexAlgorithms和Ciphers列表还可以使用nmap测试查看

nmap --script ssh2-enum-algos 192.168.64.100

支持的KexAlgorithms列表:
OpenSSH算法协议漏洞修复_第13张图片
支持的Ciphers列表:
OpenSSH算法协议漏洞修复_第14张图片

参考文章

互联网工程任务组官方文档1:https://datatracker.ietf.org/doc/html/draft-ietf-curdle-ssh-kex-sha2-20#page-16
互联网工程任务组官方文档2:https://datatracker.ietf.org/doc/html/rfc8732
openbsd官方帮助文档:https://man.openbsd.org/sshd_config
nmapdoc:https://nmap.org/nsedoc/scripts/ssh2-enum-algos.html
https://github.com/Balasys/dheater


补充:CVE-2002-20001漏洞修复参考

不同版本openssh支持的kexalgorithms对比,以7.4和8.7为例
OpenSSH算法协议漏洞修复_第15张图片
可以看到8.7版本相较于7.4,舍弃了三种kex:

  • diffie-hellman-group-exchange-sha1
  • diffie-hellman-group14-sha1
  • diffie-hellman-group1-sha1

这三个dh协议算法,在 ietf 官方文档 中也有详细的说明
OpenSSH算法协议漏洞修复_第16张图片
因此,修复该CVE漏洞时,需要将不安全的dh协议算法从ssh服务端支持列表中移除

sshd -T | grep -w kexalgorithms
echo "kexalgorithms curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256" >> /etc/ssh/sshd_config
systemctl restart sshd
sshd -T | grep -w kexalgorithms

OpenSSH算法协议漏洞修复_第17张图片
访问测试
OpenSSH算法协议漏洞修复_第18张图片
如果还是扫描到该漏洞,则参考 https://github.com/Balasys/dheater 中的方法,直接将全部dh算法移除。不影响ssh连接访问即可。

  • ssh7.4
sshd -T | grep -w kexalgorithms
echo "kexalgorithms curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521" >> /etc/ssh/sshd_config
systemctl restart sshd
sshd -T | grep -w kexalgorithms

OpenSSH算法协议漏洞修复_第19张图片

  • ssh8.7
sshd -T | grep -w kexalgorithms
echo "kexalgorithms -diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256" >> /etc/ssh/sshd_config
systemctl restart sshd
sshd -T | grep -w kexalgorithms

OpenSSH算法协议漏洞修复_第20张图片

你可能感兴趣的:(安全运维,ssh,安全,服务器,centos,linux)