Outils pour utilisateurs

Outils du site


admin:services:xmpp

Ceci est une ancienne révision du document !


XMPP

XMPP (ou eXtensible Messaging and Presence Protocol) est un ensemble de protocoles standards ouverts de l’Internet Engineering Task Force (IETF) pour la messagerie instantanée, et plus généralement une architecture décentralisée d’échange de données. XMPP est également un système de collaboration en quasi-temps-réel et d’échange multimédia (Wikipédia).

On utilise comme serveur le logiciel ejabberd, écrit en erlang et développé avec des réseaux d'entreprise en tête.

Mise en place du serveur

Installation

ejabberd est packagé dans pour stretch.

sudo apt install ejabberd

Configuration

ejabberd utilise le format yaml pour son fichier de configuration.

Le yaml est sensible à l'indentation, qui doit être faite uniquement avec des espaces…

La Documentation officielle est très complète (peut-être trop).

Voici un résumé des modifications par rapport au fichier par défaut :

hosts

/etc/ejabberd/ejabberd.yml

hosts:
  - "federez.net"

Certificats

ejabberd ne peut utiliser directement le certificat Let's Encrypt pour deux raisons :

  • ejabberd ne tourne pas en root
  • il attend un format différent de certificat

De plus, on besoin du certificat pour federez.net, qui est renouvelé sur dodecagon.
On a donc au minimum besoin d'ajouter les lignes suivantes au script /root/scripts/renew_letsencrypt_certificates.sh sur dodecagon:

/usr/bin/letsencrypt certonly --cert-name dragon.federez.net --config /etc/letsencrypt/cli.ini --non-interactive --quiet \
  -d federez.net \
  --text
cat /etc/letsencrypt/live/EXAMPLE.federez.net/privkey.pem /etc/letsencrypt/live/EXAMPLE.federez.net/fullchain.pem > /etc/letsencrypt/live/dragon.federez.net/ejabberd.pem
scp /etc/letsencrypt/live/dragon.federez.net/ejabberd.pem ejabberd@dragon.federez.net:~/ejabberd.pem

On oubliera évidemment pas d'adapter en conséquence le code de vérification.

Du coté de dragon, il faut ensuite ajouter la clé publique de root@dodecagon au fichier ~ejabberd/.ssh/authorized_keys. On ajoute au début de la ligne les restrictions suivantes :

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp -t ~/ejabberd.pem" ssh-ed25519 AAAAC3...

On peut ensuite remplacer toutes les apparition de certfile: par
/etc/ejabberd/ejabberd.yml

certfile: "<ejabberd home>/ejabberd.pem"

Au passage vous pouvez en profiter pour décommenter les instances de - “no_tlsv1”.

Authentification LDAP

On souhaite fournir ce service à tous les membres de FedeRez, on utilise donc l'authentification LDAP.
ejabberd ne supporte pas ldap avec STARTTLS, on utilise donc ldaps sur le port 636.

On commente donc auth_method: internal et on remplit le bloc ldap:

auth_method: ldap
ldap_servers:
  - "ldap.federez.net"
ldap_encrypt: tls
ldap_port: 636
ldap_rootdn: "cn=xmpp,ou=service-users,dc=federez,dc=net"
ldap_password: "P455w02d"
ldap_base: "ou=users,dc=federez,dc=net"
ldap_uids:
  - "cn": "%u"

On n'oubliera bien-sûr pas de créer l'utilisateur ad-hoc sur le LDAP federez.

Access Control

On ne veut pas laisser le serveur grand ouvert, on va donc restreindre l'accès à certaines fonctionnalités:

  register:
    - deny

Bridge IRC

On utilise [admin:services:biboumi] pour relier le serveur XMPP à IRC.
Par défaut, [admin:services:biboumi] se connecte sur le port 5347, on modifie donc le bloc ejabberd_service en conséquence :

  -
    port: 5347
    module: ejabberd_service
    access: local
    shaper_rule: fast
    ip: "127.0.0.1"
    privilege_access:
       roster: "both"
       message: "outgoing"
       presence: "roster"
    hosts:
      "irc.xmpp.federez.net":
        password: "<gateway password>"

À noter : le mot de passe est le même que celui défini dans la conf de biboumi.

admin/services/xmpp.1504815679.txt.gz · Dernière modification : 2017/09/07 22:21 de lhark

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki