当前位置 博文首页 > 阿俊之家●●●https://ximenjianxue.blog.csdn.net:SSL/TLS协

    阿俊之家●●●https://ximenjianxue.blog.csdn.net:SSL/TLS协

    作者:[db:作者] 时间:2021-09-08 13:39

    概述

    SSL/TLS协议信息泄露漏洞(CVE-2016-2183)漏洞:

    SSL全称是Secure Sockets Layer,安全套接字层,它是由网景公司(Netscape)设计的主要用于Web的安全传输协议,目的是为网络通信提供机密性、认证性及数据完整性保障。如今,SSL已经成为互联网保密通信的工业标准。SSL最初的几个版本(SSL 1.0、SSL2.0、SSL 3.0)由网景公司设计和维护,从3.1版本开始,SSL协议由因特网工程任务小组(IETF)正式接管,并更名为TLS(Transport Layer Security),发展至今已有TLS 1.0、TLS1.1、TLS1.2,TLS1.3这几个版本。TLS, SSH, IPSec协商及其他产品中使用的DES及Triple DES密码存在大约四十亿块的生日界,这可使远程攻击者通过Sweet32攻击,获取纯文本数据。

    风险级别:低

    该漏洞又称为SWEET32(https://sweet32.info)是对较旧的分组密码算法的攻击,它使用64位的块大小,缓解SWEET32攻击OpenSSL 1.0.1和OpenSSL 1.0.2中基于DES密码套件从“高”密码字符串组移至“中”;但OpenSSL 1.1.0发布时自带这些,默认情况下禁用密码套件。该问题在新的openssl版本中已解决。

    【升级建议】

    OpenSSL 1.0.2用户应升级到1.0.2i
    OpenSSL 1.0.1用户应升级到1.0.1u

    升级

    1、官方地址:https://www.openssl.org/source/;最新的稳定版本是1.1.1系列,且是TLS版本;之前旧版本(包括1.1.0, 1.0.2, 1.0.0 and 0.9.8)不在支持维护;
    在这里插入图片描述
    下载地址:https://www.openssl.org/source/openssl-1.1.1i.tar.gz

    2、或者linux上直接运行:
    openssl version -a //确认当前版本,备份证书文件和秘钥文件
    mv /usr/bin/openssl /usr/bin/openssl.old /备份执行文件
    mv /usr/include/openssl /usr/include/openssl.old
    cd /usr/local/src/
    wget https://www.openssl.org/source/openssl-1.1.1h.tar.gz
    tar zxvf openssl-1.1.1h.tar.gz
    cd ./openssl-1.1.1h/
    ./config --prefix=/opt/openssl --openssldir=/usr/local/ssl //预编译,到指定安装路径,生成Makefile文件,-t参数可测试编译情况,–prefix:指定安装目录;–openssldir:指定openssl配置文件路径;加shared还可指定创建动态链接库
    make //编译,如果编译失败,可执行./make clean,或者编译前用./make test测试编译情况而不直接编译
    make install //编译成功后安装

    注意:编译失败可能需要更新zlib(http://www.zlib.net/)和gcc,注意提示
    gcc -v //确定当前gcc版本,按需升级
    cat /usr/lib64/pkgconfig/zlib.pc //确定当前zlib版本,按需升级
    或尝试yum upgrade zlib zlib-devel gcc* -y //update升级包保留旧版本,upgrade升级后删除旧版本,如果不跟具体包名,update级所有包同时也升级软件和系统内核(升级环境可能会导致生成事故),upgrade 升级后,只升级所有包,不升级软件和系统内核。这不同于ubuntu环境,update 是同步 /etc/apt/sources.list 和 /etc/apt/
    sources.list.d 中列出的源的索引,以变upgrade时获取到最新的软件包进行安装,在执行 upgrade 之前要执行 update才能从最新软件包更新。

    3、替换原有旧openssl文件:
    1)/usr/local/bin:
    ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
    ln -s /usr/local/ssl/include/openssl /usr/include/openssl
    2)配置文件/usr/local/ssl:备份
    3)库文件检查:/usr/local/lib64 //根据实际的环境库文件位置配置,有的为usr/local/ssl/lib,注意具体位置。如不放心,整个库文件夹备份。
    4)验证:ldconfig -v|grep ssl //确定链接库
    5)版本验证:openssl version
    如果执出现openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory错误,即缺少相关库依赖,请检查以下库文件,执行:
    ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
    ln -s /usr/local/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1

    ldconfig -v|grep ssl //确定链接库正常

    echo “/usr/local/lib64” >> /etc/ld.so.conf //将新的库文件地址写入记录so库的配置文件,更新动态链接库数据

    再次验证:openssl version

    附录1:关于ssl算法涉及的漏洞

    1)获取当前查询OpenSSH应用的算法:
    SSH 提供了一些可用的加密算法。可以在 */etc/ssh/ssh_config or ~/.ssh/config * 文件中看到
    在这里插入图片描述
    默认的,SSH 会使用 3des 算法,但des会被某漏洞利用,TLS, SSH, IPSec协商及其他产品中使用的DES及Triple DES密码存在大约四十亿块的生日界,这可使远程攻击者通过Sweet32攻击,获取纯文本数据。如果想从ssh移除某种算法,删掉即可。

    [root@bigdata ]# sshd -T |grep ciphers //命令方式:输出如下
    ciphers aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc

    2)查看linux服务器上支持的ssh对称秘钥:

    ssh -Q cipher //输出如下

    3des-cbc
    aes128-cbc
    aes192-cbc
    aes256-cbc
    rijndael-cbc@lysator.liu.se
    aes128-ctr
    aes192-ctr
    aes256-ctr
    aes128-gcm@openssh.com
    aes256-gcm@openssh.com
    chacha20-poly1305@openssh.com

    3)查看支持身份验证加密的对称秘钥

    ssh -Q cipher-auth //输出如下
    aes128-gcm@openssh.com
    aes256-gcm@openssh.com
    chacha20-poly1305@openssh.com

    4)查看支持的消息完整性秘钥

    ssh -Q mac //输出如下

    hmac-sha1
    hmac-sha1-96
    hmac-sha2-256
    hmac-sha2-512
    hmac-md5
    hmac-md5-96
    umac-64@openssh.com
    umac-128@openssh.com
    hmac-sha1-etm@openssh.com
    hmac-sha1-96-etm@openssh.com
    hmac-sha2-256-etm@openssh.com
    hmac-sha2-512-etm@openssh.com
    hmac-md5-etm@openssh.com
    hmac-md5-96-etm@openssh.com
    umac-64-etm@openssh.com
    umac-128-etm@openssh.com

    1. 指定秘钥算法进行ssh连接

    用法:ssh -oCiphers=aes128-ctr server_IP

    示例验证ssh-rsa加密算法的ssh连接:ssh -oHostKeyAlgorithms=-ssh-rsa user@host

    如果主机密钥验证失败,并且没有其他受支持的主机密钥类型可用,则该主机上的服务器ssh软件应升级。

    在这里插入图片描述

    附录2:ssh参数回顾

    1)使用 -l 选项参数,指定用非当前用户登录,等同与ssh 指定用户@sshd_IP

    2)用 *-p 选项,后面在加上 SSH 端口号,指定sshd端口

    3) -v 选项参数,使用调试模式验证建立的 SSH 连接情况

    4)指定ssh连接的源地址,适用于客户端有多于两个以上的 IP 地址,难分清楚默认使用哪一个 IP 连接到 SSH 服务器,使用 -b 选项来指定一个IP 地址。这个 IP 将会被使用做建立连接的源地址。

    示例:$ ssh -b 192.168.10.12 -l blue 192.168.10.205

    5)使用 -F 选项指定要使用的ssh配置文件

    默认情况下,ssh 会使用位于 /etc/ssh/ssh_config 的配置文件。这个配置文件作用于系统的所有用户。但你想要为特定的用户指定特殊的设置的话,可以把配置放入 ~/.ssh/config 文件中。如果此文件不存在,可以手工创建一个。

    示例:比如创建my_ssh_config文件

    Host 192.168.10.*
    ForwardX11 yes
    PasswordAuthentication yes
    ConnectTimeout 10
    Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
    Protocol 2
    HashKnownHosts yes
    

    $ ssh -F /~/.ssh/my_ssh_config 192.168.10.205

    6)使用-X参数来使用 SSH X11 Forwarding

    某些时候,想把服务端的 X11 应用程序显示到客户端计算机上,SSH 提供了 -X 选项。但要启用这功能,我们需要在服务器端,在 /etc/ssh/ssh_config 文件中的行设置成 ForwardX11 yes 或者 X11Forwad yes,以启用 X11 Forwarding,重启 SSH 服务程序。

    然后在客户端,输入 ssh -X user@host:

    $ ssh -X blue@192.168.10.205

    登陆后输入:$ echo $DISPLAY //检查,可以看到向如下类似输出

    localhost:10:0

    随后就可以运行应用了,仅仅只能输入应用程序的命令。比如想运行 xclock 程序,输入:

    $ xclock //检查xclock 确实是运行在远端系统的,但它会在你的本地系统里显示了。

    cs