Openssl

Openssl 更新後伺服器仍然容易受到 HeartBleed 的攻擊

  • April 15, 2014

在 Centos 6.5 Minimal 安裝中,我編譯了 Apache、PHP 和 rpm 安裝 Percona。

幾天前更新 OpenSSL 後,我在此伺服器上使用 SSL 的網站以某種方式容易受到 Heartbleed 的攻擊。

我的 Apache 二進製文件根本沒有顯示它正在使用 libssl.so*,但是當我通過https://filippo.io/Heartbleed/檢查它時,它說我的網站實際上是易受攻擊的。

我檢查的東西不正確嗎?

[root@centos user]# ldd /usr/local/apache2/bin/httpd |grep -i ssl
[root@centos user]#

我通過 yum yum update openssl openssl-devel

儘管一切都是最新的,但我仍然收到“網站易受攻擊”消息。

[root@centos user]# openssl version -a
OpenSSL 1.0.1e-fips 11 Feb 2013
built on: Tue Apr  8 02:39:29 UTC 2014
platform: linux-x86_64
options:  bn(64,64) md2(int) 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 -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -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: "/etc/pki/tls"
engines:  dynamic 

如果有任何幫助,我會使用以下選項編譯 apache:

./configure --prefix=/usr/local/apache2 \
           --with-apxs2=/usr/local/apache2/bin/apxs \
           --with-mysql=/opt \
           --with-mysqli=/usr/bin/mysql_config \
           --with-gd --with-ttf=/opt \
           --with-xpm-dir=/opt \
           --with-freetype-dir=/opt \
           --enable-gd-native-ttf \
           --with-zlib-dir=/opt \
           --with-curl=/opt/include/curl \
           --enable-mbstring \
           --with-xsl=/opt \
           --with-libexpat-dir=/opt \
           --with-jpeg-dir=/opt \
           --with-png-dir=/opt \
           --enable-soap \
           --with-openssl \
           --with-ssl=/usr/local/openssl \
           --with-included-apr \
           --with-pcre=/usr/local/pcre/ \
           --with-mpm=worker \
           --enable-rewrite \
           --enable-ssl; 

我已使用以下命令將 OpenSSL 1.0.1g 版本編譯到 /usr/local/openssl:

export CFLAGS="-fPIC";
openssl-1.0.1g]# ./config shared no-ssl2 no-ssl3 --openssldir=/usr/local/openssl

我已經嘗試更新 OpenSSL、重新編譯 Apache、重新編譯 PHP、重新安裝 Percona、重新啟動、編譯 OpenSSL(當然是錯誤的並且沒有運氣),但仍然無法修補此漏洞。

我已經重新啟動伺服器以確保沒有庫仍然載入到 Ram 中。

以下是有關庫的輸出:

[root@centos php-5.5.9]# grep 'libssl.*(deleted)' /proc/*/maps
/proc/4497/maps:7faf80018000-7faf80079000 r-xp 00000000 fd:00 1591034                    /usr/lib64/libssl.so.6 (deleted)
/proc/4497/maps:7faf80079000-7faf80278000 ---p 00061000 fd:00 1591034                    /usr/lib64/libssl.so.6 (deleted)
/proc/4497/maps:7faf80278000-7faf8027c000 r--p 00060000 fd:00 1591034                    /usr/lib64/libssl.so.6 (deleted)
/proc/4497/maps:7faf8027c000-7faf80283000 rw-p 00064000 fd:00 1591034                    /usr/lib64/libssl.so.6 (deleted)
/proc/4506/maps:7f21d735d000-7f21d73be000 r-xp 00000000 fd:00 1591034                    /usr/lib64/libssl.so.6 (deleted)
/proc/4506/maps:7f21d73be000-7f21d75bd000 ---p 00061000 fd:00 1591034                    /usr/lib64/libssl.so.6 (deleted)
/proc/4506/maps:7f21d75bd000-7f21d75c1000 r--p 00060000 fd:00 1591034                    /usr/lib64/libssl.so.6 (deleted)
/proc/4506/maps:7f21d75c1000-7f21d75c8000 rw-p 00064000 fd:00 1591034                    /usr/lib64/libssl.so.6 (deleted)
/proc/4594/maps:311b000000-311b061000 r-xp 00000000 fd:00 1591034                        /usr/lib64/libssl.so.6 (deleted)
/proc/4594/maps:311b061000-311b260000 ---p 00061000 fd:00 1591034                        /usr/lib64/libssl.so.6 (deleted)
/proc/4594/maps:311b260000-311b264000 r--p 00060000 fd:00 1591034                        /usr/lib64/libssl.so.6 (deleted)
/proc/4594/maps:311b264000-311b26b000 rw-p 00064000 fd:00 1591034                        /usr/lib64/libssl.so.6 (deleted)

要查看我使用的版本:

[root@centos php-5.5.9]# strings /usr/lib64/libssl.so.6|grep -i openssl
OpenSSLDie
OPENSSL_cleanse
OPENSSL_DIR_read
OPENSSL_DIR_end
OPENSSL_init_library
OPENSSL_1.0.1
OPENSSL_1.0.1_EC
SSLv2 part of OpenSSL 1.0.1e-fips 11 Feb 2013
SSLv3 part of OpenSSL 1.0.1e-fips 11 Feb 2013
TLSv1 part of OpenSSL 1.0.1e-fips 11 Feb 2013
DTLSv1 part of OpenSSL 1.0.1e-fips 11 Feb 2013
OpenSSL 1.0.1e-fips 11 Feb 2013
OPENSSL_DIR_read(&ctx, '
OPENSSL_DEFAULT_ZLIB
OPENSSL_malloc Error

我不知道 OpenSSL 1.0.1e-fips 11 Feb 2013 是否與上述輸出相關,其中 openssl version -a 報告為 OpenSSL 1.0.1e-fips 2013 年 2 月 11 日,但在 8 日修補,用於心臟出血,或者是否易受攻擊。

在同一台伺服器上,我正在執行 Tomcat 和 GlassFish,但即使這些都關閉,伺服器也會標記為易受攻擊。有任何想法嗎?提前感謝您的任何建議。

您可能仍然有一個使用舊庫的程序。

你可以像這樣測試它:

grep 'libssl.*(deleted)' /proc/*/maps

您也可以反彈整個系統。

https://unix.stackexchange.com/questions/123711/how-do-i-recover-from-the-heartbleed-bug-in-openssl

您似乎使用本地版本的 openssl ( --with-ssl=/usr/local/openssl) 編譯 apache,這可能與您通過 yum 升級的版本不同。

引用自:https://serverfault.com/questions/589227