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 Geheim­dienste schwer erkennbare man-in-the-middle Angriffe mit gültigen SSL-Zertifikaten durch­fü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 zB. "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.
  1. Als erstes ist GnuTLS zu installieren. Dabei muss man die Software selbst compilieren, da die Linux Distributionen das Paket "gnutls-bin" ohne DANE-Support erstellen. Dafür benötigt man auch einige Entwickler-Pakete, die man mit dem bevorzugten Paketmanager installieren kann. Für Debian und Ubuntu funktioniert das folgende Kommando: > sudo apt install gcc make libgmp-dev libidn11-dev zlib1g-dev nettle-dev libunbound-dev libtasn1-6-dev Nach dem Download der aktuellen Sourcen von der Webseite gnutls.org ist das Paket zu entpacken und mit dem üblichen Dreisatz zu installieren. Einige überflüssige Features kann man dabei deaktivieren: > cd /usr/src/gnutls-3.4.x
    > ./configure --disable-ocsp --disable-doc --disable-tests --without-p11-kit
    > make
    > sudo make install
    > sudo ldconfig
  2. 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 Betriebssysteme.

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 Start­script 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" aus­gewertet 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:
Lizenz: Public Domain