我刚刚升级了 Ubuntu 12.04 服务器上的 openssl 库以修复 heartbleed 漏洞。以下是我使用“openssl version -a”命令得到的输出:
OpenSSL 1.0.0g 18 Jan 2012
built on: Fri Apr 11 09:20:16 UTC 2014
platform: linux-x86_64
options: bn(64,64) rc4(8x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,-- noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM
OPENSSLDIR: "/usr/local/ssl"
据我所知,“构建日期”应为 2014 年 4 月 7 日之后,这里似乎就是这种情况。我在进行这些更改后重新启动了 Apache,但我仍然发现我的网站容易受到 Heartbleed 漏洞的攻击。
我这里遗漏了什么吗?
我通过下载最新的源代码并编译/安装它来升级 ssl 库。
[更新] 在 Stephan 发表以下评论后,我直接使用 apt-get 升级了 openssl。我还更新了 PATH 以指向新升级的 openssl lib。
这是我执行“openssl version -a”时看到的内容
OpenSSL 1.0.1 14 Mar 2012
built on: Mon Apr 7 20:33:29 UTC 2014
platform: debian-amd64
options: bn(64,64) rc4(8x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DOPENSSL_NO_TLS1_2_CLIENT -DOPENSSL_MAX_TLS1_2_CIPHER_LENGTH=50 -DMD32_REG_T=int -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/lib/ssl"
根据“构建于”的说明,该库已更新至最新的 4 月 7 日补丁。但是,我的网站仍然显示存在 Heartbleed 漏洞。
请帮忙!
答案1
保护自己免受 Heartbleed 攻击的最简单、最快捷的方法是使用供应商提供的二进制包更新 OpenSSL。除非您知道自己在做什么,或者愿意花更多时间学习,否则不要从源代码编译。如果您需要做的只是更新软件,那么从源代码编译更具挑战性,而且浪费时间。它可以具有教育意义和启发性。
OpenSSL 1.0.0g 18 Jan 2012 built on: Fri Apr 11 09:20:16 UTC 2014
这里有些不对劲。你想要的是 1.0.1g,而不是 1.0.0g。但 Heartbleed 只在 OpenSSL 1.0.1 和 1.0.2 中存在问题。OpenSSL 1.0.0 不易受攻击。你下载了旧源文件吗?请注意Ubuntu 并不总是准确报告 OpenSSL 版本,您还需要更新 libssl。
据我了解,“建造日期”应为 2014 年 4 月 7 日之后,这里似乎就是这种情况
不,再看看。您的“构建日期”是“2014 年 4 月 11 日 09:20:16 UTC”。那是您编译此源代码的时间吗?
请注意,如果您从源代码构建,则需要应用正确的标志。阅读安全声明http://www.openssl.org/news/secadv_20140407.txt
受影响的用户应升级至 OpenSSL 1.0.1g。无法立即升级的用户也可以使用 -DOPENSSL_NO_HEARTBEATS 重新编译 OpenSSL。
答案2
由于您没有删除存在漏洞的 OpenSSL 版本,因此它仍然在系统中。您的新安装没有替换文件,但添加了新文件。由于现有应用程序链接到旧库,因此可能会继续使用它。因此最好以通常的方式升级您的系统,因为有可用的修复库。