HTTPS Absicherung mit DANE durch Middleboxen
Andrew McConachie hat bei ICANN59 einen sehr interessanten Vorschlag eingebracht. Er belauscht den HTTPS Verbindungsaufbau und blockt den Datenverkehr, wenn die übermittelten Schlüssel nicht zu den vorhandenen TLSA Records aus DNSSEC passen. Auf diese Weise schützt er an zentraler Stelle seine Clients.
Vorgehensweise
Im RFC 6698 wird definiert, wie man mittels DNS Einträgen festlegt, welche Zertifikate für die Webserver benutzt werden dürfen. Das Verfahren heißt kurz DANE (DNS-Based Authentication of Named Entities). Mittels DNSSEC lässt es sich gegen Fälschungen schützen.
Die Middleware, z.B. eine Firewall, sieht normalerweise vom verschlüsselten Verkehr gar nichts. Jedoch muss zum Verbindungsaufbau mit einer prinzipiell unbekannten Gegenstelle zuerst Klartext gesprochen werden, bis man sich auf eine Verschlüsselung einigen konnte.
Durch die IPv4-Adressknappheit hat nicht jede Webseite ihre eigene IP-Adresse, sondern der Webserver muss vorab erfahren, welche Webseite der Client abrufen will, damit er das passende Zertifikat für diese Seite präsentieren kann. Dieses Verfahren heißt SNI (Server Name Indication) und ist im RFC 6066 definiert.
Genau an dieser Stelle greift Andrew ein:
- Er schneidet bei der Client-Anfrage den angeforderten Servernamen mit und extrahiert das vom Webserver gelieferte Zertifikat aus dessen Antwort beim Verbindungsaufbau.
- Anschließend prüft er mittels DANE und DNSSEC, ob für diesen Servernamen ein TLSA Record existiert und prüft das Zertifikat gegen diesen Record.
- Fehlt der TLSA Record oder passt er, passiert nichts weiter.
- Widerspricht allerdings das Zertifikat dem TLSA Record, so fügt er eine Access-Regel ein, die den Datenfluss für diese Verbindung unterbindet.
Im Endergebnis wird bei einem fehlerhaften Zertifikat (nicht zum TLSA passend), der Client daran gehindert, mit einer wahrscheinlich bösartigen Gegenstelle zu reden.
Praktische Umsetzung
Andrew hat auch gleich noch Code für dieses Konzept geschrieben.
Die Software heißt "danish" und kommt trotzdem mit englischer Dokumentation. Sie läuft auf einem OpenWRT oder LEDE-Router. Wer mag kann damit spielen
Von meiner Seite: Beifall! Großartige Sache, Andrew!