升级openssl
升级openssl
依赖openssl的软件,如果是静态编译openssl,那么需要重新编译软件,如果是利用openssl的so动态库,那么只需要替换一下so文件并重启软件即可
openssh也依赖openssl
参考文章
http://www.111cn.net/sys/CentOS/61326.htm
http://bguncle.blog.51cto.com/3184079/1392870/
http://www.cnblogs.com/doomsword/p/3654131.html
http://baike.baidu.com/link?url=-JPAJup4lhmkzO__PjR9IeyHzJ46WjSHYQQSxaQYOxnjc2DVrkzJHRV5M56vhFgiif7Ir_-9spu2mgj8VtMXMq
今天用rkhunter检测了一下服务器,检测结果报:openssl版本太低
# grep -i OpenSSL /var/log/rkhunter.log
[13:43:50] Checking for string '/usr/include/openssl' [ Not found ]
[13:44:11] Checking version of OpenSSL [ Warning ]
[13:44:11] Warning: Application 'openssl', version '1.0.1e', is out of date, and possibly a security risk.
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl 静态编译用 静态库
ln -s /usr/local/ssl/lib/libssl.so /usr/local/lib64/libssl.so 动态编译用 动态库
strings /usr/lib64/libssl.so. |grep -i openssl
OpenSSLDie
OPENSSL_cleanse
OPENSSL_DIR_read
OPENSSL_DIR_end
OPENSSL_init_library
OPENSSL_1.0.1
OPENSSL_1..1_EC
SSLv2 part of OpenSSL 1.0.1e-fips Feb
SSLv3 part of OpenSSL 1.0.1e-fips Feb
TLSv1 part of OpenSSL 1.0.1e-fips Feb
DTLSv1 part of OpenSSL 1.0.1e-fips Feb
OpenSSL 1.0.1e-fips Feb
rpm -ql openssl
/usr/bin/openssl
/usr/lib64/libcrypto.so.1.0.1e
/usr/lib64/libcrypto.so.
/usr/lib64/libssl.so.1.0.1e
/usr/lib64/libssl.so.
/usr/lib64/openssl
http://baike.baidu.com/link?url=-JPAJup4lhmkzO__PjR9IeyHzJ46WjSHYQQSxaQYOxnjc2DVrkzJHRV5M56vhFgiif7Ir_-9spu2mgj8VtMXMq
Heartbleed漏洞之所以得名,是因为用于.
安全传输层协议(TLS)及
数据包传输层安全协议(DTLS)
的 Heartbeat扩展存在漏洞。
Heartbeat扩展为TLS/DTLS提供了一种新的简便的连接保持方式,但由于OpenSSL 1.0.2-beta与OpenSSL 1.0.1在处理TLS heartbeat扩展时的边界错误,
攻击者可以利用漏洞披露连接的客户端或服务器的存储器内容,导致攻击者不仅可以读取其中机密的加密数据,还能盗走用于加密的密钥
受影响的OpenSSL版本:
最后更新于2014年4月9日,据Heartbleed和OpenSSL网站上的信息。[8]
受影响:
OpenSSL 1.0.2-beta[8]
OpenSSL 1.0.1 - OpenSSL 1.0.1f[8]
除非针对CVE-2014-0160的操作系统补丁已经安装,而没有更改库版本,如Debian、Red Hat Enterprise Linux(及其派生版,如CentOS、Amazon Linux)或Ubuntu(及其派生版,如Linux Mint)。
不受影响:
OpenSSL 1.0.2-beta2(将来版本)[8]
OpenSSL 1.0.1g[8]
OpenSSL 1.0.0(及1.0.0的分支版本)[8]
OpenSSL 0.9.8(及0.9.8的分支版本)[8]
要解决此漏洞,建议服务器管理员或使用1.0.1g版,或使用-DOPENSSL_NO_HEARTBEATS选项重新编译OpenSSL,从而禁用易受攻击的功能,直至可以更新服务器软件。[8] .
单独应用这个补丁并不能修复漏洞。还必须重新启动相关服务和/或重启服务器,这样修补过的OpenSSL才能被应用,然后重新生成所有的私钥和密码。[8]
鉴于openssl 1.0.1的安全漏洞, 现在都升级1..1g版本的openssl了, 这里记录下升级流程. . 先查看当前安装的版本 ssh -V 查看ssh版本 openssl version -a 查看openssl版本 . 首先到官网下载新版的源码包 openssh: http://www.openssh.com/portable.html 这里, 官网上找到的下载有两种, 一种是直接下载OpenBSD的(附带openssh, 显然不是我等需要的), 另外一种就是这种portable版的 openssl: http://www.openssl.org/source/ . 先安装openssl, 一定记得加上--shared选项, 否则openssh编译的时候会找不到新安装的openssl的library, 会报错: openssl的 header和library版本不匹配 ./config --prefix=/usr --shared
make
make test
make install 完毕后查看openssl版本安装是否正确 . 安装openssh ./configure --prefix=/usr --with-pam --with-zlib --with-md5-passwords
make
make install 这种安装会把sshd的配置文件放在/usr/etc/sshd_config 需要重启sshd服务并且重新登录shell, 才能查看openssh是否已经安装新版本, 建议先保留安装openssh的这个shell, 另开一个shell测试, 防止设置错误导致服务器无法连接
相关软件下载地址
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 路径仅供参考,由具体机器环境决定,参考升级步骤
升级openssl的更多相关文章
- 升级openssl环境至openssl-1.1.0c
升级openssl环境至openssl-1.1.0c1.查看源版本 [root@zj ~]# openssl version -aOpenSSL 1.0.1e-fips 11 Feb 2013 2.下 ...
- centos 5.x 升级openssl
今日想在centos 5.2上面安装mysql 5.5.37,在make的时候提示: Linking C shared module adt_null.so [ 65%] Built target a ...
- MacOS中升级openssl
MacOS中升级openssl ➜ ~ brew instal openssl 使用情况中始终发现,openssl并没有真正升级 在/usr/local/Cellar/openssl/目录中 ...
- CentOS升级OpenSSL至OpenSSL 1.1.0f版本<其中有遇到libcrypto.so的问题>
概述: 整体步骤如下: 1.先检查版本 2.进行安装 <安装采用源码安装,然后再做相关的链接指向> 一.检查当前环境 1. 查看当前版本 openssl version 或者使用 yum ...
- CentOS7源码升级OpenSSL和OpenSSH
一.CentOS7升级OpenSSL 1.查看ssl版本及下载相关依赖包 openssl version -a yum install -y gcc openssl-devel pam-devel r ...
- Linux下升级openssl
公司由于使用第三方漏洞扫描,检测出openssh存在漏洞,升级openssh后仍无效果,于是升级openssl 系统信息: 依赖软件:make.gcc.zlib1g-dev 升级步骤: 1.去官网下载 ...
- linux下安装/升级openssl
(2810) (1) 安装环境: 操作系统:CentOs7 OpenSSL Version:openssl-1.0.2j.tar.gz 安装: 目前版本最新的SSL地址为 http://www.op ...
- 修复open-ssl漏洞,升级open-ssl版本
升级openssl环境至openssl-1.0.1g 1.查看源版本 [root@zj ~]# openssl version -a OpenSSL 0.9.8e-fips-rhel5 01 Jul ...
- 升级OpenSSL修复高危漏洞Heartbleed
升级OpenSSL修复高危漏洞Heartbleed 背景: OpenSSL全称为Secure Socket Layer.是Netscape所研发.利用数据加密(Encryption) ...
随机推荐
- kvm安装
基础环境: 192.168.1.67 super67 硬件cpu需要支持:Intel VT-x 技术 本实验使用虚拟机VMware Workstation上的虚拟机 ...
- 矢量图标转成16*16大小的SVG格式
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:一一链接:http://www.zhihu.com/question/32233782/answer/68629385来源:知 ...
- filesize返回的是以字节为单位的数据也可以使之处理数字
1.文件的属性信息获取 首先文件具有类型,在linux下边,有block(块设备,如磁盘分区.CD-ROM).char(以字符为输入的设备,如键盘.打印机).dir(目录类型,目录也是文件的一种).f ...
- sql 语句大小写的问题
关键字不区分大小写 例如 select ,from, 大小写均可 标识符区分大小写 例如 表名,列名 标识符如果不加双引号,默认是按大写执行 标识符如果加双引号,则是按原始大小写执行 但是,当表名加上 ...
- JavaScript系列:函数调用方式
有关JS的问题,持续更新.. 一,函数调用的4种方式 1,函数调用模式 //下面这种模式叫 “函数调用模式”:窗后window来调用 //函数调用四种方式的基础 //这tm不就是作用域this的问题吗 ...
- 三层交换单臂路由vlan间通信综合实验之降龙要点--Lee
单臂路由三层交换机提供vlan间的通信之菜鸟之降龙详解要点: 图示 PC:左到右依次设置IP172.16.10.1, 20.1, 30.1, 40,1 ,50,1 /24 网关10.2 ...
- ps命令交叉编译
busybox中的ps命令是针对于嵌入式的,其中一些选项并不完整.因此需要将源码下载下来,进行交叉编译 官方下载地址 github下载地址 含有configure,我在此使用的是这个源码包,官方的包在 ...
- Web 在线文件管理器学习笔记与总结(15)剪切文件夹 (16)删除文件夹
(15)剪切文件夹 ① 通过rename($oldname,$newname) 函数实现剪切文件夹的操作 ② 需要检测目标文件夹是否存在,如果存在还要检测目标目录中是否存在同名文件夹,如果不存在则剪切 ...
- PHP正则表达式及实例
PHP正则表达式及实例 博客分类: Php / Pear / Mysql / Node.js 正则表达式PHPWordPressFPApache 关联: 正则表达式 去除连续空白 + 获取url + ...
- GUN485项目的总结
1.DMA中配置要放在串口的配置后面. 2.DMA有3种中断方式:传输完成.传输一半.传输错误 3.如果要用DMA容易造成串口数据还没发完就把485的控制脚拉低导致数据没发完.解决办法是DMA发送完成 ...