« Ejabberd » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
Ligne 191 : Ligne 191 :
  certfiles:
  certfiles:
   - <span style="color:green">"/etc/letsencrypt/live/geocoucou.im/fullchain.pem"</span>
   - <span style="color:green">"/etc/letsencrypt/live/geocoucou.im/fullchain.pem"</span>
  - <span style="color:green">"/etc/letsencrypt/live/geocoucou.im/privkey.pem"</span>


* Redémarrer le serveur '''Ejabberd''' pour la prise en compte des nouveaux paramètres : {{Commande|service ejabberd restart}}
* Redémarrer le serveur '''Ejabberd''' pour la prise en compte des nouveaux paramètres : {{Commande|service ejabberd restart}}

Version du 28 juillet 2024 à 19:42

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)

  • Installation de Certbot et de ses dépendances :

apt-get install certbot

  • Lancer Certbot en tapant simplement la commande :
    certbot certonly
  • Le serveur de messagerie Ejabberd ne disposant pas de serveur web, choisir l'option Spin up a temporary webserver (standalone) :
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Spin up a temporary webserver (standalone)
2: Place files in webroot directory (webroot)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • Saisir une adresse mail. Cette dernière sera utilisée par l'autorité de certification en cas d'échec de renouvellement automatique du certificat :
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Plugins selected: Authenticator standalone, Installer None
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): tech@ncad.fr

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • Lire et accepter les conditions générales du service en saisissant y puis en tapant sur la touche Entrée :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.4-April-3-2024.pdf. You must agree in
order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
  • Accepter / refuser la réutilisation de l'adresse mail saisie précédemment à des fins d'informations publicitaires :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y
  • Saisir les domaines pour lesquelles le certificat devra être généré. Dans notre cas il s'agit des adresses geocoucou.im et xmpp.geocoucou.im :
Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c'
to cancel): geocoucou.im xmpp.geocoucou.im
  • Lorsque le certificat est généré avec succès, prendre note de son emplacement sur le serveur :
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"
  - "/etc/letsencrypt/live/geocoucou.im/privkey.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