1. Juli 2016

Episode 3 – TR-02102-2 und Postfix

Dieser Blogpost ist Teil der Blogserie zur TLS-Konfiguration – Technische Richtlinie TR-02102-2 des BSI.

In Episode 1 habe ich erläutert, was der Richtlinie zweiter Teil empfiehlt. In Episode 2 wurden die Empfehlungen beim Apache HTTP Webserver umgesetzt. In diesem Teil möchte ich veranschaulichen, wie man das mit einem zum Zeitpunkt der Erstellung dieses Dokuments aktuellem Mail Transfer Agent (MTA) Postfix umsetzt.

Ich möchte ausdrücklich darauf hinweisen, dass es eine Möglichkeit und nicht DIE LÖSUNG ist. Da sich die Welt zum Glück ständig dreht, können sich die nachfolgenden Informationen im Laufe der Zeit überholen. Wann immer jemand einen Fehler entdeckt oder eine Vereinfachung kennt, darf er sich gerne an uns wenden.

Wie setze ich die TR bei einem Postfix Mail Transfer Agent technisch um?

Achtung: Das Ganze ist mit Vorsicht zu genießen, denn man riskiert, dass Mails von veralteten MTAs (oder Exchange 😉 ) entweder nicht empfangen oder nicht an diese gesendet werden können. Ich persönlich würde mich aus dem Fenster lehnen und sagen, dass hier dennoch TLS in der bald nicht mehr empfohlenen Version 1.1 oder gar 1.0 zu erlauben, aber ich implementiere es nachfolgend mal der Richtlinie entsprechend (in der Hoffnung, dass viele diese Konfiguration auch anwenden).

Am weitesten verbreitet ist der MTA auf Basis Postfix, daher konzentriere ich mich in diesem Post auf Postfix ab Version 2.10. Ab Version 2.6 aufwärts ist SSLv2 und SSLv3 standardmäßig deaktiviert. Ab Version 2.10 aufwärts können auch TLS Version 1.0 und 1.1 deaktiviert werden.

Zunächst brauchen wir hier eigene DH-Parameter:

openssl dhparam -out /etc/postfix/dh1024.pem 1024

In der Postfix-Konfigruation (main.cf) dann folgendes einstellen:


smtpd_tls_dh10242_param_file /etc/postfix/dh1024.pem
smtpd_use_tls = yes
smtp_use_tls = yes
# encrypt oder may, encrypt erzwingt TLS-Verbindung, sonst abbruch
smtpd_tls_security_level = encrypt
smtp_tls_security_level = encrypt
smtpd_tls_eecdh_grade = strong
smtp_tls_eecdh_grade = strong
smtpd_tls_ciphers = high
smtp_tls_ciphers = high
#empfangend, kein SSL, kein TLS1.0 oder 1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1.0, !TLSv1.1, TLSv1.2
smtpd_tls_exclude_ciphers = EXPORT, LOW, MD5, CAMELLIA, 3DES, DES, RC4, SHA1, PSK, NULL, SEED, IDEA, RC2
#sendend
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1.0, !TLSv1.1, TLSv1.2
smtp_tls_exclude_ciphers = EXPORT, LOW, MD5, CAMELLIA, 3DES, DES, RC4, SHA1, PSK, NULL, SEED, IDEA, RC2

Was bedeutet das im Bezug auf Kompatibilität mit älteren Systemen?

Tja, das ist eine gute Frage. In meiner Testumgebung fehlen mir diese Systeme und diese zu simulieren fehlt mir leider die Zeit. Vorstellbar sind aber folgende Szenarien:

  1. Der Postfix spricht nur noch richtlinienkonform beim Senden: Ältere (Exchange-)SMTP-Dienste können noch kein TLS1.2, also wird die Mail nicht zugestellt (im Falle einer strikten policy ‚encrypt‘ (siehe tls_security_level))
  2. Der Postfix versucht richtlinienkonform zu senden, hat aber einen Fallback. Die Mails werden im schlimmsten anzunehmenden Fall unverschlüsselt übermittelt (im Falle einer liberalen policy ‚may‘ (siehe tls_security_level)).