• Openssh算法协议上的漏洞修复DiffieHellman Key Agreement Protocol 资源管理错误漏洞(CVE200220001)


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

    查看Kexalgorithms-此举操作是确认客户端支持的kexalgorithms
    [root@cntf1 ~]# ssh -Q kex
    diffie-hellman-group1-sha1
    diffie-hellman-group14-sha1
    diffie-hellman-group14-sha256
    diffie-hellman-group16-sha512
    diffie-hellman-group18-sha512
    diffie-hellman-group-exchange-sha1
    diffie-hellman-group-exchange-sha256
    ecdh-sha2-nistp256
    ecdh-sha2-nistp384
    ecdh-sha2-nistp521
    curve25519-sha256
    curve25519-sha256@libssh.org
    gss-gex-sha1-
    gss-group1-sha1-
    gss-group14-sha1-
    

    image

    查看服务端支持的kexalgorithms
    [root@cntf1 ~]# sshd -T | grep -w kexalgorithms
    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-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
    

    image

    修复方法

    • 通过修改sshd_config配置文件,屏蔽掉不安全的KexAlgorithjms,其中具体的sshd_config配置参数可以从man文档中查看

      • 通过man文档查看当前openssh版本支持的算法列表和参数用法。
      • 指定可用的KEX(Key Exchange)算法,多个算法之间使用英文模式下的逗号。
      • 如果指定的列表以’ + '字符开头,则指定的算法将被追加到默认集,而不是替换原有默认的。
      • 如果指定的列表以’ - '字符开头,则指定的算法(包括通配符)将从默认集中删除,而不是替换。较新的openssh版本支持。
      • 如果指定的列表以’ ^ '字符开头,则指定的算法将被放在默认集的开头,同样是较新的openssh版本支持。
    • 具体修复方法,这里是直接去掉了所有Diffie-Hellman算法

    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" >> /etc/ssh/sshd_config
    systemctl restart sshd
    sshd -T | grep -w kexalgorithms
    

    image

                       curve25519-sha256
                       curve25519-sha256@libssh.org
                       diffie-hellman-group1-sha1
                       diffie-hellman-group14-sha1
                       diffie-hellman-group-exchange-sha1
                       diffie-hellman-group-exchange-sha256
                       ecdh-sha2-nistp256
                       ecdh-sha2-nistp384
                       ecdh-sha2-nistp521
    
    未禁用diffie-hellman算法之前,可用正常使用ssh连接登录
    C:\Users\0xxxd>ssh -v -oKexAlgorithms=diffie-hellman-group1-sha1 root@192.168.182.131
    OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
    debug1: Reading configuration data C:\\Users\\0xxxd/.ssh/config
    debug1: Reading configuration data __PROGRAMDATA__\\ssh/ssh_config
    debug1: Connecting to 192.168.182.131 [192.168.182.131] port 22.
    debug1: Connection established.
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_rsa type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_rsa-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_dsa type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_dsa-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ecdsa type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ecdsa-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ed25519 type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ed25519-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_xmss type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_xmss-cert type -1
    debug1: Local version string SSH-2.0-OpenSSH_for_Windows_8.1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
    debug1: match: OpenSSH_7.4 pat OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.4*,OpenSSH_7.5*,OpenSSH_7.6*,OpenSSH_7.7* compat 0x04000002
    debug1: Authenticating to 192.168.182.131:22 as 'root'
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: algorithm: diffie-hellman-group1-sha1
    debug1: kex: host key algorithm: ecdsa-sha2-nistp256
    debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug1: Server host key: ecdsa-sha2-nistp256 SHA256:ufqEJ867EJk+iK7/RGfpFof5dtNTax88bvkEGdQSxhc
    debug1: read_passphrase: can't open /dev/tty: No such file or directory
    The authenticity of host '192.168.182.131 (192.168.182.131)' can't be established.
    ECDSA key fingerprint is SHA256:ufqEJ867EJk+iK7/RGfpFof5dtNTax88bvkEGdQSxhc.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '192.168.182.131' (ECDSA) to the list of known hosts.
    debug1: rekey out after 134217728 blocks
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: rekey in after 134217728 blocks
    debug1: pubkey_prepare: ssh_get_authentication_socket: No such file or directory
    debug1: Will attempt key: C:\\Users\\0xxxd/.ssh/id_rsa
    debug1: Will attempt key: C:\\Users\\0xxxd/.ssh/id_dsa
    debug1: Will attempt key: C:\\Users\\0xxxd/.ssh/id_ecdsa
    debug1: Will attempt key: C:\\Users\\0xxxd/.ssh/id_ed25519
    debug1: Will attempt key: C:\\Users\\0xxxd/.ssh/id_xmss
    debug1: SSH2_MSG_EXT_INFO received
    debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
    debug1: Next authentication method: publickey
    debug1: Trying private key: C:\\Users\\0xxxd/.ssh/id_rsa
    debug1: Trying private key: C:\\Users\\0xxxd/.ssh/id_dsa
    debug1: Trying private key: C:\\Users\\0xxxd/.ssh/id_ecdsa
    debug1: Trying private key: C:\\Users\\0xxxd/.ssh/id_ed25519
    debug1: Trying private key: C:\\Users\\0xxxd/.ssh/id_xmss
    debug1: Next authentication method: password
    debug1: read_passphrase: can't open /dev/tty: No such file or directory
    root@192.168.182.131's password:
    debug1: Authentication succeeded (password).
    Authenticated to 192.168.182.131 ([192.168.182.131]:22).
    debug1: channel 0: new [client-session]
    debug1: Requesting no-more-sessions@openssh.com
    debug1: Entering interactive session.
    debug1: pledge: network
    debug1: ENABLE_VIRTUAL_TERMINAL_INPUT is supported. Reading the VTSequence from console
    debug1: ENABLE_VIRTUAL_TERMINAL_PROCESSING is supported. Console supports the ansi parsing
    debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
    Last login: Fri Jun 10 18:09:28 2022 from 192.168.182.1
    

    image

    禁用了diffie-hellman算法之后,带上被禁用的密钥算法登录,显示不能正常使用ssh登录
    C:\Users\0xxxd>ssh -v -oKexAlgorithms=diffie-hellman-group1-sha1 root@192.168.182.131
    OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
    debug1: Reading configuration data C:\\Users\\0xxxd/.ssh/config
    debug1: Reading configuration data __PROGRAMDATA__\\ssh/ssh_config
    debug1: Connecting to 192.168.182.131 [192.168.182.131] port 22.
    debug1: Connection established.
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_rsa type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_rsa-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_dsa type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_dsa-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ecdsa type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ecdsa-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ed25519 type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ed25519-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_xmss type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_xmss-cert type -1
    debug1: Local version string SSH-2.0-OpenSSH_for_Windows_8.1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
    debug1: match: OpenSSH_7.4 pat OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.4*,OpenSSH_7.5*,OpenSSH_7.6*,OpenSSH_7.7* compat 0x04000002
    debug1: Authenticating to 192.168.182.131:22 as 'root'
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: algorithm: (no match)
    Unable to negotiate with 192.168.182.131 port 22: no matching key exchange method found. Their offer: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521
    

    image
    上述使用了禁用的加密算法进行ssh登录发现显示没有匹配到算法,然后无法正常登录

    下面是直接正常ssh登录,不带任何加密算法,发现是可用正常使用ssh登录
    C:\Users\0xxxd>ssh -v root@192.168.182.131
    OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
    debug1: Reading configuration data C:\\Users\\0xxxd/.ssh/config
    debug1: Reading configuration data __PROGRAMDATA__\\ssh/ssh_config
    debug1: Connecting to 192.168.182.131 [192.168.182.131] port 22.
    debug1: Connection established.
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_rsa type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_rsa-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_dsa type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_dsa-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ecdsa type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ecdsa-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ed25519 type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_ed25519-cert type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_xmss type -1
    debug1: identity file C:\\Users\\0xxxd/.ssh/id_xmss-cert type -1
    debug1: Local version string SSH-2.0-OpenSSH_for_Windows_8.1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
    debug1: match: OpenSSH_7.4 pat OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.4*,OpenSSH_7.5*,OpenSSH_7.6*,OpenSSH_7.7* compat 0x04000002
    debug1: Authenticating to 192.168.182.131:22 as 'root'
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: algorithm: curve25519-sha256
    debug1: kex: host key algorithm: ecdsa-sha2-nistp256
    debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug1: Server host key: ecdsa-sha2-nistp256 SHA256:ufqEJ867EJk+iK7/RGfpFof5dtNTax88bvkEGdQSxhc
    debug1: Host '192.168.182.131' is known and matches the ECDSA host key.
    debug1: Found key in C:\\Users\\0xxxd/.ssh/known_hosts:9
    debug1: rekey out after 134217728 blocks
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: rekey in after 134217728 blocks
    debug1: pubkey_prepare: ssh_get_authentication_socket: No such file or directory
    debug1: Will attempt key: C:\\Users\\0xxxd/.ssh/id_rsa
    debug1: Will attempt key: C:\\Users\\0xxxd/.ssh/id_dsa
    debug1: Will attempt key: C:\\Users\\0xxxd/.ssh/id_ecdsa
    debug1: Will attempt key: C:\\Users\\0xxxd/.ssh/id_ed25519
    debug1: Will attempt key: C:\\Users\\0xxxd/.ssh/id_xmss
    debug1: SSH2_MSG_EXT_INFO received
    debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
    debug1: Next authentication method: publickey
    debug1: Trying private key: C:\\Users\\0xxxd/.ssh/id_rsa
    debug1: Trying private key: C:\\Users\\0xxxd/.ssh/id_dsa
    debug1: Trying private key: C:\\Users\\0xxxd/.ssh/id_ecdsa
    debug1: Trying private key: C:\\Users\\0xxxd/.ssh/id_ed25519
    debug1: Trying private key: C:\\Users\\0xxxd/.ssh/id_xmss
    debug1: Next authentication method: password
    debug1: read_passphrase: can't open /dev/tty: No such file or directory
    root@192.168.182.131's password:
    debug1: Authentication succeeded (password).
    Authenticated to 192.168.182.131 ([192.168.182.131]:22).
    debug1: channel 0: new [client-session]
    debug1: Requesting no-more-sessions@openssh.com
    debug1: Entering interactive session.
    debug1: pledge: network
    debug1: ENABLE_VIRTUAL_TERMINAL_INPUT is supported. Reading the VTSequence from console
    debug1: ENABLE_VIRTUAL_TERMINAL_PROCESSING is supported. Console supports the ansi parsing
    debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
    Last login: Fri Jun 10 18:18:17 2022 from 192.168.182.1
    

    image

    参考

    https://blog.csdn.net/zhongxj183/article/details/124928794
    https://mirrors.aliyun.com/pub/OpenBSD/OpenSSH/portable/
    https://www.openssh.com/security.html
    https://blog.csdn.net/weixin_43767602/article/details/124793901
    https://github.com/Balasys/dheater

  • 相关阅读:
    h5手机页面注册处理(短信验证)
    jq倒计时
    Unity实现Android端视频播放
    Unity中自定义扩展方法
    UGUI中粒子特效与UI的遮挡问题
    Unity中各种格式计时器
    Unity中锚点的动态设置
    unity中调试模型时unity崩溃问题
    具体分析UGUI中RectTransform
    unity中加载场景不销毁以及切换场景重复实例化
  • 原文地址:https://www.cnblogs.com/autopwn/p/16363160.html
Copyright © 2020-2023  润新知