Website-Icon .: blog cscholz.io :.

Linux: Perfect Forward Secrecy einrichten und testen

Was ist PFS

Durch den Einsatz von PFS lässt sich eine höhere Sicherheit bei HTTPS-Übertragungengewährleisten, als ohne. Da stellt sich natürlich die Frage, warum HTTPS vorher unsicher war. Dies versteht man am besten an einem Beispiel, wie ein HTTPS-Verbindungsaufbau statt findet.

Schneidet jemand die verschlüsselte Übertragung mit, kann er erstmal nichts damit Anfangen, solange, bis er in der Zukunft irgendwann mal an den privaten Schlüssel des Servers kommt. Denn dann kann den Part der Übertragung entschlüsseln, in dem sich Client und Server auf den gemeinsamen Sitzungsschlüssel geeinigt haben. Und mit diesem kann anschliessend die gesamte restliche Übertragung entschlüsselt werden.

PFS verhindert diesen Ansatz, in dem mit Hilfe eines Mathematischen Ansatzes (Diffie-Hellmann Schlüsselaustausch) sich beide Parteien auf einen Sitzungsschlüssel einigen, der jedoch nie über die Leitung übertragen wurde. Somit kann man selbst dann den Datenstrom nicht entschlüsseln, wenn man den Mitschnitt sowie den privaten Schlüssel des Servers besitzt.

Erst IE Versionen größer 8 können jedoch überhaupt mit PFS umgehen.

PFS mit Apache 2.2

Im Apache 2.2 kann nur CDE (Elliptisch Kurve Algorithmus) aktiviert werden, was zwar etwas langsamer, aber dennoch sicherer ist. Um es zu aktivieren müssen der Datei /etc/Apache2/mods-available/ssl.conf nachfolgende Zeilen geämdert/hinzugefügt werden. Bitte darauf achten, dass die Parameter nicht mehrmals definiert sind, denn greift die zuletzt gesetzte Einstellung.

SSLCipherSuite HIGH:MEDIUM:!ADH

SSLProtocol all -SSLv2

Zu bedenken ist, dass die Kombination Apache 2.2 mit IE 10 nicht zur PFS-Verwendung führt, da diese Kombination erst ab Apache 2.4 funktioniert

PFS mit Apache 2.4

Ebenfalls in der Datei /etc/apache2/mods-available/ssl.conf folgende Einstellungen vornehmen:

SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:DHE+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5

SSLHonorCipherOrder on

Apache PFS testen

Ob die PFS nun auch verwendet wird, kann man entweder über die bash oder über ein Firefox Plugin testen.

openssl s_client -cipher 'ECDHE:DH' -connect mx02.blog.cscholz.io:443

ist das Ergebnis eine Ciphersuite, welche mit DH bzw. ECDH beginnt, bietet der Server PFS an.

PFS mit Dovecot & Postfix

Für Dovecot & Postfix gibt es vom Heinlein-Support schon eine sehr umfangreiche Anleitung, weswegen ich mir hier eine erneute Ausführung spare.

Weitere Links

Nachtrag 08.07.2014

Sollte es trotz der Änderungen kein ECDH bei einer SSL-Verbindung verwendet zu werden, lohnt sich ein Blick auf die CipherSuiten des Servers:

openssl ciphers -v 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA

bzw. ein Blick in die Apache conf-Datei in der das Zertifikate angegeben ist, ob dort wiedersprüchliche Angaben existieren:

<VirtualHost *:443>
    ...
    SSLEngine on
    SSLCertificateFile      /path/to/signed_certificate
    SSLCertificateChainFile /path/to/intermediate_certificate
    SSLCertificateKeyFile   /path/to/private/key
    SSLCACertificateFile    /path/to/all_ca_certs
    SSLProtocol             all -SSLv2
    SSLCipherSuite          ...
    SSLHonorCipherOrder     on
    SSLCompression          off
</VirtualHost>
Die mobile Version verlassen