Aufruf: Mehr Sicherheit durch ernst zu nehmende XMPP-Verschlüsselung
Spätestens seit 2013 gibt es Initiativen, die das XMPP-Netzwerk durch Transportverschlüsselung sicherer machen wollen. Mittlerweile unterstützen fast alle öffentlichen XMPP-Server zumindest optional Transportverschlüsselung via TLS oder SSL. Leider wird das Thema nur in den wenigsten Fällen wirklich ernst genommen - und das mache ich u.A. daran fest: In viel zu vielen Fällen können wir bei der Server-to-Server-Kommunikation folgendes finden:
- Verwendung von selbst signierten Zertifikaten
- Defekte / ungültige Zertifikatskonfigurationen (fehlendes Intermediate-Cert, abgelaufene Zertifikate, …)
- Tolerierung unverschlüsselter Verbindungen
Vor allem gegen den letzten Punkt muss unbedingt etwas unternommen werden. Viel zu viele Server priorisieren zwar verschlüsselte Verbindungen, verifizieren angebotene Zertifikate jedoch nicht, und wenn kein Zertifikat angeboten wird, wird via Dialback authentifiziert oder die Verschlüsselung gleich ganz deaktiviert. Besser könnten die Konditionen für MitM-Attacken kaum sein. Man signalisiert damit zwar Bereitschaft, zu verschlüsseln, aber wenn er andere nicht will, oder wenn ein Angreifer auf der Leitung sitzt, dann verschlüsselt man eben nicht. Es leuchtet ein, dass das nicht besonders viel Sinn ergibt. Wenn wir Zertifikate nicht prüfen und bereit sind, die Verschlüsselung zu deaktivieren, damit jemand mit uns spricht, können wir es auch gleich sein lassen, und unverschlüsselt kommunizieren. Der Effekt ist derselbe: Wer mithören will, kann mithören.
Meiner Meinung nach ist es an der Zeit, “Ernst zu machen”, und seriöse Transportverschlüsselung einzuführen. Verpflichtend. Für alle. Ohne Ausnahmen - ohne wenn und aber.
Ich habe damit vor wenigen Tagen angefangen und meinen trashserver.net Dienst so konfiguriert, dass nur noch sichere, verschlüsselte Verbindungen von Servern akzeptiert werden, die ein gültiges TLS-Zertifikat von einer CA besitzen, welche allgemein anerkannt ist. D.h.: Keine Verbindungen mehr zu Servern, die keine oder ungültige Zertifikate besitzen, oder ein selbst signiertes Zertifikat nutzen.
Letztere schließe ich aus einem praktischen Grund aus: Der Aufwand, jedes individuelle Root-Zertifikat eines jeden Betreibers zu importieren und zu pflegen, der ein Self-Signed Zertifikat einsetzt, würde den Rahmen sprengen. Wir postulieren gerne eine XMPP-Welt, in der es möglichst viele Server gibt. Wir können aber nicht jedem kleinen Betreiber hinterherlaufen und sein Root-Zertifikat importieren, geschweige denn pflegen. Bei verpflichtender Verschlüsselung und Authentifizierung über das Zertifikat wäre ein neuer XMPP-Server so lange vom Rest des Netzes abgeschnitten, bis alle anderen Betreiber sein Root-Zertifikat übernommen hätten. Das ist nicht praktikabel.
Die Beschaffung von validen TLS-Zertifikaten von einer anerkannten CA ist schon lange kein bedeutsamer Aufwand mehr oder eine finanzielle Belastung. Selbst Anfängern gelingt das in kurzer Zeit. Ich muss eingestehen, dass sich Let’s Encrypt für komplexere Setups nicht immer optimal eignet. Doch für einen erfahrenen Administrator sollte auch das keine unüberwindbare Hürde darstellen. Im Zweifel ist eben Kreativität, ein bisschen Scripten oder Handarbeit angesagt. Das sollte einem die Sicherheit der User auf dem eigenen und auf fremden Servern in jedem Fall wert sein.
Viele XMPP-Nutzer verwenden unsere Server als Alternative oder Ergänzung zu WhatsApp. Gerne erklären wir breitspurig, wie sicher doch die Kommunikation via XMPP sei, und dass WhatsApp eine Gefahr für Privatsphäre und Sicherheit darstelle. Tatsächlich müssen wir bei uns selbst anfangen, denn in der Basisversion sind “wir” in der XMPP-Community kein Stück sicherer unterwegs, als WhatsApp-Nutzer. WhatsApp bekommt immerhin Transportverschlüsselung auf die Reihe. Das kann man von uns im Durchschnitt noch nicht behaupten.
Also: Lasst uns das Thema Transportverschlüsselung im XMPP-Netzwerk endlich ernst nehmen und nicht immer nur über Sicherheit reden, sondern dem Taten folgen lassen!
Inzwischen sind ein paar andere Server-Betreiber meinem Aufruf gefolgt und haben es mir gleich getan. Es würde mich freuen, wenn wir das XMPP-Netzwerk bald zu einem sicheren Netzwerk erklären könnten! Konfiguriert eure Server, und sagt es weiter!
Sichere Konfiguration für Prosody:
s2s_require_encryption = true;
s2s_secure_auth = true;
s2s_insecure_domains = {};