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.
Mit der Zeit häufen sich auf XMPP-Servern unzählige ungenutzte XMPP-Accounts an. Es schadet nicht, diese nach einem festgelegten Zeitraum zu löschen und die Benutzernamen wieder freizugeben. Nicht zuletzt kann so eine Reinigungsaktion auch für die Datenbank-Performance hilfreich sein. Standardmäßig enthält Prosody leider keinen Mechnismus zum Löschen inaktiver Accounts, doch mit zwei Modulen und ein paar Kommandozeilen-Tricks kann man den Server von Altlasten befreien.
Um zu erkennen, welcher Account wann zuletzt genutzt wurde, muss der Zeitpunkt der letzten Aktivität (dazu zählen Registrierung, Login, Logout) für jeden Account ermittelt werden. Dazu gibt es das prosody-Modul “mod_lastlog”. Darauf kann das zweite Modul “mod_list_inactive” aufbauen: Es nutzt die von mod_lastlog bereitgestellten Aktivitäts-Timestamps und gibt auf Wunsch eine Liste der Nutzer-IDs aus, welche in dem vorgegebenen Zeitraum nicht aktiv waren.
Seitdem WhatsApp sich zur Quasi-Standardanwendung für mobiles Instant-Messaging entwickelt hat, werde ich immer wieder gefragt, wieso man mich nicht über die App erreichen könne. Ich will in diesem Beitrag erklären, wieso ich für mich entschieden habe, WhatsApp nicht zu nutzen, und wieso ich die hohe Marktdurchdringung des Dienstes für problematisch halte.
Als WhatsApp in Deutschland noch weitestgehend unbekannt war und sich in den ersten Großstädten gerade erst etablierte, war ich einige Monate lang WhatsApp-User. Ich war einer der ersten, der damals über die App erreichbar war. Auf den Hinweis meines damaligen Chefs hin installierte ich die App, um mit ihm und den Kollegen besser im Austausch zu bleiben. In meiner Familie hatten allerdings nur die wenigsten ein Smartphone, und in der Agentur, in der ich arbeitete, war WhatsApp nach einer Weile nicht mehr relevant. Noch bevor der WhatsApp-Hype in Deutschland richtig angelaufen war, hatte ich WhatsApp schließlich wieder von meinem Smartphone gelöscht. Das war 2012.
Prosody ist ein inzwischen weit verbreiteter und moderner XMPP-Server, der durch zahlreiche Module erweitert werden kann. Geschrieben ist Prosody in der Skriptsprache Lua. Zur Installation habe ich vor 3 Jahren schon einmal eine Anleitung geschrieben. Dieser Beitrag soll die etwas veraltete Version ersetzen.
Voraussetzungen
- vServer oder Rootserver mit Ubuntu 14.04 oder höher
- Möglichkeit, valide TLS-Zertifikate auszustellen, z.B. über Let’s Encrypt
- Eigene Domain + Zugriff auf zugehörige DNS-Records
- Grundkenntnisse im Umgang mit Ubuntu Server, DNS, TLS-Zertifikaten, MySQL
Annahmen
- Verwendete XMPP-Domain: xmppserver.tld (ergibt XMPP-IDs nach dem Muster: benutzer@xmppserver.tld)
- Verwendete XMPP-Domain für Konferenzen / Chatrooms: conference.xmppserver.tld
Installation
Oftmals ist die Software aus den Ubuntu-Repositories veraltet. Aus diesem Grund wird Prosody nicht aus den offiziellen Ubuntu-Repos installiert, sondern aus dem Debian-Repo der Prosody-Entwickler. Das Repo muss zunächst hinzugefügt werden: