Der XMPP-Server von ProLinOS

Mit dem Betrieb eines öffentlichen XMPP-Servers bietet ProLinOS einen Instant Messaging Dienst an, der Teil des dezentral organisierten und auf freier Software basierenden globalen XMPP-Netzwerkes ist, welches den Benutzern ermöglicht, weltweit mit anderen Menschen in Kontakt zu treten, Unterhaltungen zu führen, Dateien und Bilder auszutauschen oder im Gruppenchat mit mehreren Nutzern Konferenzen abzuhalten. Natürlich alles in Echtzeit, ohne Angabe persönlicher Daten und mit entsprechenden Clienten über alle Geräte und gängigen Betriebssysteme hinweg.

Gemäß dem Kernanliegen des Projekts ProLinOS ist der Grund für den Betrieb eines XMPP-Servers, den Nutzern einen auf freier und quelloffener Software basierenden, sicheren und datenschutzfreundlichen Dienst zum Schutz der persönlichen Kommunikation und Wahrung der digitalen Privatheit zu bieten, der ihnen mit einer aus einem frei zu wählenden Benutzernamen und der Domäne prolinos.de bestehenden XMPP-ID (benutzername@prolinos.de) als Alternative zu den unfreien und zentral organisierten Instant Messaging Diensten von WhatsApp und Co. zur Verfügung steht und ihnen eine sichere weltweite Kommunikation ermöglicht. Wer noch nicht genau weis, was es eigentlich mit XMPP auf sich hat, dem empfehle ich zum Einstieg meinen diesbezüglichen am Ende dieser Seite verlinkten Beitrag.

Nachstehend habe ich einige Informationen zu dem Aufbau und der Konfiguration des XMPP-Servers des Projekts ProLinOS zusammen gestellt und wer den Server nun gerne für Instant Messaging per XMPP nutzen und einen entsprechenden Account auf dem Server registrieren möchte, kann dies mit dem auf diesen Seiten zur Verfügung stehenden Web-Template zur Account Registrierung sehr schnell und datenschutzfreundlich erledigen.

Servertechnik – Sicherheit

Der XMPP-Server von ProLinOS wird mit der jeweils aktuell verfügbaren stabilen Version von Prosody betrieben, eine Open Source Software, die recht sparsam im Umgang mit Systemressourcen ist und deren Funktionalität sich über Module entsprechend den eigenen Vorstellungen erweitern lässt. Wie alle Dienste von ProLinOS läuft auch dieser auf einem Server, der mit Debian GNU/Linux betrieben und von mir administriert wird. Grundsätzlich sind alle Verbindungen zu den verschiedenen Diensten von ProLinOS immer nur verschlüsselt möglich. Dies gilt insoweit auch für den XMPP-Server und diese Vorgabe führt im Zusammenspiel mit dem eingesetzten Verschlüsselungsprotokoll zwangsläufig zu folgenden Ergebnissen:

  • Auf dem XMPP-Server von ProLinOS wird zur Transportwegverschlüsselung nur noch TLSv1.2 in Verbindung mit Perfect Forward Secrecy eingesetzt. Über die inzwischen veralteten bzw. als unsicher geltenden Verschlüsselungsprotokolle SSLv2, SSLv3, TLSv1 und TLSv1.1 können insoweit keine Verbindungen zu dem XMPP-Server von ProLinOS hergestellt werden.
  • Die Clienten der Benutzer können nur verschlüsselte Verbindung zu dem XMPP-Server von ProLinOS herstellen. Der Aufbau einer unverschlüsselten Verbindung wird serverseitig abgelehnt. Damit ist jede Kommunikation zwischen einem Clienten und dem XMPP-Server von ProLinOS immer per TLS Transportwegverschlüsselung geschützt.
  • Andere XMPP-Server können ebenfalls nur über eine verschlüsselte Verbindung mit dem XMPP-Server von ProLinOS kommunizieren. Dies erfordert allerdings, dass der andere Server ebenfalls über ein gültiges Zertifikat verfügt, damit ein Sitzungsschlüssel ausgehandelt und Perfect Forward Secrecy erreicht werden kann. Sofern diese Vorgabe nicht erfüllt wird, kann auch keine Verbindung hergestellt werden.

Neben einer zum Schutz des Nachrichteninhalts zu nutzenden echten Ende-zu-Ende-Verschlüsselung, vorzugsweise mit OMEMO, hängt die Sicherheit der Kommunikation innerhalb des dezentral organisierten und weltweit aus einer Vielzahl an Servern gebildeten XMPP-Netzwerks von einer durchgehenden Transportwegverschlüsselung ab, wobei die Verbindungen der XMPP-Server untereinander hierbei von besonderer Bedeutung sind, da bestehende Verschlüsselungen von Clienten zu ihren Servern völlig ausgehebelt werden, wenn die Server selbst sich unverschlüsselt oder auf der Basis von fehlerhaften oder abgelaufenen Zertifikaten verbinden. Hierzu zählen auch selbst signierte Zertifikate, da der Server deren Gültigkeit nicht selbständig feststellen kann und diese daher als ungültig verwirft. Wie die vorstehenden Konfigurationen des XMPP-Servers von ProLinOS zeigen, bin ich im Interesse eines sicheren Instant Messaging nicht bereit, solche unsicheren Verbindungen zu akzeptieren. Dies führt natürlich dazu, dass Unterhaltungen mit den auf entsprechenden Servern registrierten Kontakten mangels Verbindung nicht geführt werden können. Vielleicht sollte man seinen Kontakten mit einem Hinweis auf Wahrung von Datenschutz und digitaler Privatheit dann einen Wechsel auf einen der vielen durchaus verfügbaren sicheren Server des XMPP-Netzwerkes empfehlen.

Verbindungen – Ports, Proxy und HTTP-Bind (Bosh)

  • In der Konfiguration des XMPP-Servers von ProLinOS sind für Verbindungen die Standardports gesetzt (Client zu Server: 5222 – Server zu Server: 5269) und für XMPP sind in den DNS Einstellungen neben dem A-Record auch entsprechende SRV Records angelegt. Insoweit sollten die entsprechenden Verbindungen von den jeweils genutzten Clienten (z.B. Conversations oder Gajim) automatisch erkannt und hergestellt werden.
  • Neben dem Datei-Upload auf den Server steht für einen direkten Dateiaustausch von Client zu Client den Nutzern des XMPP-Servers von ProLinOS ein Proxy zur Verfügung, der auf dem Standardport (5000) läuft. Auch dieser Service sollte insoweit von den Clienten automatisch erkannt werden. Allerdings ist, damit nun auch wirklich der Proxy von ProLinOS und nicht ein eventuell in dem jeweiligen Clienten voreingestellter genutzt wird, der Proxy in den Einstellungen des Clienten explizit zu setzen und dort mit der Adresse proxy.prolinos.de und dem Port 5000 einzutragen.
  • Über die auf dem XMPP-Server von ProLinOS aktivierte Bosh-Funktionalität können sowohl die üblichen XMPP-Clienten wie auch browserbasierte XMPP-Webclienten unter Verwendung der HTTP-Bind Adresse: https://prolinos.de/http-bind auch dann eine Verbindung zu dem XMPP-Server über den HTTP-Port 443 herstellen, wenn sie sich in einem Netz oder hinter einer Firewall befinden, welche nur Verbindungen über die HTTP-Ports 80 und 443 erlauben und insoweit die XMPP-Standardports gesperrt und nicht nutzbar sind.

Funktionalitäten – aktivierte XEPs

Einige der für den Betrieb bzw. die grundsätzlichen Funktionen des XMPP-Servers unerlässlichen Module (XMPP-Erweiterungsprotokolle) zum Login oder dem Anlegen einer Kontaktliste und dergleichen mehr, sind bereits vorinstalliert oder auch automatisch aktiviert. Weitere Funktionalitäten können nach Bedarf durch die Aktivierung und Konfiguration zusätzlich verfügbarer Module hinzugefügt werden. In der nachstehenden Aufstellung führe ich zur allgemeinen Information einige der wichtigsten auf dem XMPP-Server von ProLinOS aktivierten Module und die damit verbundenen und für die Nutzer verfügbaren Funktionalitäten auf:

  • XEP-0030: Service Discovery → Clienten können damit auf dem XMPP-Server verfügbare Dienste auffinden und anzeigen.
  • XEP-0045: Multi-User Chat → Benutzer können Chaträume eröffnen und an Gruppenchats (MUC) teilnehmen.
  • XEP-0054: Profile → Benutzer können über ihrem Clienten Visitenkarten mit persönlichen Daten und Kontaktinformationen anlegen.
  • XEP-0065: Proxy65 → Ermöglicht direkte Dateiübertragungen zwischen den Clienten der Benutzer per Proxy.
  • XEP-0115: Entity Capabilities → Ermöglicht es den Clienten der Benutzer, die Funktionalitäten der Clienten ihrer Kontakte zu erkennen.
  • XEP-0163: Personal Eventing Protocol → Benutzer können Avatare, Statusmeldungen, Aktivität an den Server übertragen und veröffentlichen.
  • XEP-0191: Blocking Command → Benutzer können z.B. zur Bekämpfung von Spam Kontakte/XMPP-IDs blockieren und in einer Liste verwalten.
  • XEP-0198: Stream Management → Ermöglicht die Wiederaufnahme und Fortführung einer begonnenen Unterhaltung nach Netzausfall.
  • XEP-0206: XMPP Over BOSH → Erlaubt es per HTTP (Webclient) eine Verbindung mit dem XMPP-Server herzustellen und zu kommunizieren.
  • XEP-0237: Roster Versioning → Stellt sicher, dass Client und Server Kontaktlisten (Roster) nur nach Änderungen synchronisieren.
  • XEP-0280: Message Carbons → Synchronisiert Unterhaltungen/Nachrichtenverlauf mit den Clienten auf allen Geräten des Benutzers.
  • XEP-0313: Message Archive Management → Speichert Unterhaltungen/Chatverläufe auf dem Server und synchronisiert sie mit allen Clienten.
  • XEP-0352: Client State Indication → Zeigt dem Server den aktuellen Status/Aktivität der Benutzer und hilft bei Inaktivität Akku zu sparen.
  • XEP-0357: Push Notifications → Ermöglicht unter Android und iOS, das System für Push-Benachrichtigungen zu verwenden.
  • XEP-0363: HTTP File Upload → Ermöglicht das Hochladen und Teilen von den auf dem XMPP-Server gespeicherten Bildern und Dateien.
  • XEP-0368: XMPP over TLS → Ermöglicht Clienten in restriktiven Netzen eine Verbindung per TLS über den Port 443 herzustellen.
  • XEP-0384: OMEMO Encryption Neue Kontakte können bereits vor Aufnahme in die Kontaktliste verschlüsselt angeschrieben werden.

Administrative Voreinstellungen

Zu einigen der auf dem XMPP-Server von ProLinOS aktivierten Module bzw. deren für jeden Nutzer verfügbaren Funktionalitäten bestehen die folgenden administrativen Voreinstellungen und Limitierungen:

  • Standardmäßig ist Message Archive Management aktiv und es werden insoweit die Nachrichten und Unterhaltungen der Benutzer auf dem Server von ProLinOS gespeichert. Damit wird ermöglicht, das einem Benutzer die Nachrichten auf allen seinen Geräten zugestellt bzw. von diesen abgerufen werden können, oder auch eine wegen vorübergehender Nichterreichbarkeit des Empfängers zunächst nicht zustellbare Nachricht zu einem späteren Zeitpunkt zugestellt werden kann. Die so archivierten Nachrichten und Unterhaltungen werden allerdings auf dem XMPP-Server von ProLinOS keineswegs dauerhaft gespeichert, sondern nach Ablauf eines Speicherzeitraumes von jeweils 30 Tagen automatisch gelöscht.
  • Die Einrichtung eines neuen Gruppenchats ist nur für registrierte Benutzer auf ProLinOS möglich. Kontakte auf anderen XMPP-Servern können aber dem Gruppenchat beitreten, wenn der Besitzer des Chats diesen offen gestaltet und nicht auf bestimmte Mitglieder beschränkt. Bei einem bestehenden Gruppenchat werden einem Benutzer, der neu hinzukommt, dann wenn er den Chatraum betritt, die letzten 25 Beiträge der bisherigen Teilnehmer als Verlauf angezeigt, damit er den Unterhaltungs- oder Diskussionsfaden aufnehmen kann.
  • Aufgrund des aktivierten HTTP File Upload besteht für Benutzer die Möglichkeit, einem Kontakt Bilder und Dateien zu übersenden oder diese während einer laufenden Unterhaltung oder eines Gruppenchats mit anderen Teilnehmern zu teilen. Hierbei werden die zu übertragenden Bilder und Dateien auf dem XMPP-Server gespeichert, wobei allerdings einige Limitierungen zu beachten sind. Die maximale Uploadgröße einer Datei ist auf 100 MB und der insgesamt für jeden Benutzer verfügbare Speicherplatz auf 3 GB begrenzt. Die hochgeladenen Dateien verbleiben auch nicht dauerhaft auf dem XMPP-Server, sondern werden jeweils nach Ablauf eines Speicherzeitraumes von 30 Tagen automatisch gelöscht, da sie nach Zustellung ohnehin auf den Geräten des Empfängers gespeichert werden und der XMPP-Server hier nicht als dauerhafter Datenspeicher, sondern lediglich als Zwischenspeicher fungiert.
  • Die Registrierung eines Accounts auf dem XMPP-Server von ProLinOS direkt aus einem Clienten heraus (In-Band Registration) ist nicht möglich. Diese Funktion ist auf dem Server aus gutem Grund deaktiviert. Die Benutzer bestehender Accounts können aber jederzeit über ihren Clienten ihr Passwort ändern oder auch ihren gesamten Account auf dem XMPP-Server löschen.
  • Die Passwörter der Benutzer werden nicht im Klartext, sondern immer als Hash Wert in einer Datenbank gespeichert, wobei standardmäßig zur Authentifizierung das Verfahren mit SCRAM-SHA-1 genutzt wird. Ältere Clienten, die dieses Verfahren nicht unterstützen, können sich zwar nur im Klartext an dem XMPP-Server anmelden, dies allerdings zumindest grundsätzlich über eine verschlüsselte Verbindung.

Datenschutz

Wie bei allen im Rahmen des Projekts ProLinOS angebotenen Diensten lege ich auch bei dem Betrieb des XMPP-Servers neben der Serversicherheit besonderen Wert auf die Sicherheit der Kommunikation und der Daten der Benutzer. Hierbei ist neben der mittels TLS grundsätzlich bei allen Verbindungen zu erfolgenden Verschlüsselung insbesondere auch die Datensparsamkeit von Bedeutung. Es werden auf dem Server daher auch nur die zur Bereitstellung des Dienstes unbedingt erforderlichen Nutzerdaten gespeichert und auch zur Begründung eines Accounts ist weder die Angabe einer Telefonnummer noch sonstiger personenbezogener Daten erforderlich. In der Datenschutzerklärung von ProLinOS sind zu der Nutzung des XMPP-Servers entsprechende detaillierte Darlegungen enthalten.


Weitere Beiträge zum Themenbereich Instant Messaging mit XMPP: