SSL-Zertifikate mit DANE/TLSA prüfen (Linux only)
IT-Sicherheitsforscher der EFF.org kamen bereits 2009 in der wiss. Arbeit
Certified Lies - Detecting and Defeating Government Interception Attacks against SSL zu dem Schluss, dass Geheimdienste schwer erkennbare
man-in-the-middle Angriffe mit gültigen SSL-Zertifikaten durchführen können. Dieser Angriff wird als
"Lawful SSL Interception" bezeichnet. Firmen für Überwachungstechnik wie die deutsche Firma
Utimaco bieten fertige Appliances dafür. Die passenden Sub-CA Zertifikate kann man bei Verisign bekommen.
Gute E-Mail Provider veröffentlichen die SHA2 Hashes der SSL-Zertifikate für SMTP-, POP3- und IMAP-Server im DNS via DANE/TLSA Record, um diese Angriffe zu verhindern. Leider kann Thunderbird die SSL-Zertifikate (noch) nicht via DANE/TLSA überprüfen.
Linuxer können mit Komandozeilentools wie
"danetool" von GnuTLS prüfen, ob beim Aufbau einer verschlüsselten Verbindung zu den Mailservern das richtige Zertifikat verwendet wird oder ob ein Angriff mit einem Fake-Zertifikate erfolgt.
- Als erstes ist GnuTLS zu installieren. Aktuelle Debian und Ubuntu Versionen enthalten eine GnuTLS Version mit DANE Support. Es reicht, das Paket zu installieren:
Debian: > sudo apt install gnutls-bin
Fedora: > sudo dnf install gnutls-utils
- Danach kann man mit dem Kommando "danetool --check" prüfen, ob das richtige Zertifikat für die Verschlüsselung verwendet werden würde, wenn man den SMTP Server mit SSL-Verschlüsselung kontaktiert:
> danetool --check smtp.mailbox.org --port 465
Resolving 'smtp.mailbox.org'...
Obtaining certificate from '80.241.60.196:465'...
....
Verification: Certificate matches.
Wenn man STARTTLS Verschlüsselung im E-Mail Client nutzt, dann muss das Kommando ergänzt werden:
> danetool --check smtp.mailbox.org --port 587 --starttls-proto=smtp
Resolving 'smtp.mailbox.org'...
Obtaining certificate from '80.241.60.196:465'...
starttls: sending: STARTTLS
....
Querying DNS for smtp.mailbox.org (tcp:587)...
....
Verification: Certificate matches.
Und das gleiche nochmal für den POP3 Server mit SSL-Verschlüsselung:
> danetool --check pop3.mailbox.org --port 995
Resolving 'pop3.mailbox.org'...
Obtaining certificate from '80.241.60.199:995'...
....
Verification: Certificate matches.
Zum Abschluss ein Beispiel für einen IMAP Server mit STARTTLS-Verschlüsselung:
> danetool --check imap.mailbox.org --port 143 --starttls-proto=imap
Resolving 'imap.mailbox.org'...
Obtaining certificate from '80.241.60.199:143'...
starttls: sending: STARTTLS
Negotiating IMAP STARTTLS
starttls: sending: a CAPABILITY
....
Querying DNS for imap.mailbox.org (tcp:143)...
....
Verification: Certificate matches.
Vorraussetzung ist, dass man einen DNSSEC validierenden DNS-Server verwendet, aber das ist ein anderes Thema für die Kategorie
DNS & DNSSEC.
Es ist mühsam, vor dem Lesen oder Schreiben von E-Mails jedesmal ein Terminal zu öffnen, die seltsamen Befehle einzutippen und dann erst Thunderbird zu starten. Mit einem Startscript für Thunderbird oder jeden anderen E-Mail Client kann man den Test automatisieren und vor dem Start prüfen, ob die Zertifikate ok sind. Dabei der wird der Rückgabewert von
"danetool" ausgewertet und eine Meldung angezeigt, wenn Fehler auftreten:
#!/bin/bash
# Check des SMTP Servers
danetool --check smtp.mailbox.org --port 465
if [ $? -ne 0 ]; then
# SSL Zertifikatsfehler! Warnung und Abbruch
zenity --error --text="DANE/TLSA Fehler bei SMTP Server!" --no-wrap
exit 0
fi
# Check des POP3 Servers
danetool --check pop3.mailbox.org --port 995
if [ $? -ne 0 ]; then
# SSL Zertifikatsfehler! Warnung und Abbruch
zenity --error --text="DANE/TLSA Fehler bei POP3 Server!" --no-wrap
exit 0
fi
# alles ok, Thunderbird kann starten
thunderbird
Das Prinzip ist einfach erkennbar und jeder Linuxer kann es selbst an die Mail Server von Posteo.de, Ownbay.net oder Kolab oder anpassen und ergänzen - oder?
Startscript
thunderbird_mit_danetest.sh kann man nach dem Download und den nötigen Anpassungen z.B. nach
$HOME/.local/bin/ kopieren und als ausführbares Script kennzeichen:
> install -d $HOME/.local/bin
> cp Downloads/thunderbird_mit_danetest.sh $HOME/.local/bin
> chmod +x $HOME/.local/bin/thunderbird_mit_danetest.sh
Danach kann man in der Desktop Umgebung die Einstellungen für den bevorzugten E-Mail Client anpassen, einen Menüeintrag oder Starter auf dem Desktop erstellen, um das Script als E-Mail Client aufzurufen.
Einige kleine Vorschläge für Anpassungen:
- Im Beispiel habe ich das Tool "zenity" für die Anzeige der Warnung verwendet. Wer den KDE Desktop bevorzugt, möchte vielleicht lieber "kdialog" verwenden. Dann kann man die Zeilen für die Anzeige der Warnung (vor den "exit" Kommandos) austauschen:
kdialog --error "DANE/TLSA Fehler bei SMTP Server!"
- Wenn man mehrere Profile in Thunderbrid verwendet (z.B. "default" und "anonym mit JonDo/Tor"), dann möchte man am Ende mit dem letzten Kommando gleich das passende Profil starten. Das funktioniert mit folgender Option für Thunderbird/Icedove:
thunderbird -P "r3wq6m51.default"
Der Name des Profils ist selbst anzupassen. Wenn man einen anderen E-Mail Client verwendet, ist der letzte Befehl zu ersetzen (z.B. kmail, evolution....).
-
Bei der Verwendung von Tor Onion Router als Anonymisierungsdienst ist der Test wenig aussagekräftig, weil die Route durch das Tor Netzwerk häufig wechselt. Wenn man 20min nach dem Test eine neue E-Mail endlich abschickt, dann wird eine andere Route mit einem anderen Tor Exit Node verwendet und das Testergebnis ist hinfällig.