ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 升级OpenSSL修复高危漏洞Heartbleed

升级OpenSSL修复高危漏洞Heartbleed

原创 Linux操作系统 作者:wuweilong 时间:2014-06-08 09:37:24 0 删除 编辑

升级OpenSSL修复高危漏洞Heartbleed

背景:

         OpenSSL全称为Secure Socket Layer,是Netscape所研发,利用数据加密(Encryption)作技术保障在Internet上数据传输的安全。可确保数据在网络上的传输不会被窃听及截取。

         当然,OpenSSL是一个强大的密码库,我们在使用SSL协议的时候不一定非得采用OpenSSL,不过目前基本上都是用的OpenSSL,因为它更安全,使用起来也更简单。

         在近期互联网安全协议OpenSSL v1.0.1到1.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.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的版本为OpenSSL 0.9.8e,是不存在该漏洞的,不过有些新上的项目可能会涉及到,当然他们对于修复这个漏洞的方法都是一样。

详细步骤如下:

1、  查看操作系统版本及OpenSSL版本

  1. [root@pru1 ~]# uname -a
  2. Linux pru1 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
  3.  
  4. [root@pru1 ~]# openssl version
  5. OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008


2、  下载最新的openssl-1.0.1h.tar.gz源码包

 

3、  解压缩编译安装

  1. [root@pru1 openssl]# ls
  2. openssl-1.0.1h.tar.gz
  3. [root@pru1 openssl]# tar -zxf openssl-1.0.1h.tar.gz
  4. [root@pru1 openssl]# ls
  5. openssl-1.0.1h openssl-1.0.1h.tar.gz
  6. [root@pru1 openssl]# cd openssl-1.0.1h
  7. [root@pru1 openssl-1.0.1h]# ls
  8. ACKNOWLEDGMENTS config e_os2.h INSTALL.DJGPP INSTALL.W64 Makefile.org openssl.doxy README.ASN1 tools
  9. apps Configure e_os.h INSTALL.MacOS INSTALL.WCE Makefile.shared openssl.spec README.ENGINE util
  10. bugs crypto FAQ INSTALL.NW LICENSE makevms.com os2 shlib VMS
  11. certs demos include INSTALL.OS2 MacOS ms perl ssl
  12. CHANGES doc INSTALL INSTALL.VMS Makefile Netware PROBLEMS test
  13. CHANGES.SSLeay engines install.com INSTALL.W32 Makefile.bak NEWS README times
  14. [root@pru1 openssl-1.0.1h]# ./config shared zlib
  15. Operating system: x86_64-whatever-linux2
  16. Configuring for linux-x86_64
  17. Configuring for linux-x86_64
  18.     no-ec_nistp_64_gcc_128 [default] OPENSSL_NO_EC_NISTP_64_GCC_128 (skip dir)
  19.     no-gmp [default] OPENSSL_NO_GMP (skip dir)
  20.     no-jpake [experimental] OPENSSL_NO_JPAKE (skip dir)
  21.     no-krb5 [krb5-flavor not specified] OPENSSL_NO_KRB5
  22.     no-md2 [default] OPENSSL_NO_MD2 (skip dir)
  23.     no-rc5 [default] OPENSSL_NO_RC5 (skip dir)
  24.     no-rfc3779 [default] OPENSSL_NO_RFC3779 (skip dir)
  25.     no-sctp [default] OPENSSL_NO_SCTP (skip dir)
  26.     no-store [experimental] OPENSSL_NO_STORE (skip dir)
  27.     no-zlib-dynamic [default]
  28. IsMK1MF=0
  29. CC =gcc
  30. 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
  31. EX_LIBS =-ldl -lz
  32. CPUID_OBJ =x86_64cpuid.o
  33. BN_ASM =x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o modexp512-x86_64.o
  34. DES_ENC =des_enc.o fcrypt_b.o
  35. AES_ENC =aes-x86_64.o vpaes-x86_64.o bsaes-x86_64.o aesni-x86_64.o aesni-sha1-x86_64.o
  36. BF_ENC =bf_enc.o
  37. CAST_ENC =c_enc.o
  38. RC4_ENC =rc4-x86_64.o rc4-md5-x86_64.o
  39. RC5_ENC =rc5_enc.o
  40. MD5_OBJ_ASM =md5-x86_64.o
  41. SHA1_OBJ_ASM =sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o
  42. RMD160_OBJ_ASM=
  43. CMLL_ENC =cmll-x86_64.o cmll_misc.o
  44. MODES_OBJ =ghash-x86_64.o
  45. ENGINES_OBJ =
  46. PROCESSOR =
  47. RANLIB =/usr/bin/ranlib
  48. ARFLAGS =
  49. PERL =/usr/bin/perl
  50. SIXTY_FOUR_BIT_LONG mode
  51. DES_UNROLL used
  52. DES_INT used
  53. RC4_CHUNK is unsigned long
  54. e_os2.h => include/openssl/e_os2.h
  55. making links in crypto...
  56. make[1]: Entering directory `/root/openssl/openssl-1.0.1h/crypto\


4、  将新编译的openssl替换系统老版本的

  1. [root@pru1 openssl-1.0.1h]# rm -rf /usr/bin/openssl
  2. [root@pru1 openssl-1.0.1h]# rm -rf /usr/include/openssl/
  3. [root@pru1 openssl-1.0.1h]# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
  4. [root@pru1 openssl-1.0.1h]# ln -s /usr/local/ssl/include/openssl/ /usr/include/openssl


5、  配置文件搜索路径

  1. [root@pru1 openssl-1.0.1h]# echo "/usr/local/ssl/lib/" >> /etc/ld.so.conf
  2. [root@pru1 openssl-1.0.1h]# ldconfig -v |grep openssl
  3.         libgnutls-openssl.so.13 -> libgnutls-openssl.so.13.0.6
  4.         libgnutls-openssl.so.13 -> libgnutls-openssl.so.13.0.6

6、  查看安装完成后的最新版本
  1. [root@pru1 openssl-1.0.1h]# openssl version
  2. OpenSSL 1.0.1h 5 Jun 2014
  3. [root@pru1 openssl-1.0.1h]# openssl version -a
  4. OpenSSL 1.0.1h 5 Jun 2014
  5. built on: Sun Jun 8 09:05:39 CST 2014
  6. platform: linux-x86_64
  7. options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
  8. 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
  9. OPENSSLDIR: \"/usr/local/ssl\"
  10. [root@pru1 openssl-1.0.1h]#


7、 至此已全部完成OpenSSL的升级工作

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20674423/viewspace-1177997/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE Associate; 12cOCM;11gOCM;MySQL OCP;PGCA;PGCE;KCA; KCP; 本人拥有十年以上运营商,广电传媒,能源,制造等行业DBA从业经验; 有着丰富的管理及运维经验,经历过国家级重点项目,省级标杆项目,新型试点项目

注册时间:2010-01-08

  • 博文量
    779
  • 访问量
    4931700