Diese Seite beschreibt die Installation und Einrichtung des XMPP/Jabber-Servers ejabberd auf einem Debian Jessie-System.

Begriffe und Variablen

Variable

Bedeutung

Beispiel

DOMAIN

Domain des Jabberservers

systemausfall.org

JID

Jabber-Identifier, vollständige Jabber-Adresse

admin1@jabber.systemausfall.org

NAME

Nutzername

alice

HOST

Jabber-Host

ejabberd@jabber

PASSWORT

Ein Passwort

VHOST

Virtueller Jabber-Host

jabber.systemausfall.org

Installation

In Debian Jessie ist Version 14.07 des ejabberd enthalten. In den Backports ist eine aktuellere Version enthalten. Zur Installation sind die folgenden Schritte notwendig:

aptitude install ejabberd ejabberd-contrib

Während der Installation wird ein Adminaccoun eingerichtet

Konfiguration

Die Konfiguration findet über die Datei /etc/ejabberd/ejabberd.yml statt. Durch zahlreiche Kommentare ist die Datei gut erklärt - ansonsten hilft die umfangreiche Doku weiter. Ab und an wird die Syntax vereinfacht - ein Blick in die aktuelle Beispiel-Datei hilft hier weiter.

DNS-Einträge

Eintrag

Host

Ziel

SRV

_xmpp-client._tcp.jabber.systemausfall.org

jabber.systemausfall.org:5222

SRV

_xmpp-server._tcp.jabber.systemausfall.org

jabber.systemausfall.org:5269

SRV

_xmpps-client._tcp.jabber.systemausfall.org

jabber.systemausfall.org:443

TXT

_xmppconnect.jabber.systemausfall.org

_xmpp-client-xbosh=https://jabber.systemausfall.org:5280/bosh

Firewall

folgende Ports müssen in der Firewall geöffnet werden:

Änderungen in /etc/shorewall/rules eintragen und Shorewall mit shorewall safe-restart neu starten.

Sicherheit erhöhen

Über IM Observatory lässt sich die Einrichtung des jeweiligen Servers nach Sicherheitsaspekten bewerten. Es ist sinnvoll, den eigenen Server dort einen Test zu unterziehen und die bemängelten Punkte zu bearbeiten. Hanno hat seine ejabberd-Konfiguration veröffentlicht, die beim Sicherheitstest ein gutes Ergebnis liefert. Hinweise zur Erhöhung der Sicherheit befinden sich auch im Blog von process one.

Zertifikate von Let's Encrypt

Mit Let's Encrypt gibt es eine einfach zu nutzende Möglichkeit, anerkannte Zertifikate zu erzeugen. Zahlreiche Anleitungen erklären, wie das grundsätzlich geht. Sind die Zertifikate erzeugt, liegen sie bei Debian unter /etc/letsencrypt/live. Da das Verzeichnis root:root gehört, hat ejabberd darauf keinen Zugriff. Es bietet sich an, unter /etc/ejabberd/ eine Zertifikatsdatei zu erstellen (Rechte ejabberd:root und sie mit den Daten aus dem letscrypt-Verzeichnis zu befüllen:

cat /etc/letsencrypt/live/domain.tld/privkey.pem /etc/letsencrypt/live/domain.tld/fullchain.pem >> /etc/ejabberd/ejabberd.pem

Anschließend sollte ein entsprechender cron-job erstellt werden, der die Datei bei jeder Zertifikatserneuerung aktualisert und die ejabberd-Konfiguration neu lädt.

Seit Version 17.11 unterstützt ejabberd das ACME-Protokoll. Folgende Angaben sind für die automatische Erstellung und Nutzung per ejabberdctl notwendig:

listen:
  -
    port: 5281
    module: ejabberd_http

certfiles:
  - "/data/ejabberd/ejabberd.pem"

acme:
  contact: "mailto:info@example.org"
  ca_url: "https://acme-v01.api.letsencrypt.org"

Anschließend muss der Webserver so konfiguriert werden, dass er Anfragen auf Port 5281 an ejabberd weiter leitet.

Cipher konfigurieren

Ejabberd benutzt OpenSSL für die Transportweg-Verschlüsselung zwischen Client und Server bzw. Server und Server. Es gibt unterschiedliche Cipher, die für die Verschlüsselung genutzt werden können. Da einige Cipher angreifbar sind, ist es sinnvoll, ejabberd mitzuteilen, welche Cipher in welcher Reihenfolge benutzt werden sollen. Dies geht mit den folgenden Optionen1 in der Konfigurationsdatei:

ciphers: "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

s2s_ciphers: "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

protocol_options:
- "cipher_server_preference"

Die verwendeten Cipher sollten regelmäßig aktualisiert werden. Eine gute Quelle ist bspw. BetterCrypto.org.

Unsichere SSL-Varianten deaktivieren

Erneut die Konfigurationsdatei bearbeiten und an den entsprechenden Stellen - "no_sslv3 einfügen:

protocol_options:
   - "no_sslv2"
   - "no_sslv3"
   - "no_tlsv1"

s2s_protocol_options:
   - "no_sslv2"
   - "no_sslv3"
   - "no_tlsv1"

Passworte als Hash speichern

Bei Verwendung der internen Mnesia-Datenbank werden die Passworte standardmäßig im Klartext gespeichert. Dies kann mit den folgenden Optionen in der Konfigurationsdatei geändert werden:

auth_method: internal
auth_password_format: scram

Bereits in Klartext gespeicherte Passworte werden beim nächsten Start von ejabberd umgewandelt.

Sichere Passworte erzwingen

Damit User nicht zu einfache Passworte bei der Erstellung von neuen Konten verwenden, kann folgende Option im Abschnitt mod-register aktiviert werden:

password_strength: 32

Spamschutz

XMPP-Spam ist lästig. Sofern für den eigenen Server die offene Anmeldung (In-band Registration) erlaubt ist, sollte zumindest eine Captcha-Abfrage eingerichtet sein, damit Bots nicht zahlreiche Accounts anlegen können. Die meisten Clients betten das Captcha dank XEP-0158 bei der Registrierung direkt ein. Sollte der Client dies nicht unterstützen, wird zumindest eine Link angezeigt, um das Captcha über den Browser aufzurufen.

Weitere Hinweise zur Spamreduzierung befinden sich im Vortrag von ProcessOne.

Optimierung für mobile Clients

Neben klassischen Desktop-Programmen verbreitet XMPP sich auch auf verschiedenen Smartphone-Systemen. So gibt es mit Conversations bspw. es einen wirklich guten XMPP-Client für Android-Geräte. Damit die Nutzung mit unterschiedlichen Clients angenehmer wird, können einige Optimierungen vorgenommen werden.

HTTP File Upload

HTTP File Upload ermöglicht Dateitransfer per HTTP-Upload. Da ejabberd auf einem speziellen Port auf die Uploads wartet, muss die Firewall entsprechend konfiguriert sein. Anschließend wird ejabberd.yml angepasst:

Tor Hiddenservice einrichten

Der XMPP-Server kann recht einfach als Tor Hiddenservice betrieben werden.

In der Datei /var/lib/tor/hidden_service/hostname ist der automatisch generierte .onion-Link hinterlegt, der nun als Adresse publiziert werden kann. Du solltest noch folgende Hinweise beachten.

Administration

Webfrontend

Über das Webfrontend kann der Server umfangreich konfiguriert werden. Es ist üblicherweise unter https://DOMAIN/admin zu erreichen.

Einloggen können sich in /etc/ejabberd/ejabberd.yml eingetragene Admins mit ihrer vollständigen JID und dem entsprechenden Passwort.

neue User anlegen

Sofern das entsprechende Modul aktiviert ist, können User mit ihrem Client selbständig neue Accounts registrieren.

Für Admins gibt es zwei Möglichkeiten:

Userpasswort ändern

Auch hier gilt: sofern das entsprechende Modul aktiviert ist, können User mit ihrem Client das Passwort selbst ändern.

Admins können dies über das Webfrontend tun: https://DOMAIN/admin/server/VHOST/users.


Fussnoten und Hinweise

  1. ohne Zeilenumbruch einfügen (1)

  2. Entgegen der Dokumentation ist das convert-Tool aus graphicsmagick-imagemagick-compat nicht vollstängig kompatibel zur imagemagick-Version (2)

ejabberd unter Debian installieren (zuletzt geändert am 2018-04-02 22:00:16 durch anonym)


Creative Commons Lizenzvertrag
This page is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.