eine Weisheit

Wenn man die Scheisse Anderer nicht auslöffeln will,
sollte man den Stein, unter dem sie zu finden ist, nicht umdrehen.

Ein Teaser

Es folgt (vermutlich) bald(tm) ein Beitrag zum Thema Mailserver-TLS und es kommen oft die Worte „WIESO?“ ,“unsicher“,“gebrochen“ und vermutlich „args!“ darin vor. Die Liste der Verdächtigen beinhaltet das Who-is-Who nationaler und internationaler Konzerne.

hmm

Da ich ja schon früher über TLS geschrieben habe, wär es dann nicht eigentlich ein Cliffhanger in einer Endlos-Storyline ? 🙂

Followup – Der SSLv3 Stand

Ihr erinnert Euch noch an diese Beiträge zum Thema SSLv3 aus 2016 ?

Sächsische Polizei benutzte gebrochene Verschlüsselung

Neue TLS Probleme beim BSI

Häufigkeit von TLS Ciphern

Stand der Dinge

Ich habe mir mal gedacht, dies Analyse 2 Jahre danach nochmal zu machen und bin zu dem erfreulichen Ergebnis gekommen, daß kein Kontakt der letzten 4 Wochen noch mit SSLv3 um die Ecke gekommen ist. Natürlich hat das jetzt auch einen deftigen Nachteil, ich habe nichts über das man schreiben könnte 😉 Ich finde aber, daß ich den Preis gerne bezahle 😀

Naja, machen wir doch noch was daraus, das Update der meist benutzten Chipers der letzten 4 Wochen :

214417xTLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256
109616xTLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128
40927xTLSv1:ECDHE-RSA-AES256-SHA:256
19728xTLSv1.2:ECDHE-RSA-AES256-SHA384:256
16346xTLSv1:ECDHE-RSA-AES128-SHA:128
12112xTLSv1:AES128-SHA:128
9864xTLSv1.2:DHE-RSA-AES256-GCM-SHA384:256
7270xTLSv1:DHE-RSA-AES256-SHA:256
7139xTLSv1.2:AES256-GCM-SHA384:256
6924xTLSv1:AES256-SHA:256
3767xTLSv1.2:AES128-SHA256:128
2649xTLSv1.2:ECDHE-RSA-CHACHA20-POLY1305:256
2443xTLSv1.2:DHE-RSA-AES128-SHA:128
2062xTLSv1.2:ECDHE-RSA-AES256-SHA:256
1226xTLSv1.1:ECDHE-RSA-AES256-SHA:256
805xTLSv1.2:AES128-SHA:128
748xTLSv1.2:DHE-RSA-AES256-SHA:256
442xTLSv1.2:AES256-SHA:256
362xTLSv1:DHE-RSA-CAMELLIA256-SHA:256
167xTLSv1:DES-CBC3-SHA:168
151xTLSv1.2:AES256-SHA256:256
135xTLSv1.2:ECDHE-RSA-AES128-SHA256:128
59xTLSv1:EDH-RSA-DES-CBC3-SHA:168
51xTLSv1.2:DHE-RSA-AES256-SHA256:256
40xTLSv1.2:AES128-GCM-SHA256:128
35xTLSv1:DHE-RSA-AES128-SHA:128
22xTLSv1.1:DHE-RSA-AES256-SHA:256
14xTLSv1.1:AES256-SHA:256
5xTLSv1.2:DHE-RSA-AES128-GCM-SHA256:128
3xTLSv1:DHE-RSA-DES-CBC3-SHA:168
3xTLSv1.2:ECDHE-RSA-AES128-SHA:128
2xTLSv1.2:ECDHE-RSA-DES-CBC3-SHA:168
1xTLSv1.2:DHE-RSA-CAMELLIA256-SHA:256
1xTLSv1.1:AES128-SHA:128

Bei 459.536 Emailtransporten insgesamt, ist der hohe Anteil an TLSv1 Protokollen doch erschreckend.

Die beiden Spitzenplätze sind gleich geblieben, aber in nachfolgenden Rängen, hat sich einiges, und das nicht zu guten getan, wenn ich das mit dem Beitrag vom März 2017 vergleiche. Am besten macht Ihr Euch da selbst ein Bild.

 

Exim – Wie man TLS erzwingt II

Im letzten Beitrag Exim – Wie man TLS erzwingt war das Blockieren von ausgehenden Verbindungen ohne TLS Thema. Heute befassen wir uns mit dem Gegenteil : Wie verhindern wir, daß wir eine Email bekommen, die unsicher übertragen wurde?

Exim ’s Access Control Lists

Exim als Mailserver erlaubt es uns, in jede Phase der Übertragung von Emails per SMTP einzugreifen und Emails aufgrund von Mustern und Bedingungen abzulehnen. Die ACL genannten Bedingungsketten sind universell einsetzbar, hier ein Beispiel:

acl_check_helo:

drop condition = ${if eq{$sender_helo_name}{ylmf-pc} {1}}
     message = Your a naugthy boy

accept

Die Helo-ACL prüft ob, sich der anfragende Mailserver mit einem bestimmten Namenskürzel meldet, hier „ylmf-pc„. Das ist so ziemlich todsicher ein Bot aus einem asiatischen Netzwerk. Zur Erklärung :

drop ist das Ziel der Aktion, wenn die condition greift. Hier der Vergleich (if eq) von dem was der „Client“ gesendet hat und dem ylmf-pc Text. Übersetzt heißt das : if ( „sender_helo_name“  == „ylmf-pc“ )  { log.message = „Your a naugthy boy“; message.drop(); }

So sieht das dann im SMTP aus :

220 irgendeinserver.de ESMTP Exim 4.89 Sun, 03 Dec 2017 14:33:48 +0100
HELO ylmf-pc
550 Your a naugthy boy

Ansonsten akzeptiere ( accept ) die Email. Natürlich könnte man hier auch schon DNS IP Blacklisten eintragen, oder andere Abfragen, die keinen Empfänger / Sender benötigen. Die meisten ACls werden aber genau bei der Sender- und Empfängerprüfung eingesetzt. Genau das werden wir in der ACL acl_check_rcpt tun.

Zum Glück sind die nötigen Anweisungen extrem übersichtlich :

acl_check_rcpt:
 ...
 deny condition = ${if eq{$tls_cipher}{}{1}{0}}
      message   = Sender did not use TLS secured connection.

Meint:

If ( tls_cipher ==  „“ ) { log.message = „Sender did not use TLS secured connection. „; message.deny() }

Das war es schon. Damit kommen nur noch Emails weiter, die über eine TLS gesicherte Verbindung gesendet werden. Ob das Spam ist oder nicht, muß man natürlich trotzdem prüfen, wenn die Mail erst einmal übertragen wurde.

Analyse

Da erst einmal nur der Empfänger in der SMTP Phase genannt wurde, ist der Inhalt der Email noch aus dem sendenen Server, denn der wird erst mit dem DATA Block übertragen. In die HELO ACL kann man das nicht einbauen, da SMTP verlangt, daß ein netter Server erstmal HELO  oder EHLO sagt, bevor er weiter macht.

Die übliche SMTP-Befehlsreihenfolge dürfte daher :

HELO
STARTTLS
MAIL FROM:
RCPT TO:
DATA

sein. Man kann es natürlich auch bereits in der mail_from ACL machen, ob das einen großen Unterschied machen wird, ist fraglich.