【转载】升级OpenSSL修复高危漏洞Heartbleed

简介:

背景:  
      OpenSSL全称为Secure Socket Layer,是Netscape所研发,利用数据加密(Encryption)作技术保障在Internet上数据传输的安全。可确保数据在网络上的传输不会被窃听及截取。  
      当然,OpenSSL是一个强大的密码库,我们在使用SSL协议的时候不一定非得采用OpenSSL,不过目前基本上都是用的OpenSSL,因为它更安全,使用起来也更简单。  
      在近期互联网安全协议OpenSSL v1.0.11.0.1f的密码算法库中发现了一个非常严重bug(CVE-2014-0160),该bug允许攻击者读取存在bug的系统的64k处理内存,暴露加密流量的密钥,用户的名字和密码,以及访问的内容。这个漏洞被称之为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.1OpenSSL1.0.1f的版本建议升级OpenSSL1.0.1g或最新的OpenSSL1.0.1h
  2. 使用DEPENSSL_NO_HEARTBEATS参数重新编译低版本的OpenSSL以禁用Heartbleed模块。
  3.  删除OpenSSL组件。

【升级OpenSSL修复Heartbleed漏洞】  
      由于我们现在用的基本上都是RHEL 5.8OEL5.8,其OpenSSL的版本为OpenSSL0.9.8e,是不存在该漏洞的,不过有些新上的项目可能会涉及到,当然他们对于修复这个漏洞的方法都是一样。  
详细步骤如下:  
1、  查看操作系统版本及OpenSSL版本  
?
1
2
3
4
5
[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、  解压缩编译安装  
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
[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替换系统老版本的  
?
1
2
3
4
[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、  配置文件搜索路径  
?
1
2
3
4
[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、  查看安装完成后的最新版本  
?
1
2
3
4
5
6
7
8
9
10
11
[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的升级工作  
目录
相关文章
|
安全 关系型数据库 Linux
heartbleeder 自动检测 OpenSSL 心脏出血漏洞 (附修复指南)
heartbleeder 可以探测你的服务器是否存在 OpenSSL CVE-2014-0160 漏洞 (心脏出血漏洞)。
603 0
heartbleeder 自动检测 OpenSSL 心脏出血漏洞 (附修复指南)
|
Web App开发
微软发布应急补丁 修复IE零日攻击安全漏洞
3月30日消息,据国外媒体报道,微软宣布计划发布一个应急补丁,修复在IE浏览器中的一个零日攻击的安全漏洞。 IE浏览器的一个累积的补丁(MS10-018)修复黑客在最近几个星期利用的在IE 6和IE 7浏览器中的安全漏洞。
819 0
|
Web App开发 安全
网站被黑该怎么修复漏洞
近日wordpress被爆出高危的网站漏洞,该漏洞可以伪造代码进行远程代码执行,获取管理员的session以及获取cookies值,漏洞的产生是在于wordpress默认开启的文章评论功能,该功能在对评论的参数并没有进行详细的安全过滤与拦截,导致可以绕过安全检测,直接提交html标签,导致可以写入XSS代码,对其CSRF跨站伪造攻击,很多在谷歌做的推广外贸站点导致被跳转到其他站点. 该网站漏洞的影响范围较广,几乎是通杀所有的wordpress博客网站,低于5.1.1版本的系统,据SINE安全统计国内,以及国外,受漏洞攻击影响的网站达到数百万个。
2260 0
|
安全 数据安全/隐私保护 负载均衡
|
安全 Unix Linux
CVE-2017-7494紧急预警:Samba蠕虫级提权漏洞,攻击代码已在网上扩散
本文讲的是CVE-2017-7494紧急预警:Samba蠕虫级提权漏洞,攻击代码已在网上扩散,昨天晚上,开源软件Samba官方发布安全公告,称刚刚修复了软件内一个已有七年之久的严重漏洞(CVE-2017-7494),可允许攻击者远程控制受影响的Linux和Unix机器。
1746 0
|
安全 Linux 网络安全
OpenSSL CVE-2016-0800和CVE-2016-0703漏洞修复细节拾趣
本文讲的是OpenSSL CVE-2016-0800和CVE-2016-0703漏洞修复细节拾趣,本来最近和360 Nirvan Team的DQ430愉快的参加某加密厂商的年度大会,结果openssl也出来碰热闹,也许真是为了DH兄弟送大礼,苦了我们这些安全运维的。
2125 0