升级OpenSSL修复高危漏洞Heartbleed
升级OpenSSL修复高危漏洞Heartbleed
背景:
OpenSSL全称为Secure Socket Layer。是Netscape所研发。利用数据加密(Encryption)作技术保障在Internet上传输数据的安全。可确保数据在网络上的传输不会被窃听及截取。
当然,OpenSSL是一个强大的password库,我们在使用SSL协议的时候不一定非得採用OpenSSL,只是眼下基本上都是用的OpenSSL,由于它更安全。使用起来也更简单。
在最近互联网安全协议OpenSSL v1.0.1到1.0.1f的password算法库中发现了一个很严重bug(CVE-2014-0160),该bug同意攻击者读取存在bug的系统的64k处理内存,暴露加密流量的密钥,用户的名字和password,以及訪问的内容。这个漏洞被称之为heartbleed,心脏流血。
据solidot 在April 7报道,OpenSSL已经公布了1.0.1g修复bug,Debian发行版也在半小时修复bug。Fedora公布了一个权宜的修正方案。该bug在2011年引入OpenSSL中。使用OpenSSL 0.9.8的发现版本号不受影响。但Debian Wheezy、Ubuntu 12.04.4、CentOS 6.5、Fedora 18、SUSE 12.2、OpenBSD 5.4、FreeBSD 8.4和NetBSD 5.0.2之后的版本号都收到影响。假设你的同意的系统有如上集中,建议将补丁修复到1.0.1g或以上版本号。
修复建议:
1、 假设有使用OpenSSL 1.0.1到OpenSSL1.0.1f的版本号建议升级到OpenSSL1.0.1g或最新的OpenSSL1.0.1h。
2、 使用DEPENSSL_NO_HEARTBEATS參数又一次编译低版本号的OpenSSL以禁用Heartbleed模块。
3、 删除OpenSSL组件。
升级OpenSSL修复Heartbleed漏洞
因为我们如今用的基本上都是RHEL 5.8或OEL5.8,其OpenSSL的版本号为OpenSSL0.9.8e,是不存在该漏洞的,只是有些新上的项目可能会涉及到,当然他们对于修复这个漏洞的方法都是一样。
具体过程例如以下:
1、 查看操作系统版本号及OpenSSL版本号
[root@pru1~]# uname -a
Linuxpru1 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2012 x86_64 x86_64 x86_64GNU/Linux [root@pru1~]# openssl version
OpenSSL0.9.8e-fips-rhel5 01 Jul 2008
2、 下载最新的openssl-1.0.1h.tar.gz源代码包
3、 解压缩编译安装
[root@pru1openssl]# ls
openssl-1.0.1h.tar.gz [root@pru1openssl]# tar -zxf openssl-1.0.1h.tar.gz
[root@pru1openssl]# ls
openssl-1.0.1h openssl-1.0.1h.tar.gz [root@pru1openssl]# cd openssl-1.0.1h
[root@pru1openssl-1.0.1h]# ls
ACKNOWLEDGMENTS config e_os2.h INSTALL.DJGPP INSTALL.W64 Makefile.org openssl.doxy README.ASN1 tools
apps Configure e_os.h INSTALL.MacOS INSTALL.WCE Makefile.shared openssl.spec README.ENGINE util
bugs crypto FAQ INSTALL.NW LICENSE makevms.com os2 shlib VMS
certs demos include INSTALL.OS2 MacOS ms perl ssl
CHANGES doc INSTALL INSTALL.VMS Makefile Netware PROBLEMS test
CHANGES.SSLeay engines install.com INSTALL.W32 Makefile.bak NEWS README times [root@pru1openssl-1.0.1h]# ./config shared zlib
Operatingsystem: x86_64-whatever-linux2
Configuringfor linux-x86_64
Configuringfor linux-x86_64
no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir)
no-gmp [default] OPENSSL_NO_GMP (skip dir)
no-jpake [experimental] OPENSSL_NO_JPAKE (skipdir)
no-krb5 [krb5-flavor not specified]OPENSSL_NO_KRB5
no-md2 [default] OPENSSL_NO_MD2 (skip dir)
no-rc5 [default] OPENSSL_NO_RC5 (skip dir)
no-rfc3779 [default] OPENSSL_NO_RFC3779 (skip dir)
no-sctp [default] OPENSSL_NO_SCTP (skip dir)
no-store [experimental] OPENSSL_NO_STORE (skipdir)
no-zlib-dynamic [default]
IsMK1MF=0
CC =gcc
CFLAG =-fPIC -DOPENSSL_PIC -DZLIB-DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT-DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM-DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM-DGHASH_ASM
EX_LIBS =-ldl -lz
CPUID_OBJ =x86_64cpuid.o
BN_ASM =x86_64-gcc.o x86_64-mont.ox86_64-mont5.o x86_64-gf2m.o modexp512-x86_64.o
DES_ENC =des_enc.o fcrypt_b.o
AES_ENC =aes-x86_64.o vpaes-x86_64.obsaes-x86_64.o aesni-x86_64.o aesni-sha1-x86_64.o
BF_ENC =bf_enc.o
CAST_ENC =c_enc.o
RC4_ENC =rc4-x86_64.o rc4-md5-x86_64.o
RC5_ENC =rc5_enc.o
MD5_OBJ_ASM =md5-x86_64.o
SHA1_OBJ_ASM =sha1-x86_64.o sha256-x86_64.osha512-x86_64.o
RMD160_OBJ_ASM=
CMLL_ENC =cmll-x86_64.o cmll_misc.o
MODES_OBJ =ghash-x86_64.o
ENGINES_OBJ =
PROCESSOR =
RANLIB =/usr/bin/ranlib
ARFLAGS =
PERL =/usr/bin/perl
SIXTY_FOUR_BIT_LONGmode
DES_UNROLLused
DES_INTused
RC4_CHUNKis unsigned long
e_os2.h=> include/openssl/e_os2.h
makinglinks in crypto...
make[1]:Entering directory `/root/openssl/openssl-1.0.1h/crypto'
crypto.h=> ../include/openssl/crypto.h
opensslv.h=> ../include/openssl/opensslv.h
opensslconf.h=> ../include/openssl/opensslconf.h
ebcdic.h=> ../include/openssl/ebcdic.h
symhacks.h=> ../include/openssl/symhacks.h
ossl_typ.h=> ../include/openssl/ossl_typ.h
makinglinks in crypto/objects...
………….
Configuredfor linux-x86_64. [root@pru1openssl-1.0.1h]# make
makingall in crypto...
make[1]:Entering directory `/root/openssl/openssl-1.0.1h/crypto'
( echo"#ifndef MK1MF_BUILD"; \
echo ' /* auto-generated by crypto/Makefile for crypto/cversion.c */'; \
echo ' #define CFLAGS "gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS-D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN-DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT-DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM-DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM-DGHASH_ASM"'; \
echo ' #define PLATFORM "linux-x86_64"'; \
echo " #define DATE \"`LC_ALL=C LC_TIME=Cdate`\""; \
echo '#endif' ) >buildinf.h
gcc -I.-I.. -I../include -fPIC -DOPENSSL_PIC-DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H-Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2-DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM-DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM-DWHIRLPOOL_ASM -DGHASH_ASM -c -ocryptlib.o cryptlib.c
cryptlib.c:In function ‘OPENSSL_ia32cap_loc’:
cryptlib.c:677:warning: dereferencing type-punned pointer will break strict-aliasing rules
gcc -I.-I.. -I../include -fPIC -DOPENSSL_PIC-DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H-Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2-DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM-DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM-DWHIRLPOOL_ASM -DGHASH_ASM -c -o mem.omem.c
gcc -I.-I.. -I../include -fPIC -DOPENSSL_PIC-DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H-Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DOPENSSL_IA32_SSE2-DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM-DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM-DWHIRLPOOL_ASM -DGHASH_ASM -c -omem_dbg.o mem_dbg.c
……………. [root@pru1openssl-1.0.1h]# make install
…….
4、 将新编译的openssl替换系统老版本号的
[root@pru1openssl-1.0.1h]# rm -rf /usr/bin/openssl
[root@pru1openssl-1.0.1h]# rm -rf /usr/include/openssl/
[root@pru1openssl-1.0.1h]# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
[root@pru1openssl-1.0.1h]# ln -s /usr/local/ssl/include/openssl/ /usr/include/openssl
5、 配置文件搜索路径
[root@pru1openssl-1.0.1h]# echo "/usr/local/ssl/lib/" >> /etc/ld.so.conf
[root@pru1openssl-1.0.1h]# ldconfig -v |grep openssl
libgnutls-openssl.so.13 ->libgnutls-openssl.so.13.0.6
libgnutls-openssl.so.13 ->libgnutls-openssl.so.13.0.6
6、 查看安装完毕后的最新版本号
[root@pru1openssl-1.0.1h]# openssl version
OpenSSL1.0.1h 5 Jun 2014 [root@pru1openssl-1.0.1h]# openssl version -a
OpenSSL1.0.1h 5 Jun 2014
builton: Sun Jun 8 09:05:39 CST 2014
platform:linux-x86_64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int)idea(int) blowfish(idx)
compiler:gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN-DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall-DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5-DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM-DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR:"/usr/local/ssl"
[root@pru1openssl-1.0.1h]#
7、 至此已所有完毕OpenSSL的升级工作
升级OpenSSL修复高危漏洞Heartbleed的更多相关文章
- OpenSSL修复加密漏洞、加强Logjam防御
来源:TechTarget中国作者:Michael Heller翻译:张程程 OpenSSL项目团队为其密码库发布补丁以修复一个严重的漏洞(该漏洞可能允许攻击者解密HTTPS通信),同时强化对Logj ...
- ThinkPHP5远程代码执行高危漏洞(附:升级修复解决方法)
漏洞描述 由于ThinkPHP5框架对控制器名没有进行足够的安全检测,导致在没有开启强制路由的情况下,黑客构造特定的请求,可直接GetWebShell. 漏洞评级 严重 影响版本 ThinkPHP 5 ...
- 修复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之漏洞利用脚本POC讲解
OpenSSL Security Advisory [07 Apr 2014] ======================================== TLS heartbeat read ...
- 汉澳sinox不受openssl心血漏洞影响并分析修复其漏洞代码
OpenSSL 心血(HeartBleed)漏洞 是openssl 在 2014-04-07 发布的重大安全漏洞(CVE-2014-0160)这个漏洞使攻击者可以从server内存中读取64 KB的数 ...
- Fastjson 爆出远程代码执行高危漏洞,更新版本已修复
fastjson近日曝出代码执行漏洞,恶意用户可利用此漏洞进行远程代码执行,入侵服务器,漏洞评级为“高危”. 基本介绍fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器 ...
- 重新编译Nginx指导手册【修复静态编译Openssl的Nginx漏洞 】(转)
1. 概述 当前爆出了Openssl漏洞,会泄露隐私信息,涉及的机器较多,环境迥异,导致修复方案都有所不同.不少服务器使用的Nginx,是静态编译opensssl,直接将openssl编译到ng ...
- OpenSSL再爆多处高危漏洞
OpenSSL团队于北京时间6月5号晚8点左右发布了5个安全补丁,这次的更新涉及多处高危漏洞,连接:http://www.openssl.org/news/ 受影响的版本包括: OpenSSL 1.0 ...
- Linux内核升级修复系统漏洞-RHSA-2017:2930-Important: kernel security and bug fix update
公司使用的阿里云服务器(Centos7.4 x86_64bit)内核版本为:3.10.0-693.21.1.el7.x86_64, 2019年3月4日 02:07:58通过云盾安骑士-->漏洞管 ...
随机推荐
- 洛谷P3327 [SDOI2015]约数个数和 【莫比乌斯反演】
题目 设d(x)为x的约数个数,给定N.M,求\(\sum_{i = 1}^{N} \sum_{j = 1}^{M} d(ij)\) 输入格式 输入文件包含多组测试数据.第一行,一个整数T,表示测试数 ...
- 浅谈android反调试之 转发端口
反调试方案: 我们最通常使用的动态工具是IDA, IDA的动态调试端口默认为23946,我们可以通过/pro/net/tcp 查看android 系统所有TCP Socket 启动android_se ...
- 网抓(XML Http Request、VBA)实现
第一种,先看VBA Public Function GetInfo(strMoblie As String) As String '创建对象 Dim xmlHttp As Object Set xml ...
- BaseResponse
package common; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; /** * ...
- ACE的饼图显示保留两位小数
修改源js文件:jquery.flot.pie.min.js <script src="/static/assets/js/jquery.flot.pie.min.js"&g ...
- POJ3671 Dining Cows
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8126 Accepted: 3441 Description The c ...
- Perl语言入门--5--散列、hash
hash 一.关联数组的形式 %h=('a',1,'b',2); a是key 1是value b是key 2是value 以%开头,()为空散列 %h=('a'=>1,' ...
- SpringBoot+Mybatis增删改查实战
简介 SpringBoot和Mybatis是啥请自行百度,作者这里也是花了几天时间入门了这个框架用来完成任务,并且也算符合要求的完成了任务,期间也各种百度但是没找到自己想要的那种简单易懂的教程,所以踩 ...
- HDU 2586 How far away ? 离线lca模板题
How far away ? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- luogu P3402 最长公共子序列
题目背景 DJL为了避免成为一只咸鱼,来找Johann学习怎么求最长公共子序列. 题目描述 经过长时间的摸索和练习,DJL终于学会了怎么求LCS.Johann感觉DJL孺子可教,就给他布置了一个课后作 ...