Inhaltsverzeichnis
Postfix PFS einsetzen
PFS (Perfect Forward Secrecy) basiert auf der Idee, dass der Client und der Server ihre Kommunikation über einen zusätzlichen temporären wechselnden Schlüssel absichern. Da der Verbindungsaufbau so durchgeführt wird, dass der Schlüssel selbst nicht ausgetauscht werden muss, kann der jeweils benutzte Sitzungsschlüssel auch nicht aufgezeichnet werden.
WICHTIG - Eine nachträgliche Entschlüsselung einer aufgezeichneten Session ist damit unmöglich!
Alle nachfolgenden Beschreibungen, basieren mitunter auf Informationen aus nachfolgendem Link:
Um für einen lauffähigen Postfix Mail-Transport Agent PFS (Perfect Forward Secrecy) zu aktivieren und einzusetzen sind nur wenige Konfigurationen in der main.cf
des Postfix notwendig.
WICHTIG - Grundlage ist jedoch, das sich TLS bereits aktiv im Einsatz befindet !!!
Wie TLS (Transport Layer Security) eingesetzt werden kann wird unter nachfolgendem internen Link beschrieben:
Um darüber hinaus auch PFS einsetzen zu können, sind folgende Voraussetzungen:
und Komponenten erforderlich:
- Diffie-Hellmann-Schlüssel mit 1024 bit und 512 bit
Ab hier werden root
-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root
zu werden geben Sie bitte folgenden Befehl ein:
$ su - Password:
Voraussetzungen
Mit nachfolgenden Befehlen kann überprüft werden, ob die Voraussetzungen in Bezug auf die installierte Postfix und OpenSSL Version erfüllt sind.
Befehl zu Überprüfung der installierten Postfix Version:
# postconf mail_version mail_version = 2.6.6
Befehl zu Überprüfung der installierten OpenSSL Version:
# openssl version OpenSSL 1.0.1e-fips 11 Feb 2013
Beide Voraussetzungen,
müssen erfüllt sein!
Vorbereitung
Als ersten Schritt zum Einsatz von PFS (Perfect Forward Secrecy) bei der TLS (Transport Layer Security) Verschlüsselung, ist es erforderlich, dass zwei Diffie-Hellmann-Schlüssel generiert werden.
Hintergründe warum dies erfolgen muss, können unter nachfolgendem Link nachgelesen werden:
Anstelle der mit Postfix mitgelieferten Schlüssel - welche für jede Installation gleich sind, sollten eigene mit Diffie-Hellmann generierte Diffie-Hellmann-Schlüssel verwenden werden. Einmal für 1024-bit (non-export ciphers) und für 512-bit (export ciphers).
Die Generierung der beiden Diffie-Hellmann-Schlüssel, wird mit nachfolgenden Befehlen durchgeführt.
# openssl gendh -out /etc/postfix/dh_512.pem -2 512 Generating DH parameters, 512 bit long safe prime, generator 2 This is going to take a long time ........................................+.....................+. ..............................+................................. ....+............+.........................+...................+ ......+...............+...................+..++*++*++*++*++*++*
und
# openssl gendh -out /etc/postfix/dh_1024.pem -2 1024 Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time .................................+.............................. .......................................+........................ ..................+............................................. ................................................................ ...................+............................................ ................................................................ .......................+........................................ .................+..............+............................... .............................................+..........+....... .........................+.....+.........+....................+. ...+...........................+.....+.......................... ................................................................ ................................++*++*++*
Anschließend sollten zwei zusätzliche Dateien im Verzeichnis
/etc/postfix
erstellt worden sein.
Zur Überprüfung, kann nachfolgenden Befehl verwendet werden:
# ll /etc/postfix/dh* -rw-r--r-- 1 root root 245 Dec 19 10:27 /etc/postfix/dh_1024.pem -rw-r--r-- 1 root root 156 Dec 19 10:26 /etc/postfix/dh_512.pem
Konfiguration: /etc/postfix/main.cf
Nachfolgende Einträge müssen nun in der Konfigurationsdatei von Postfix ergänzt werden (nur relevanter Ausschnitt):
... # PFS Encryption smtpd_tls_dh1024_param_file = /etc/postfix/dh_1024.pem smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem smtpd_tls_eecdh_grade = strong tls_preempt_cipherlist = yes smtpd_tls_loglevel = 1 smtp_tls_loglevel = 1 ...
Erklärungen:
Einbindung von eigenen Diffie-Hellmann-Schlüssel zur Verwendung von PFS (Perfect Forward Secrecy) bei der TLS (Transport Layer Security) Verschlüsselung:
smtpd_tls_dh1024_param_file = /etc/postfix/dh_1024.pem smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem
Die Unterstützung für „elliptic curve cryptography“ welche ab Postfix Version 2.6.x und OpenSSL ab Version 1.0.0 verfügbar ist.
Mögliche Einstellungen:
smtpd_tls_eecdh_grade = strong
smtpd_tls_eecdh_grade = ultra
Die Einstellung ultra
benötigt mehr CPU als die Einstellung strong
.
smtpd_tls_eecdh_grade = strong
Postfix Version 2.8.x, in Kombination mit OpenSSL ab Version 0.9.7, erlaubt TLS Servern mit dem jeweiligen Client dynamisch das Verschlüsselungsverfahren auszuhandeln. Dies ist erst ab SSLv3 und später möglich.
tls_preempt_cipherlist = yes
* Die Einstellung wird im Postfix Version 2.6.6 ignoriert!
Die Einstellungen erhöhen das Loglevel und dokumentieren unter anderem im Log von Postfix, welche Verschlüsselung verwendet wurde.
smtpd_tls_loglevel = 1 smtp_tls_loglevel = 1
Postfix restart/reload
Falls vorstehende Änderungen (natürlich an die jeweiligen Bedürfnisse angepasst) durchgeführt wurden, sollte ein Neustart oder zumindest das Laden der neuen Konfiguration von Postfix mit nachfolgendem Befehl durchgeführt werden:
# service postfix restart Shutting down postfix: [ OK ] Starting postfix: [ OK ]
oder zumindest
# service postfix reload Reloading postfix: [ OK ]
Überprüfung
Anschließend kann im Log von Postfix nachvollzogen werden, welche Verschlüsselung verwendet wurde.
Dazu kann nach den
DHE
oderECDHE
gesucht werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# grep DHE /var/log/maillog ... Dec 19 10:59:21 rechner60 postfix/smtpd[22868]: Anonymous TLS connection established from rechner90.tachtler.net[192.168.0.90]: TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits) ...