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
    

    Leave A Reply