【转】linux /centos 中OpenSSL升级方法详解
相关软件下载地址
Apache:http://httpd.apache.org/
Nginx:http://nginx.org/en/download.html
OpenSSL:http://www.openssl.org/
openssl-poc
附件说明
PoC.py : 漏洞利用测试PoC脚本
showssl.pl:OpenSSL动态库版本检测脚本
安装OpenSSL步骤
由于运营环境不同,以下过程仅供参考。openssl属于系统应用,被较多应用依赖,由于环境不同等因素,请先在测试环境进行充分测试。
从官方下载最新版本的opensssl库
wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz
解压下载的openssl压缩包
tar -zxvf openssl-1.0.1g.tar.gz
进入解压后的openssl文件夹
cd openssl-1.0.1g
执行文件夹中的config文件,这里openssl的安装目录默认是/usr/local/ssl(由于系统环境差异路径可能不一致,下同),注意添加zlib-dynamic参数,使其编译成动态库
代码如下 | 复制代码 |
./config shared zlib-dynamic config完成后执行 make 命令 make make 命令执行完后再执行 make install 命令,安装openssl make install 重命名原来的openssl命令 mv /usr/bin/openssl /usr/bin/openssl.old 重命名原来的openssl目录 mv /usr/include/openssl /usr/include/openssl.old 将安装好的openssl 的openssl命令软连到/usr/bin/openssl ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl 将安装好的openssl 的openssl目录软连到/usr/include/openssl ln -s /usr/local/ssl/include/openssl /usr/include/openssl 修改系统自带的openssl库文件,如/usr/local/lib64/libssl.so(根据机器环境而定) 软链到升级后的libssl.so ln -s /usr/local/ssl/lib/libssl.so /usr/local/lib64/libssl.so 执行命令查看openssl依赖库版本是否为1.0.1g: strings /usr/local/lib64/libssl.so |grep OpenSSL 在/etc/ld.so.conf文件中写入openssl库文件的搜索路径 echo "/usr/local/ssl/lib" >> /etc/ld.so.conf 使修改后的/etc/ld.so.conf生效 |
ldconfig -v
查看现在openssl的版本是否是升级后的版本
openssl version
更新Webserver的 OpenSSL依赖库
如果webserver在安装编译时加载了openssl,还需对webserver进行重启或者重新编译操作。因webserver安装时分为动态编译和静态编译openssl两种方式,所以具体操作方式也不同。
判断webserver是否为动态编译ssl的两种方法
通过ldd命令查看依赖库
查看编译参数
如输入以命令/usr/sbin/nginx -V,查看nginx的编译参数,参数中不存在--with-openssl则为动态编译ssl的,反之为静态:
更新OpenSSL库
a) 如果webserver是动态编译ssl安装的,直接重启apache,nginx等相应webserver服务即可。
b) 如果webserver是静态编译ssl安装的,可参照以下方法更新:
apache静态编译ssl的情况:
源码重新安装apache,使用ssl静态编译:
执行apache的configure文件时,除了业务需要的参数外,需要指定ssl为静态编译
代码如下 | 复制代码 |
./configure --enable-ssl=static --with-ssl=/usr/local/ssl (openssl的安装路径) |
安装apache
代码如下 | 复制代码 |
make && make install |
恢复原有apache配置,重启服务即可
nginx静态编译ssl的情况:
源码重新安装nginx,使用ssl静态编译:
执行nginx的configure文件时,除了业务需要的参数外,需要指定ssl为静态编译,编译参数带上--with-openssl便表明为静态编译ssl
代码如下 | 复制代码 |
./configure --with-http_ssl_module --with-openssl=/usr/local/ssl (openssl的安装路径) |
安装nginx
代码如下 | 复制代码 |
make && make install |
恢复原有nginx配置,重启服务即可
如有其他使用openssl的情况,参照apache和nginx的解决方式。
测试漏洞是否存在
使用附件PoC.py根据脚本提示检测是否存在漏洞。
如:
测试https://192.168.0.1漏洞是否存在执行命令如下
代码如下 | 复制代码 |
python PoC.py -p 443,8443 192.168.0.1 |
检测动态库libssl.so版本
检测当前进程使用的libssl.so版本
执行附件showssl.pl检查脚本,无信息输出或无漏洞版本openssl输出,表示升级成功;如输出中有unknown,请业务自查libssl.so.1.0.0的版本是否是受影响的版本。
(详情见附件)
代码如下 | 复制代码 |
#!/usr/bin/perl -w my @listInfo = `lsof |grep libssl|awk '{print $1" "$2" "$NF}'|sort -u`; foreach my $info (@listInfo) { my ($procName, $procPid, $libPath) = split(/s/, $info); next if (!defined($procName) || !defined($procPid)|| !defined($libPath)); my $version = `strings $libPath|grep -E "^OpenSSL [0-9]+.[0-9]+"`; chomp $version; if ($version =~ /s*OpenSSLs*1.0.1[a-f]{0,2}/) { print "$procName($procPid) : $libPath ($version).n"; } } |
检测系统使用的libssl.so版本
执行命令:
代码如下 | 复制代码 |
strings /usr/local/lib64/libssl.so |grep OpenSSL |
查看openssl依赖库版本是否为1.0.1g
注:/usr/local/lib64/libssl.so 路径仅供参考,由具体机器环境决定,参考升级步骤
转载于:https://www.cnblogs.com/dsc65749924/p/5857443.html
【转】linux /centos 中OpenSSL升级方法详解相关推荐
- Linux系统中的软件管理详解(下)—搭建网络软件仓库及第三方软件仓库
Linux系统中的软件管理详解(下) 5.软件仓库管理命令 a)dnf 命令: 管理软件仓库中的安装包 dnf repolist ##列出仓库信息clean all ##清除系统中已经加载的仓库缓存信 ...
- Linux系统中UID和GID详解
Linux系统中UID和GID详解 在Linux系统中,每个用户和组都有一个唯一的数字标识符,分别称为UID(用户ID)和GID(组ID).这些标识符用于在系统级别上对用户和组进行身份验证和授权,并且 ...
- java多线程中的join方法详解
java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...
- Java中的main()方法详解
源文作者:leizhimin 源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- php 文件扫描去重,PHP中的去重方法详解和文件下载
本文主要和大家分享PHP中的去重方法详解和文件下载,在php中文件导入过程中,经常会遇到重复事件,那么就需要我们去重,然后进行下载. 1.思想 先设置一个存储主键数组,和一个空数组.解析文件,然后看要 ...
- keep alive PHP,vue中keep-alive使用方法详解
这次给大家带来vue中keep-alive使用方法详解,vue中keep-alive使用的注意事项有哪些,下面就是实战案例,一起来看一下. 1.keep-alive的作用以及好处 在做电商有关的项目中 ...
- linux系统里route -n不起作用,Linux系统中traceroute命令使用详解
Linux系统中traceroute命令可以追踪到网络数据包的路由途径.下面由学习啦小编为大家整理了linux系统中traceroute命令使用详解,希望对大家有帮助! Linux系统中tracero ...
- Linux 内核中RAID5源码详解之守护进程raid5d
Linux 内核中RAID5源码详解之守护进程raid5d 对于一个人,大脑支配着他的一举一动:对于一支部队,指挥中心控制着它的所有活动:同样,对于内核中的RAID5,也需要一个像大脑一样的东西来支配 ...
最新文章
- 纠错工具之 - Proovread
- [转载]Word直接发布新浪博客(以Word 2013为例)
- 给Eclipse提速的7个技巧
- Java 连接 timesten
- EF 从sqlserver2008 迁移到 2005出现的BUG
- TCP/IP中的传输层协议TCP、UDP
- 微软计划Windows 7 SP2开发
- Linux下批量替换文件内容和文件名(转)
- 负载均衡的几种方式_负载均衡的几种类型
- 关于poi处理word换行问题
- 怎样修改PDF中的文本的字体
- deepin[idea添加桌面]
- R语言单因素方差分析(附代码)
- 地球系统模式(CESM)
- file创建文件失败的问题
- gitlab cicd配置
- 动物识图UI_demo
- 用装饰者模式 动手写一个导弹系统组装功能(滑稽+1)
- centos 8 进入紧急救援模式
- 微软sql服务器如何安装,Microsoft SQL Server 2012 数据库安装图解教程
热门文章
- mongoose和mongodb的几篇文章 (ObjectId,ref)
- Crystal Reports Maximum Report Processing Jobs Limit
- 上传附件的格式和大小限制
- linux grub error 22,Linux系統grub常見錯誤問題解決
- javaweb html5离线存储配置,JavaWeb 知识补充
- apirestful php自动测试,PHP实现自动识别Restful API的返回内容类型
- 值不值得入手_比3系更运动!标配2.0T+后驱,凯迪拉克CT5值不值得入手
- (41)System Verilog 例化System Verilog模块
- alias怎么每次登陆都保存_设置alias别名并使之重启或者注销用户之后依旧生效...
- MRC522(2):超简易门禁