Differences between revisions 1 and 16 (spanning 15 versions)
Revision 1 as of 2012-12-28 10:19:13
Size: 1092
Editor: anonymous
Comment:
Revision 16 as of 2016-06-13 12:59:43
Size: 6449
Editor: anonymous
Comment: hinweis letsencrypt
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from ejabberd
Diese Seite beschreibt die Installation und Einrichtung des XMPP/Jabber-Servers [[https://ejabberd.im|ejabberd]] auf einem [[https:((debian.org|Debian]] Jessie-System.

<<TableOfContents>>

= 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 ||

Line 2: Line 17:
In Debian Jessie ist Version [[https://blog.process-one.net/ejabberd-community-14-07/|14.07]] des ejabberd enthalten. Zur Installation sind die folgenden Schritte notwendig:
Line 3: Line 20:
aptitude install ejabberd aptitude install ejabberd ejabberd-contrib
Line 5: Line 22:
 * während der Installation wird ein Adminaccoun eingerichtet Während der Installation wird ein Adminaccoun eingerichtet
Line 7: Line 24:
== /etc/ejabberd/ejabberd.cfg == <<Anchor(config)>>

= 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 [[http://docs.ejabberd.im/admin/guide/|Doku]] weiter.
Line 11: Line 32:
 * proxy für dateitransfers  * proxy modul für dateitransfers
Line 13: Line 34:
= Firewall = == DNS-Einträge ==
Die Konferenzräume stehen meist unter conference.DOMAIN zur Verfügung. Ein entsprechender DNS-Eintrag sollte angelegt werden.

== Firewall ==
Line 15: Line 39:
Line 19: Line 44:
  * muss auch nicht dauerhaft offen sein   * muss nicht dauerhaft offen sein
Line 21: Line 46:
  * ist hier noch nicht konfiguriert
Line 24: Line 49:
= Wartung = == Sicherheit erhöhen ==
Über [[https://xmpp.net/index.php|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.

=== Zertifikate von Let's Encrypt ===
Mit [[https://letsencrypt.org/|Let's Encrypt]] gibt es eine einfach zu nutzende Möglichkeit, anerkannte Zertifikate zu erzeugen. Zahlreichen 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 ejabberd neu startet.

=== Cipher konfigurieren ===
Ejabberd benutzt [[http://openssl.org/|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 Optionen<<FootNote(ohne Zeilenumbruch einfügen)>> in der [[#config|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"
}}}
Der Übersichtlichkeit halber sollten die Optionen jeweils an der passenden Stelle in der Konfigurationsdatei platziert werden. Die aufgelisteten Cipher ergeben eine gute Bewertung bei der [[https://xmpp.net/index.php|IM Observatory]] und sind [[https://community.qualys.com/blogs/securitylabs/2013/08/05/configuring-apache-nginx-and-openssl-for-forward-secrecy|hier]] entnommen.

=== Unsichere SSL-Varianten deaktivieren ===
Erneut die [[#config|Konfigurationsdatei]] bearbeiten und an den entsprechenden Stellen {{{- "no_sslv3}}} einfügen:

{{{
protocol_options:
       - "no_sslv3"

s2s_protocol_options:
   - "no_sslv3"
}}}
=== 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:

{{{
    ## Set the minimum informational entropy for passwords.
    ##
    password_strength: 32
}}}
= 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:

 * per Webfrontend
 * oder per Kommandozeile
 {{{
ejabberdctl register NAME HOST PASSWORT
}}}
Line 26: Line 113:
 * johndoe -> http://jabber.systemausfall.org:5280/admin/server/jabber.systemausfall.org/user/johndoe 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 =

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. 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.

  • z.B. selbständiges registrieren von Benutzern erlauben
  • starttls, {certfile, "/etc/ejabberd/ejabberd.pem"}
  • multi user chat aktivieren
  • proxy modul für dateitransfers

DNS-Einträge

Die Konferenzräume stehen meist unter conference.DOMAIN zur Verfügung. Ein entsprechender DNS-Eintrag sollte angelegt werden.

Firewall

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

  • 5222/tcp für Clients, die sich mit dem Server verbinden wollen
  • 5269/tcp für andere Server, die sich mit dem lokalen Server verbinden wollen
    • braucht nicht offen zu sein, wenn der lokale Server nur für interne Kommunikation dort angemeldeter User gedacht ist
  • 5280/tcp für das Adminwebinterface
    • muss nicht dauerhaft offen sein
  • 7777/tcp für Dateitransfers via Proxy

Ä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.

Zertifikate von Let's Encrypt

Mit Let's Encrypt gibt es eine einfach zu nutzende Möglichkeit, anerkannte Zertifikate zu erzeugen. Zahlreichen 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 ejabberd neu startet.

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"

Der Übersichtlichkeit halber sollten die Optionen jeweils an der passenden Stelle in der Konfigurationsdatei platziert werden. Die aufgelisteten Cipher ergeben eine gute Bewertung bei der IM Observatory und sind hier entnommen.

Unsichere SSL-Varianten deaktivieren

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

protocol_options:
       - "no_sslv3"

s2s_protocol_options:
   - "no_sslv3"

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:

    ## Set the minimum informational entropy for passwords.
    ##
    password_strength: 32

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:

  • per Webfrontend
  • oder per Kommandozeile
    ejabberdctl register NAME HOST PASSWORT

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)

ejabberd unter Debian installieren (last edited 2020-08-02 09:34:26 by anonymous)


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