Ejabberd

De NCad Wiki
Aller à la navigation Aller à la recherche

Cet article est en cours de rédaction.

Prérequis

Présentation

Le serveur Ejabberd sera hébergé sur un serveur dédié avec les caractéristiques réseaux suivantes :

  • Nom du serveur : xmpp.geocoucou.im
  • Nom d'hôte de messagerie : geocoucou.im
  • Adresses IP :
    • IPv4 : 152.228.135.223
    • IPv6 : 2001:41d0:404:200::5eee
Les enregistrements DNS pour les noms d'hôtes xmpp.geocoucou.im et geoucoucou.im pointent sur les adresse IPv4 et IPv6 du serveur hébergeant le service Ejabberd.

Configuration DNS

Le nom de domaine geocoucou.im sera spécialement dédié à l'usage de la messagerie instantanée Ejabberd.

  • La racine du domaine pointe sur les adresses IPv4 et IPv6 du serveur Ejabberd.
  • Vérifions le pointage du champs DNS de type A pour la zone geocoucou.im. Ce dernier doit pointer sur l'adresse IPv4 152.228.135.223 :

dig a geocoucou.im

; <<>> DiG 9.16.50-Debian <<>> geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48588
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;geocoucou.im.                  IN      A

;; ANSWER SECTION:
geocoucou.im.           3600    IN      A       152.228.135.223

;; Query time: 28 msec
;; SERVER: 213.186.33.99#53(213.186.33.99) ;; WHEN: Sun Jul 28 16:32:36 UTC 2024 ;; MSG SIZE rcvd: 57 }}
  • Vérifions le pointage du champs DNS de type AAAA pour la zone geocoucou.im. Ce dernier doit pointer sur l'adresse IPv6 2001:41d0:404:200::5eee :

dig aaaa geocoucou.im

; <<>> DiG 9.16.50-Debian <<>> aaaa geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3116
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;geocoucou.im.                  IN      AAAA

;; ANSWER SECTION:
geocoucou.im.           3600    IN      AAAA    2001:41d0:404:200::5eee

;; Query time: 44 msec
;; SERVER: 213.186.33.99#53(213.186.33.99)
;; WHEN: Sun Jul 28 16:33:20 UTC 2024
;; MSG SIZE  rcvd: 69

Installation

Serveur Ejabberd

  • Installation du paquet ejabberd :

apt-get install ejabberd

  • Installation du paquet erlang-p1-mysql pour l'exploitation d'une base de données SQL (MySQL, MariaDB) :

apt-get install erlang-p1-mysql

  • Pour vérifier si le service fonctionne normalement :

service ejabberd status

  • Editer le fichier ejabberd.yml puis rechercher la ligne :
hosts:
  - localhost
  • Remplacer par :
hosts
  - geocoucou.im
  • Rechercher la ligne :
acl:
  admin:
    user:
      - ""
  • Remplacer par :
acl:
  admin:
    user:
      - "root@geocoucou.im"
  • Redémarrer le serveur ejabberd pour la prise en compte des nouveaux paramètres :

service ejabberd restart

  • Création de l'utilisateur root@geocoucou.im avec le mot de passe password :

ejabberdctl register root geocoucou.im password

Dès à présent, il est possible de se connecter à l'interface d'administration du serveur ejabberd via le lien https://<IP_SERVEUR_EJABERD:5280/admin et avec l'identifiant créé à l'étape précédente.

Certificats avec Certbot (Let's Encrypt)

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/geocoucou.im/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/geocoucou.im/privkey.pem
   Your certificate will expire on 2024-10-26. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
  • Editer le fichier de configuration /etc/ejabberd/ejabberd.yml puis rechercher la ligne :
certfiles:
  - "/etc/ejabberd/ejabberd.pem"
  • Remplacer par :
certfiles:
  - "/etc/letsencrypt/live/geocoucou.im/fullchain.pem"
  • Redémarrer le serveur Ejabberd pour la prise en compte des nouveaux paramètres :
    service ejabberd restart


Base de données

  • Les scripts d'installation de la base de données se trouvent à la racine /usr/share/ejabberd/sql.
  • À l'aide de la commande mysqldump, procéder à l'importation de la structure de tables :

mysql -u root ejabberd < mysql.sql

  • Editer le fichier de configuration /etc/ejabberd/ejabberd.yml puis adapter les ligne suivantes :
sql_type: mysql
sql_server: "localhost"
sql_database: "ejabberd"
sql_username: "ejabberd"
sql_password: "password"

auth_method: sql
default_db: sql

Paramétrage du pare-feu

Matrice des flux autorisés

Par défaut, les flux non listés ci-dessous ne sont pas autorisés sur l’équipement.

Matrice de flux
Source Protocole(s) Port(s) Description
* tcp 22 Accès SSH, SFTP.
* tcp 5280 Accès interface d'administration Ejabberd.
* tcp 5222 Connexion des clients XMPP au serveur Ejabberd.
* tcp 5269 Echanges entre serveurs XMPP.
<@IP_SUPERVISION> udp 161,162 Accès SNMP depuis serveur supervision.
* icmp Réponse aux requêtes ping.

Configuration iptables sur la couche IPv4

  • Installation des paquets iptables (pare-feu) et iptables-persistent (sauvegarde persistante de la configuration).

root@apache2:~# apt-get install iptables iptables-persistent -y

  • Ajout des règles iptables pour autoriser les flux SSH, ICMP et MySQL :

root@apache2:~# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
root@apache2:~# iptables -A INPUT -p tcp --dport 5280 -j ACCEPT
root@apache2:~# iptables -A INPUT -p tcp --dport 5222 -j ACCEPT
root@apache2:~# iptables -A INPUT -p tcp --dport 5269 -j ACCEPT
root@apache2:~# iptables -A INPUT -p udp -m multiport -s <@IP_SUPERVISION> --dports 161,162 -j ACCEPT
root@apache2:~# iptables -A INPUT -p icmp -j ACCEPT
root@apache2:~# iptables -A INPUT -i lo -j ACCEPT
root@apache2:~# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
root@apache2:~# iptables -P INPUT DROP

  • Sauvegarde de la configuration et application automatique à chaque redémarrage du système.

root@apache2:~# dpkg-reconfigure iptables-persistent