Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_pfs_einsetzen

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:

  • Postfix Mail-Transport Agent ab Version 2.6.x
  • OpenSSL ab Version 1.0.x

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,

  • Postfix Mail-Transport Agent ab Version 2.6.x
  • OpenSSL ab Version 1.0.x

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 oder
  • ECDHE

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)
...
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/postfix_pfs_einsetzen.txt · Zuletzt geändert: 2014/04/28 11:02 von klaus