我们有一台运行 OpenVPN 的 AWS 服务器,它是使用 Ubuntu 13.10 构建的。在 Heartbleed 漏洞公布后,我们更新了服务器。今天早上,我们将服务器升级到 14.04。“openssl version -a”的当前输出为:
OpenSSL 1.0.1f 6 Jan 2014
built on: Mon Apr 7 21:22:23 UTC 2014
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -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"
我使用以下命令验证了服务器仍然易受攻击的事实:
:~$ openssl s_client -connect openvpn.example.com:443 -tlsextdebug 2>&1| grep 'server extension "heartbeat" (id=15)' || echo safe
TLS server extension "heartbeat" (id=15), len=1
尝试运行“sudo apt-get install openssl”时,返回当前版本已安装。解决此问题的最佳选择是什么?发行版升级期间是否出现问题;即 14.04 OpenSSL 包是否实际上超出了危险范围?或者存储库本身是否存在可能的问题?
答案1
正如@david6 指出的那样,OpenSSL 的版本可能仍然看起来是一个易受攻击的版本。这是因为 Ubuntu 和许多其他发行版一样,向后移植安全修复程序,而不是更新到软件的全新版本(并且可能在此过程中拾取新功能及其伴随的错误)。因此,仅仅因为您正在运行“易受攻击的版本”的 OpenSSL,并不意味着您正在运行易受攻击的 OpenSSL 版本。
然而,如果可用的 Heartbleed 审计表明您仍然容易受到攻击,那么您仍然容易受到攻击。
我认为发生的情况是你已经更新了软件包,但是你还没有重新启动使用 OpenSSL 的服务,因此他们仍然保留着启动时加载的旧版本。
有两种简单的方法可以解决这个问题:
重新启动服务器。
识别并重新启动受影响的服务。一个简单的方法是,检查重启从
debian-goodies
包中。它应该识别受影响的服务,甚至告诉您哪些 init 脚本将重新启动它们:$ sudo apt-get install debian-goodies $ sudo checkrestart
答案2
你的担心是对的。
然而,不再容易受到OpenSSL / Heartbleed在 Ubuntu 上,你只需要使用更新的编译版本OpenSSL图书馆。
命令openssl version -a
应显示新日期:'建造时间:4月7日星期一‘
实例:
(1.)Ubuntu14.04 长期支持(64 位,桌面)- 从以下位置升级13.10
OpenSSL 1.0.1f 6 Jan 2014
built on: Mon Apr 7 21:22:23 UTC 2014
platform: debian-amd64
:
(2)Ubuntu14.04 长期支持(64 位,桌面)- 全新安装
OpenSSL 1.0.1f 6 Jan 2014
built on: Mon Apr 7 21:22:23 UTC 2014
platform: debian-amd64
:
(3.)Ubuntu12.04 LTS(64 位,服务器)- 完全更新
OpenSSL 1.0.1 14 Mar 2012
built on: Mon Apr 7 20:33:29 UTC 2014
platform: debian-amd64
:
笔记:
Ubuntu 维护者在用新版本(具有不同功能)“替换”库之前会有一个漫长的测试周期。简单的使固定这个 bug 是任何一个添加边界检查逻辑(对于心跳功能)或者使用标志进行编译(语用)以排除心跳完全取消此功能。这两个选项不会对任何其他应用程序或服务产生不利影响。
如果你安装了OpenSSLv1.0.1(或 v1.0.2)测试版)或者从某处下载二进制文件(适用于 Ubuntu),那么你确实会脆弱除非你使用1.0.1g(或者编译选项已被用来删除“heartbeat”)。仅使用可信赖的来源。
答案3
如果你在 Ubuntu 上运行 CVE-2016-2107,升级到最新版本就没问题了:请参阅https://forums.openvpn.net/viewtopic.php?f=4&t=21699&p=62376#p62376
如果你 dpkg 当前的 openvpn_as 服务器,你会看到它已经针对 openssl 进行了更新,解决了错误:
jonathan@Jonathan-Les-MacBook-Pro:~/Downloads/openvpn/usr/local/openvpn_as/lib/pkgconfig$ cat openssl.pc
prefix=/usr/local/openvpn_as
exec_prefix=$
{prefix}
libdir=${exec_prefix}/lib64
includedir=${prefix}
/include
Name: OpenSSL
Description: Secure Sockets Layer and cryptography libraries and tools
Version: 1.0.2h
Requires: libssl libcrypto
对于 CVE-2016-2107https://www.openssl.org/news/secadv/20160503.txt:“OpenSSL 1.0.2 用户应升级至 1.0.2h”
我们升级到了最新版本,一切正常