目录

一、故障重现

二、救援过程


一、故障重现

近日为了解决CVE-2021-3449: 拒绝服务漏洞、CVE-2021-3450: 证书校验漏洞,自己编译了openssl-1.1.1k。
亲测发现:
只升级openssl的版本,动态库版本没有升级,系统可用。
升级openssl版本,同时升级libcrypto.so.1.1动态库版本,导致严重的故障,系统不可用。
原因是详细描述在这https://github.com/openssl/openssl/issues/11471,因此不建议自行编译升级openssl。

如果贸然升级,替换了libcrypto.so.1.1动态库,将导致严重的故障:
ssh无法远程登录服务器
root等账户无法本地登录,登录时输入root账户直接报错Login Error
passwd命令遇到authentication token manipulation error报错。
yum、rpm等命令都依赖libcrypto.so.1.1,救援模式下也无法卸载高版本的openssl。

二、救援过程

先找一台linux服务器,挂磁盘,创建分区(本例/dev/sdc1),格式化,并挂在到/mnt

[root@toy ~]# mount /dev/sdc1 /mnt/
[root@toy ~]# cd /mnt

下载原来openssl-1.1.1g版本相关的rpm包,用rpm2cpio和cpio命令从rpm包提取归档文件,也就是原来可用的openssl、libcrypto.so、libssl.so等文件,这些文件提取出来后放在usr/bin和usr/lib64目录下。

[root@toy mnt]# rpm2cpio openssl-1.1.1g-12.el8_3.x86_64.rpm | cpio -dium
[root@toy mnt]# rpm2cpio openssl-devel-1.1.1g-12.el8_3.x86_64.rpm | cpio -dium
[root@toy mnt]# rpm2cpio openssl-libs-1.1.1g-12.el8_3.x86_64.rpm | cpio -dium
[root@toy mnt]# rpm2cpio openssl-perl-1.1.1g-12.el8_3.x86_64.rpm | cpio -dium
[root@toy mnt]# rpm2cpio openssl-pkcs11-0.4.10-2.el8.x86_64.rpm | cpio -dium[root@toy mnt]# tree -L 2 usr/
usr/
├── bin
│   ├── CA.pl
│   ├── c_rehash
│   ├── make-dummy-cert
│   ├── openssl
│   ├── renew-dummy-cert
│   ├── tsget -> tsget.pl
│   └── tsget.pl
├── include
│   └── openssl
├── lib
├── lib64
│   ├── engines-1.1
│   ├── libcrypto.so -> libcrypto.so.1.1.1g
│   ├── libcrypto.so.1.1 -> libcrypto.so.1.1.1g
│   ├── libcrypto.so.1.1.1g
│   ├── libp11.so.3 -> libp11.so.3.4.2
│   ├── libp11.so.3.4.2
│   ├── libssl.so -> libssl.so.1.1.1g
│   ├── libssl.so.1.1 -> libssl.so.1.1.1g
│   ├── libssl.so.1.1.1g
│   └── pkgconfig
└── share├── doc├── licenses└── man

关闭这台服务器后,把这个磁盘挂在到故障服务器,启动后进入救援模式。

把这个分区(在这里就是/dev/sdb1)挂载到/sysroot/mnt目录。将提取的1.1.1g版本的归档文件,覆盖到相应的/bin、/lib64等目录,同时删除1.1.1k版本的库文件,ldconfig一下。再重启就可以正常登录服务器了。

switch_root:/# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1
switch_root:/# mount -o rw,remount /sysroot
switch_root:/# mount /dev/sdb1 /sysroot/mnt/
switch_root:/# chroot /sysroot/sh-4.4# cd /mnt
sh-4.4# cp -r ./usr/bin/*   /usr/bin
sh-4.4# cp -r ./usr/lib64/* /usr/lib64
sh-4.4# rm /usr/lib64/libcrypto.so.1.1.1k
sh-4.4# rm /usr/lib64/libssl.so.1.1.1k
sh-4.4# ldconfigsh-4.4# cd
sh-4.4# touch .autorelabelsh-4.4# exit
switch_root:/# exit

进入服务器后用yum downgrade命令,降级重新安装openssl-1.1.1g。

yum downgrade openssl openssl-devel openssl-libs openssl-perl openssl-static --allowerasing

经验教训,升级务必使用测试机充分测试,虚拟化环境能做快照就做快照。

【救援过程】升级openssl导致libcrypto.so.1.1动态库不可用相关推荐

  1. mysql 升级 openssl_升级openssl

    升级openssl 依赖openssl的软件,如果是静态编译openssl,那么需要重新编译软件,如果是利用openssl的so动态库,那么只需要替换一下so文件并重启软件即可 openssh也依赖o ...

  2. Centos7.6编译升级openssl、openssh服务,关闭rpcbind服务

    目录 1. 安装telnet服务(可选) 2. openssl升级 2.1 备份原有openssl服务 2.2编译安装.及编译安装出现的报错 2.3 建立软连接 2.4 更新动态连接数据库 2.5查看 ...

  3. php openssl tls1.2,升级openssl 支持TLS1.2

    支持TLS1.2 背景: 现在许多网站,都要求tls1.2协议以上,像github. pip3安装包网站https://pip.pypa.io/等. openssl现有版本不支持.需要升级openss ...

  4. linux升级tls,为CentOS升级OpenSSL 让Nginx支持TLS 1.2

    最近在调试微信小程序时,发现wx.request请求总是无法正确获取服务器端的数据,经过检查发现是因为服务器端https不支持微信要求的TLS 1.2版本. 登录到服务器上,用openssl vers ...

  5. linux升级openssl需要先卸载吗,linux下安装/升级openssl

    (2810)  (1) 安装环境: 操作系统:CentOs7 OpenSSL Version:openssl-1.0.2j.tar.gz 安装: 目前版本最新的SSL地址为 备注:进入http://w ...

  6. centos6.9升级openssl版本

    最近遇到客户远程连接不上linux云服务器.进入系统后才发现openssl版本出现问题导致sshd服务异常. 此处留白后续补充. 因此回家简单测试了一下在centos6.9上升级openssl版本的实 ...

  7. openssl、libosip2、libeXosip2三个库的编译过程

    有同事最近要使用到sip的东东,需要使用到openssl.libosip2.libeXosip2这三个库,具体干嘛的我还不清楚,最近事多,头脑不太清醒,也不想记那些跟自己没关系的事. 不过山人自认为对 ...

  8. 升级OpenSSL修复高危漏洞Heartbleed

    升级OpenSSL修复高危漏洞Heartbleed 背景:          OpenSSL全称为Secure Socket Layer.是Netscape所研发.利用数据加密(Encryption) ...

  9. linux exosip编译,openssl、libosip2、libeXosip2三个库的编译过程

    有同事最近要使用到sip的东东,需要使用到openssl.libosip2.libeXosip2这三个库,具体干嘛的我还不清楚,最近事多,头脑不太清醒,也不想记那些跟自己没关系的事. 不过山人自认为对 ...

最新文章

  1. RHEL5系统配置双网卡绑定
  2. c++interesting转换为uint_1.6运算符及数据类型转换
  3. 『DNS隧道工具集合』— iodine
  4. android实现华为手机拍照上传_继续引领手机拍照 华为将带来液态镜头
  5. HTTP Status 500 – Internal Server Error
  6. Spring5源码 - 13 Spring事件监听机制_@EventListener源码解析
  7. SqlConnection中 Close()Dispose()Using()的区别
  8. javascript --- 自定义数组的反序函数
  9. yii::$app-mongodb 查询纪录数_老詹总决赛有多强?12项数据领先乔丹科比,已握10项数据纪录...
  10. sysctl.conf文件详解
  11. Redis 学习---(12)Redis HyperLogLog
  12. 注意了!人社部宣布:未来5年,这 10 个新职业有千万缺口
  13. struts的比较标签,在使用时,与测试时需要留心。
  14. 新版chrome移动端踩坑
  15. 在Ubuntu上安装JDK、Ant、Jmeter和Jenkins
  16. android 手机如何备份通讯录,手机通讯录怎么备份
  17. 华泰证券python算法工程师_华泰证券高薪诚聘 技术大牛/运维平台架构师
  18. matlab 如何使用虚数,编程高手帮我解决下怎么用matlab解含有虚数的微分方程组...
  19. 无路可逃java攻略_《生化危机2:重制版》幽灵生还者无路可逃流程攻略
  20. 2019-04-07 Python之利用PIL改变图片颜色和生成手绘图

热门文章

  1. c语言中的普通字符包括什么,【判断题】C语言中的字符常量通常有两种形式:普通字符和转义字符。...
  2. 用户管理系统控制台版连接数据库
  3. 关于Cocoa Pods的升级安装和使用说明
  4. 卡片右上角三角形效果,按钮点击变色
  5. 女神推荐, 卡片,广告图 ,点击查看更多
  6. Java基础知识回顾之六 ----- IO流
  7. Hibernate获取数据java.lang.StackOverflowError
  8. SQL server 基本语句
  9. DSSM(DEEP STRUCTURED SEMANTIC MODELS)
  10. C语言编写的PHP框架--yaf入门编程