草庐IT

OpenSSH算法协议漏洞修复

zhongxj183 2023-07-30 原文

OpenSSH算法协议漏洞修复

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

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

查看kexalgorithms

查看客户端支持的kexalgorithms

ssh -Q kex


查看服务端支持的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,curve25519-sha256@libssh.org,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


测试验证

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

ssh -v -oKexAlgorithms=diffie-hellman-group1-sha1 root@192.168.64.101


不指定 KexAlgorithms 连接测试

ssh -v root@192.168.64.101

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

查看ciphers

查看客户端支持的ciphers

ssh -Q cipher


查看服务端支持的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 chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com" >> /etc/ssh/sshd_config
systemctl restart sshd
sshd -T | grep -w ciphers


测试验证

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

ssh -v -oCiphers=3des-cbc root@192.168.64.101


不指定 Ciphers 连接测试

ssh -v root@192.168.64.101

Nessus扫描

修复前扫描结果

修复后扫描结果

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列表:

支持的Ciphers列表:

参考文章

互联网工程任务组官方文档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为例

可以看到8.7版本相较于7.4,舍弃了三种kex:

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

这三个dh协议算法,在 ietf 官方文档 中也有详细的说明

因此,修复该CVE漏洞时,需要将不安全的dh协议算法从ssh服务端支持列表中移除

sshd -T | grep -w kexalgorithms
echo "kexalgorithms curve25519-sha256,curve25519-sha256@libssh.org,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


访问测试

如果还是扫描到该漏洞,则参考 https://github.com/Balasys/dheater 中的方法,直接将全部dh算法移除。不影响ssh连接访问即可。

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

  • 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算法协议漏洞修复的更多相关文章

  1. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  2. Tomcat AJP 文件包含漏洞(CVE-2020-1938) - 2

    目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控

  3. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  4. ruby - 如何修复 RVM gem "[ missing bin/ruby ]" - 2

    执行rvmlist后,我得到以下输出:rvmrubiesgems[missingbin/ruby]=*ruby-2.0.0-p645[x86_64]ruby-2.1.6[x86_64]ruby-2.2.1[x86_64]gems[missingbin/ruby]是什么意思?gems是某种系统gemset吗?它不是我创建的,我不知道我是否可以或应该删除它。 最佳答案 在我跑完之后:rvmfix-permissions然后我能够卸载具有[缺少bin/ruby]的版本。 关于ruby-如何修复

  5. ruby - HTTP POST 上的 SSL 错误(未知协议(protocol)) - 2

    尝试通过SSL连接到ImgurAPI时出现错误。这是代码和错误:API_URI=URI.parse('https://api.imgur.com')API_PUBLIC_KEY='Client-ID--'ENDPOINTS={:image=>'/3/image',:gallery=>'/3/gallery'}#Public:Uploadanimage##args-Theimagepathfortheimagetoupload#defupload(image_path)http=Net::HTTP.new(API_URI.host)http.use_ssl=truehttp.verify

  6. 100个python算法超详细讲解:画直线 - 2

    1.问题描述使用Python的turtle(海龟绘图)模块提供的函数绘制直线。2.问题分析一幅复杂的图形通常都可以由点、直线、三角形、矩形、平行四边形、圆、椭圆和圆弧等基本图形组成。其中的三角形、矩形、平行四边形又可以由直线组成,而直线又是由两个点确定的。我们使用Python的turtle模块所提供的函数来绘制直线。在使用之前我们先介绍一下turtle模块的相关知识点。turtle模块提供面向对象和面向过程两种形式的海龟绘图基本组件。面向对象的接口类如下:1)TurtleScreen类:定义图形窗口作为绘图海龟的运动场。它的构造器需要一个tkinter.Canvas或ScrolledCanva

  7. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  8. 什么是0day漏洞?如何预防0day攻击? - 2

    什么是0day漏洞?0day漏洞,是指已经被发现,但是还未被公开,同时官方还没有相关补丁的漏洞;通俗的讲,就是除了黑客,没人知道他的存在,其往往具有很大的突发性、破坏性、致命性。0day漏洞之所以称为0day,正是因为其补丁永远晚于攻击。所以攻击者利用0day漏洞攻击的成功率极高,往往可以达到目的并全身而退,而防守方却一无所知,只有在漏洞公布之后,才后知后觉,却为时已晚。“后知后觉、反应迟钝”就是当前安全防护面对0day攻击的真实写照!为了方便大家理解,中科三方为大家梳理当前安全防护模式下,一个漏洞从发现到解决的三个时间节点:T0:此时漏洞即0day漏洞,是已经被发现,还未被公开,官方还没有相

  9. ruby - 在 Ruby 中实现 Luhn 算法 - 2

    我一直在尝试用Ruby实现Luhn算法。我一直在执行以下步骤:该公式根据其包含的校验位验证数字,该校验位通常附加到部分帐号以生成完整帐号。此帐号必须通过以下测试:从最右边的校验位开始向左移动,每第二个数字的值加倍。将乘积的数字(例如,10=1+0=1、14=1+4=5)与原始数字的未加倍数字相加。如果总模10等于0(如果总和以零结尾),则根据Luhn公式该数字有效;否则无效。http://en.wikipedia.org/wiki/Luhn_algorithm这是我想出的:defvalidCreditCard(cardNumber)sum=0nums=cardNumber.to_s.s

  10. Ruby 斐波那契算法 - 2

    下面是我写的一个计算斐波那契数列中的值的方法:deffib(n)ifn==0return0endifn==1return1endifn>=2returnfib(n-1)+(fib(n-2))endend它工作到n=14,但在那之后我收到一条消息说程序响应时间太长(我正在使用repl.it)。有人知道为什么会这样吗? 最佳答案 Naivefibonacci进行了大量的重复计算-在fib(14)fib(4)中计算了很多次。您可以将内存添加到您的算法中以使其更快:deffib(n,memo={})ifn==0||n==1returnnen

随机推荐