Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_pfs_einsetzen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
tachtler:postfix_pfs_einsetzen [2013/12/19 10:11] klaustachtler:postfix_pfs_einsetzen [2014/04/28 11:02] (aktuell) – [Konfiguration: /etc/postfix/main.cf] klaus
Zeile 1: Zeile 1:
 ====== 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. **Eine nachträgliche Entschlüsselung einer aufgezeichneten Session ist damit unmöglich!**+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: Alle nachfolgenden Beschreibungen, basieren mitunter auf Informationen aus nachfolgendem Link:
Zeile 23: Zeile 25:
 $ su - $ su -
 Password:  Password: 
 +</code>
 +
 +===== Voraussetzungen =====
 +
 +Mit nachfolgenden Befehlen kann überprüft werden, ob die Voraussetzungen in Bezug auf die installierte [[http://www.postfix.org/|Postfix]] und [[http://www.openssl.org|OpenSSL]] Version erfüllt sind.
 +
 +Befehl zu Überprüfung der installierten [[http://www.postfix.org/|Postfix]] Version:
 +<code>
 +# postconf mail_version
 +mail_version = 2.6.6
 +</code>
 +
 +Befehl zu Überprüfung der installierten [[http://www.openssl.org|OpenSSL]] Version:
 +<code>
 +# openssl version
 +OpenSSL 1.0.1e-fips 11 Feb 2013
 +</code>
 +
 +Beide Voraussetzungen,
 +  * [[http://www.postfix.org/|Postfix]] //Mail-Transport Agent// ab **Version 2.6.x**
 +  * [[http://www.openssl.org|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:
 +  * [[http://www.postfix.org/TLS_README.html#server_cipher|Postfix TLS Support - Server-side cipher controls]]
 +
 +Anstelle der mit [[http://www.postfix.org/|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. 
 +<code>
 +# 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
 +........................................+.....................+.
 +..............................+.................................
 +....+............+.........................+...................+
 +......+...............+...................+..++*++*++*++*++*++*
 +</code>
 +und
 +<code>
 +# 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
 +.................................+..............................
 +.......................................+........................
 +..................+.............................................
 +................................................................
 +...................+............................................
 +................................................................
 +.......................+........................................
 +.................+..............+...............................
 +.............................................+..........+.......
 +.........................+.....+.........+....................+.
 +...+...........................+.....+..........................
 +................................................................
 +................................++*++*++*
 +</code>
 +
 +Anschließend sollten zwei zusätzliche Dateien im Verzeichnis
 +  * **''/etc/postfix''**
 +erstellt worden sein.
 +
 +Zur Überprüfung, kann nachfolgenden Befehl verwendet werden:
 +<code>
 +# 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
 +</code>
 +
 +===== Konfiguration: /etc/postfix/main.cf =====
 +
 +Nachfolgende Einträge müssen nun in der Konfigurationsdatei von [[http://www.postfix.org/|Postfix]] ergänzt werden (**nur relevanter Ausschnitt**):
 +
 +<code ini>
 +...
 +# 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
 +...
 +</code>
 +
 +**__Erklärungen__**:
 +
 +Einbindung von eigenen Diffie-Hellmann-Schlüssel zur Verwendung von PFS (//Perfect Forward Secrecy//) bei der TLS (//Transport Layer Security//) Verschlüsselung:
 +<code ini>
 +smtpd_tls_dh1024_param_file = /etc/postfix/dh_1024.pem
 +smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem
 +</code>
 +
 +Die Unterstützung für "elliptic curve cryptography" welche ab [[http://www.postfix.org/|Postfix]] **Version 2.6.x** und [[http://www.openssl.org|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''**.
 +<code ini>
 +smtpd_tls_eecdh_grade = strong
 +</code>
 +
 +[[http://www.postfix.org/|Postfix]] **Version 2.8.x**, in Kombination mit [[http://www.openssl.org|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.
 +<code ini>
 +tls_preempt_cipherlist = yes
 +</code>
 +//* Die Einstellung wird im [[http://www.postfix.org/|Postfix]] **Version 2.6.6** ignoriert!//
 +
 +Die Einstellungen erhöhen das **Loglevel** und dokumentieren unter anderem im Log von [[http://www.postfix.org/|Postfix]], welche Verschlüsselung verwendet wurde.
 +<code ini>
 +smtpd_tls_loglevel = 1
 +smtp_tls_loglevel = 1
 +</code>
 +
 +===== 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 [[http://www.postfix.org|Postfix]] mit nachfolgendem Befehl durchgeführt werden:
 +<code>
 +# service postfix restart
 +Shutting down postfix:                                      OK  ]
 +Starting postfix:                                          [  OK  ]
 +</code>
 +**oder** zumindest
 +<code>
 +# service postfix reload
 +Reloading postfix:                                          OK  ]
 +</code>
 +
 +===== Überprüfung =====
 +
 +Anschließend kann im Log von [[http://www.postfix.org/|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:
 +<code>
 +# 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)
 +...
 </code> </code>
  
tachtler/postfix_pfs_einsetzen.1387444285.txt.gz · Zuletzt geändert: 2013/12/19 10:11 von klaus