Debian 7: openssl 1.0.x selber kompilieren

0

In letzter Zeit hat sich im Bereich der SSL Sicherheit viel getan. Es sind immer wieder neue Sicherheitslücken aufgetaucht, wie z.B: die Poodle Lücke. Debian gilt seit je her als stables, aber leider auch immer etwas angestaubtes Betriebssystem. Letzteres von beidem bekommt man gerade in letzter Zeit immer wieder zu spüren. Viele neue Funktionen oder Schutzmechanismen sind in Debian 7 (stable) einfach nicht mehr enthalten. Aus diesem Grund möchte nachfolgend einmal beschreiben, wie man sich selber ein openssl Paket bauen kann, um die ein oder andere Sicherheitslücke (TLS_FALLBACK_SCSV, bzw. CRIME) schließen zu können.

OpenSSL kompilieren

Um alle Pekete für openssl zu bauen, werden zuerst einige weitere Pakete sowie die abhängigen Pakete zu openssl benötigt.

cd /usr/src
apt-get install build-essential fakeroot
apt-get build-dep openssl

Anschließend läd man sich die letzte Version von OpenSSL herunter, für welche es eine .dsc, .tar.gz sowie .tar.xz-Date gibt. Welche Version das ist, findet man über http://ftp.de.debian.org/debian/pool/main/o/openssl/ heraus.

wget http://ftp.de.debian.org/debian/pool/main/o/openssl/openssl_1.0.1j-1.dsc
wget http://ftp.de.debian.org/debian/pool/main/o/openssl/openssl_1.0.1j.orig.tar.gz
wget http://ftp.de.debian.org/debian/pool/main/o/openssl/openssl_1.0.1j.debian.tar.xz

Die oben genannte CRIME Attacke lässt sich nur durch das deaktivieren der SSL Kompression deaktivieren. Da diese jedoch erst ab Apache 2.2.24+ über die Konfiguration deaktiviert werden kann, muss sie für alle Vorgängerversionen beim kompilieren von openssl deaktiviert werden.

export OPENSSL_NO_DEFAULT_ZLIB=1

Anschließend können die .deb-Pakete gebaut werden.

dpkg-source -x openssl_1.0.1j-1.dsc
cd openssl-1.0.1j
dpkg-buildpackage -us -uc -rfakeroot

Pakete installieren

Das Ergebnis sind anschließend .deb-Pakete welche sich mittels dpkg -i <Paketname.deb> installieren lassen.

libssl-dev_1.0.1j-1_amd64.deb
libssl-doc_1.0.1j-1_all.deb
libssl1.0.0-dbg_1.0.1j-1_amd64.deb
libssl1.0.0_1.0.1j-1_amd64.deb
openssl_1.0.1j-1_amd64.deb

Downgrade im Fehlerfalle

Durch die Installation einer neueren OpenSSL Version profitieren alle Anwendungen davon, welche OpenSSL verwenden, wie z.B. Postfix, Apache, Dovecot, ProFTP, Bind9 oder OpenVPN. Da die manuelle Installation von neueren Paketen immer das Risiko eine unvorhergesehene Inkompatibilität birkt, nachfolgend noch ein Weg, wie man die Pakete wieder downgraden kann.

Hierzu benötight benötigt man die exakte Version des Paketes auf das man downgraden möchte. Hierzu aktualisiert man zuerst die Repository-Liste und lässt sich anschließend die Version sowie den Dateinamen der verfügbaren Pakete auflisten. Das manuelle installierte Paket besitzt dabei in der Ausgabe keinen Dateinamen, da es aus keinem Repository stammt.

apt-get update
apt-cache show openssl |egrep '(Version|Filename)'

Version: 1.0.1j-1
Version: 1.0.1e-2+deb7u14
Filename: pool/updates/main/o/openssl/openssl_1.0.1e-2+deb7u14_amd64.deb
Version: 1.0.1e-2+deb7u13
Filename: pool/main/o/openssl/openssl_1.0.1e-2+deb7u13_amd64.deb

Für ein Downgrade sollte man immer die letzte Version aus den verfügbaren Repositories wählen und installieren. Dies kann man anschließend für alle Pakete durchführen, welche man Downgraden möchte. Im Falle von OpenSSL sieht das dann wiefolgt aus.

apt-get install openssl=1.0.1e-2+deb7u14
apt-get install libssl1.0.0:amd64=1.0.1e-2+deb7u14
apt-get install libssl-dev=1.0.1e-2+deb7u14
apt-get install libssl1.0.0:amd64=1.0.1e-2+deb7u14

Zu beachten ist, dass bei einem Upgrade alle abgängigen Dienste automatisch neugestartet werden, bei einem Downgrade nicht. Dies muss man demnach manuell nachholen

service apache2 restart

Hinweis in Verbindung mit SPDY

Hat man die SPDY-Erweiterung von Google installiert, so verweißt Apache anschließend nicht auf die Standard openssl-Library, sondern auf eine von Google mitgelieferte. Dies führt dazu, dass nach einem Upgrade der OpenSSL Pakete apache2 weiterhin die alte Library zieht.

cat /etc/apache2/mods-available/ssl.load

Die aktuell einzige Lösung ist hier, SPDY wieder zu deinstallieren. Es gibt zwar theoretisch die Möglichkeit die mod_ssl ebenfalls neu zu kompilieren, um SPDY weiterhin verwenden zu können, jedoch steht für mod_ssl kein Patch zur Verfügung, welche mit den letzten OpenSSL Versionen zusammen funktioniert. Es steht nur für OpenSSL 1.0.1h ein Patch zur Verfügung. Zur Dokumentation dennoch nachfolgend der Weg, wie die mod_ssl für OpenSSL 1.0.1h neu kompiliert werden kann.

Patch herunterladen: https://groups.google.com/forum/#!topic/mod-spdy-discuss/e54f7w3dFv4

wget http://mod-spdy.googlecode.com/svn/trunk/src/scripts/mod_ssl_with_npn.patch

Kompilierungsscript herunterladen und Pfad zum Patch anpassen. Anschließend ausführen und kompilieren lassen.

wget http://mod-spdy.googlecode.com/svn/trunk/src/build_modssl_with_npn.sh
chmod +x build_modssl_with_npn.sh

Auf TLS_FALLBACK_SCSV bzw. CRIME Sicherheitslücke testen

Um zu prüfen, ob der Webserver für ein erzwungenes Downgrade der Verschlüsselung verwundbar ist (TLS_FALLBACK_SCSV) bietet sich sich Webseite https://www.ssllabs.com/ an.

Für die CRIME Sicherheitslücke brauch man nur zu prüfen, ob die Kompression bei SSL Verbindungen deaktiviert ist. Ist dies der Fall, ist der Server nicht verwundbar.

openssl s_client -connect blog.cscholz.io:443

[...]
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
[...]

Nachtrag vom 05.02.2016

Die aktuelle Version ist die 1.0.2f-2:

wget http://ftp.de.debian.org/debian/pool/main/o/openssl/openssl_1.0.2f-2.dsc
wget http://ftp.de.debian.org/debian/pool/main/o/openssl/openssl_1.0.2f.orig.tar.gz
wget http://ftp.de.debian.org/debian/pool/main/o/openssl/openssl_1.0.2f-2.debian.tar.xz

dpkg-source -x openssl_1.0.2f-2.dsc
cd openssl-1.0.2f/
dpkg-buildpackage -us -uc -rfakeroot
Teilen.

Über den Autor

Seit der Ausbildung zum Fachinformatiker Systemintegration (2002-2005) bei der DaimlerChrysler AG, beruflich im Bereich der E-Mail Kommunikation (Exchange, Linux) sowie des ActiveDirectory, mit entsprechenden Zertifizierungen (MCSE 2003, MCITP Ent.-Admin 2008, MCSE 2012, LPIC 1-3) tätig. Abgeschlossenes Studium zum Master of Science der IT-Management an der FOM sowie zertifizierter Datenschutzbeauftragter. Aktuell im Projektmanagement tätig.

Antworten