« Ejabberd » : différence entre les versions
Ligne 814 : | Ligne 814 : | ||
* 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}} | ||
* Pour valider le bon fonctionnement du connecteur, ouvrir un '''navigateur web''' et se rendre à l'url https://xmpp.geocoucou.im/api. La page suivante devrait s'afficher : | |||
[[Image:EJABBERD_PROXY_API_INDEX.png]] | |||
=== Mise à jour des permissions === | === Mise à jour des permissions === |
Version du 3 août 2024 à 11:48
|
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
- Noms d'hôte de messagerie :
- geocoucou.im : domaine de messagerie principal pour les utilisateurs authentifiés.
- public.geocoucou.im : domaine de messagerie pour les utilisateurs disposants d'un compte temporaire (comptes invités / anonymes).
- Services associés :
- upload.geocoucou.im : serveur d'hébergement des pièces jointes.
- conference.geocoucou.im : domaine de messagerie des salons de discussion.
- Adresses IP du serveur Ejabberd :
- IPv4 : 152.228.135.223
- IPv6 : 2001:41d0:404:200::5eee
- Adresse IP du serveur proxy web Apache2 :
- Nom du serveur : web.cachelou.net
- IPv4 : 51.38.231.60
- IPv6 : 2001:41d0:305:2100::9789
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 de la zone DNS geocoucou.im
Synthèse
|
Le nom de domaine geocoucou.im sera spécialement dédié à l'usage de la messagerie instantanée Ejabberd. |
- Voici la liste des enregistrements DNS qui seront déclarées dans la zone nécessaire au bon fonctionnement du protocole XMPP :
Sous-domaine | Type | Priorité | Poids | Port | Cible | Rôle |
---|---|---|---|---|---|---|
@ | A | — | — | — | 152.228.135.223 | Pointage du serveur XMPP pour le nom de domaine geocoucou.im |
@ | AAAA | — | — | — | 2001:41d0:404:200::5eee | Pointage du serveur XMPP pour le nom de domaine geocoucou.im |
xmpp | A | — | — | — | 152.228.135.223 | |
xmpp | AAAA | — | — | — | 2001:41d0:404:200::5eee | |
_xmpp-client | SRV | 0 | 0 | 5222 | xmpp.geocoucou.im | Enregistrement pour la découverte automatique des paramètres XMPP pour les clients. |
_xmpp-server | SRV | 0 | 0 | 5269 | xmpp.geocoucou.im | Enregistrement pour la découverte automatique des paramètres XMPP pour les serveur. |
conference | CNAME | — | — | — | xmpp.geocoucou.im | Domaine XMPP réservé pour l'hébergement des salons de discussion. |
public | CNAME | — | — | — | xmpp.geocoucou.im | Domaine XMPP réservé pour les comptes anonymes. |
webchat | CNAME | — | — | — | web.cachelou.net | sous-domaine pointant vers le site hébergeant le webchat Converse.js. |
upload | CNAME | — | — | — | web.cachelou.net | Spécifique pour la fonction File HTTP Upload (mod_http_upload). Configuration en reverse proxy. |
wss | CNAME | — | — | — | web.cachelou.net | Spécifique pour les échanges nécessitant une connexion websocket. Configuration en reverse proxy. |
Configuration DNS de base
- 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 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 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
- Vérifions le pointage du champs DNS de type A pour le sous-domaine xmpp.geocoucou.im. Ce dernier doit pointer sur l'adresse IPv4 152.228.135.223 :
|
|
; <<>> DiG 9.16.50-Debian <<>> a xmpp.geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51841
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;xmpp.geocoucou.im. IN A
;; ANSWER SECTION:
xmpp.geocoucou.im. 3600 IN A 152.228.135.223
;; Query time: 56 msec
;; SERVER: 213.186.33.99#53(213.186.33.99)
;; WHEN: Sun Jul 28 18:19:08 UTC 2024
;; MSG SIZE rcvd: 62
- Vérifions le pointage du champs DNS de type AAAA pour le sous-domaine xmpp.geocoucou.im. Ce dernier doit pointer sur l'adresse IPv6 2001:41d0:404:200::5eee :
|
|
; <<>> DiG 9.16.50-Debian <<>> aaaa xmpp.geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13822
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;xmpp.geocoucou.im. IN AAAA
;; ANSWER SECTION:
xmpp.geocoucou.im. 3600 IN AAAA 2001:41d0:404:200::5eee
;; Query time: 76 msec
;; SERVER: 213.186.33.99#53(213.186.33.99)
;; WHEN: Sun Jul 28 18:19:52 UTC 2024
;; MSG SIZE rcvd: 74
- Vérifions le pointage du champs DNS de type SRV pour le sous-domaine _xmpp-client.geocoucou.im. Ce dernier doit pointer sur le sous-domaine xmpp.geocoucou.im :
|
|
; <<>> DiG 9.16.50-Debian <<>> srv _xmpp-client.geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43567
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;_xmpp-client.geocoucou.im. IN SRV
;; ANSWER SECTION:
_xmpp-client.geocoucou.im. 3600 IN SRV 0 0 5222 xmpp.geocoucou.im.
;; Query time: 52 msec
;; SERVER: 213.186.33.99#53(213.186.33.99)
;; WHEN: Sun Jul 28 18:22:38 UTC 2024
;; MSG SIZE rcvd: 91
- Vérifions le pointage du champs DNS de type SRV pour le sous-domaine _xmpp-server.geocoucou.im. Ce dernier doit pointer sur le sous-domaine xmpp.geocoucou.im :
|
|
; <<>> DiG 9.16.50-Debian <<>> srv _xmpp-server.geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14041
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;_xmpp-server.geocoucou.im. IN SRV
;; ANSWER SECTION:
_xmpp-server.geocoucou.im. 3600 IN SRV 0 0 5269 xmpp.geocoucou.im.
;; Query time: 68 msec
;; SERVER: 213.186.33.99#53(213.186.33.99)
;; WHEN: Sun Jul 28 18:24:40 UTC 2024
;; MSG SIZE rcvd: 91
- Vérifions le pointage du champs DNS de type CNAME pour le sous-domaine conference.geocoucou.im. Ce dernier doit pointer sur le sous-domaine xmpp.geocoucou.im :
|
|
; <<>> DiG 9.16.50-Debian <<>> cname conference.geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64401
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;conference.geocoucou.im. IN CNAME
;; ANSWER SECTION:
conference.geocoucou.im. 3600 IN CNAME xmpp.geocoucou.im.
;; Query time: 84 msec
;; SERVER: 213.186.33.99#53(213.186.33.99)
;; WHEN: Sun Jul 28 18:15:53 UTC 2024
;; MSG SIZE rcvd: 71
Pointage DNS pour le module MUC
|
Ce sous-domaine héberge les services de salons de discussion abrégé ici par MUC (Multi-User Chat). |
- Vérifions le pointage du champs DNS de type CNAME pour le sous-domaine conference.geocoucou.im. Ce dernier doit pointer sur le sous-domaine xmpp.cachelou.net :
|
|
; <<>> DiG 9.16.50-Debian <<>> conference.geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62519
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;conference.geocoucou.im. IN A
;; ANSWER SECTION:
conference.geocoucou.im. 3600 IN CNAME xmpp.geocoucou.im.
;; Query time: 64 msec
;; SERVER: 213.186.33.99#53(213.186.33.99)
;; WHEN: Sat Aug 03 10:07:01 UTC 2024
;; MSG SIZE rcvd: 87
Pointage DNS pour le module HTTP_FILE_UPLOAD
|
Ce sous-domaine pointe vers le serveur de fichiers qui stockera les pièces jointes échangées par les utilisateurs du chat. |
- Vérifions le pointage du champs DNS de type CNAME pour le sous-domaine upload.geocoucou.im. Ce dernier doit pointer sur le sous-domaine web.cachelou.net :
|
|
; <<>> DiG 9.16.50-Debian <<>> cname upload.geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3099
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;upload.geocoucou.im. IN CNAME
;; ANSWER SECTION:
upload.geocoucou.im. 3600 IN CNAME web.cachelou.net.
;; Query time: 64 msec
;; SERVER: 213.186.33.99#53(213.186.33.99)
;; WHEN: Tue Jul 30 20:04:53 UTC 2024
;; MSG SIZE rcvd: 78
Pointage DNS pour la fonction WEBSOCKET
- Vérifions le pointage du champs DNS de type CNAME pour le sous-domaine wss.geocoucou.im. Ce dernier doit pointer sur le sous-domaine web.cachelou.net :
|
|
; <<>> DiG 9.16.50-Debian <<>> wss.geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48465
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;wss.geocoucou.im. IN A
;; ANSWER SECTION:
wss.geocoucou.im. 3600 IN CNAME web.cachelou.net.
;; Query time: 28 msec ;; SERVER: 213.186.33.99#53(213.186.33.99) ;; WHEN: Sat Aug 03 09:20:02 UTC 2024 ;; MSG SIZE rcvd: 122
Pointage DNS pour le client webchat
- Vérifions le pointage du champs DNS de type CNAME pour le sous-domaine webchat.geocoucou.im. Ce dernier doit pointer sur le sous-domaine web.cachelou.net :
|
|
; <<>> DiG 9.16.50-Debian <<>> cname webchat.geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63589
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;webchat.geocoucou.im. IN CNAME
;; ANSWER SECTION:
webchat.geocoucou.im. 3600 IN CNAME web.cachelou.net.
;; Query time: 68 msec
;; SERVER: 213.186.33.99#53(213.186.33.99)
;; WHEN: Sun Jul 28 18:36:45 UTC 2024
;; MSG SIZE rcvd: 79
Pointage DNS pour le portail ChatMail (spécifique Géocoucou)
- Vérifions le pointage du champs DNS de type CNAME pour le sous-domaine chatmail.geocoucou.im. Ce dernier doit pointer sur le sous-domaine web.cachelou.net :
|
|
; <<>> DiG 9.16.50-Debian <<>> chatmail.geocoucou.im
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57535
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;chatmail.geocoucou.im. IN A
;; ANSWER SECTION:
chatmail.geocoucou.im. 3600 IN CNAME web.cachelou.net.
;; Query time: 4 msec
;; SERVER: 213.186.33.99#53(213.186.33.99)
;; WHEN: Sat Aug 03 09:24:18 UTC 2024
;; MSG SIZE rcvd: 127
Installation
Serveur Ejabberd
- Installation du paquet ejabberd :
|
|
- Installation du paquet erlang-p1-mysql pour l'exploitation d'une base de données SQL (MySQL, MariaDB) :
|
|
- Pour vérifier si le service fonctionne normalement :
|
|
- Création d'un premier compte utilisateur sur le serveur :
|
|
Base de données SQL
- Prérequis :
- Vous devez disposer d'un serveur de base de données opérationnel. Pour de plus amples informations, reportez-vous à l'article Installer MariaDB.
- Vous devez disposer d'une base de données avec ses identifiants de connexion. Pour de plus amples informations, reportez-vous à l'article Commandes MySQL.
|
Les scripts d'installation de la base de données se trouvent à la racine /usr/share/ejabberd/sql. |
- Procéder à l'importation de la structure des tables - à l'aide de la commande mysqldump - dans la base de données nommée ejabberd :
|
|
- Editer le fichier de configuration /etc/ejabberd/ejabberd.yml puis après la ligne :
auth_password_format: scram
- Ajouter et adapter les lignes suivantes :
auth_method: sql default_db: sql sql_type: mysql sql_server: "localhost" sql_database: "ejabberd" sql_username: "ejabberd" sql_password: "password"
- Redémarrer le serveur Ejabberd pour la prise en compte des nouveaux paramètres :
service ejabberd restart
Configuration
Définition du domaine de messagerie
- Editer le fichier ejabberd.yml puis rechercher la ligne :
hosts:
- localhost
- Remplacer par :
hosts
- geocoucou.im
- Redémarrer le serveur Ejabberd pour la prise en compte des nouveaux paramètres :
service ejabberd restart
Paramètre du compte administrateur
- Editer le fichier ejabberd.yml puis rechercher la ligne :
acl:
admin:
user:
- ""
- Remplacer par :
acl:
admin:
user:
- "coyotte@geocoucou.im"
- Redémarrer le serveur Ejabberd pour la prise en compte des nouveaux paramètres :
service ejabberd restart
|
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. |
Activation des protocoles de découverte TURN/STUN
- Editer le fichier ejabberd.yml puis rechercher la ligne :
- port: 3478 ip: "::" transport: udp module: ejabberd_stun use_turn: true ## The server's public IPv4 address: # turn_ipv4_address: "203.0.113.3" ## The server's public IPv6 address: # turn_ipv6_address: "2001:db8::3"
- Décommenter les lignes ci-dessous et adapter le contenu (éléments en rouge) :
- port: 3478 ip: "::" transport: udp module: ejabberd_stun use_turn: true ## The server's public IPv4 address: turn_ipv4_address: "152.228.135.223" ## The server's public IPv6 address: turn_ipv6_address: "2001:41d0:404:200::5eee"
- Redémarrer le serveur Ejabberd pour la prise en compte des nouveaux paramètres :
service ejabberd restart
- Lorsque la fonction est correctement initialisée, dans les journaux d'activités de Ejabberd /var/log/ejabberd/ejabberd.log nous observons les lignes suivantes :
2024-07-31 11:37:34.735470+00:00 [info] <0.478.0>@mod_stun_disco:parse_listener/1:615 Going to offer STUN/TURN service: 152.228.135.223:3478 (udp) 2024-07-31 11:37:34.735598+00:00 [info] <0.478.0>@mod_stun_disco:parse_listener/1:615 Going to offer STUN/TURN service: [2001:41d0:404:200::5eee]:3478 (udp)
Configuration de l'adresse de contact de l'administrateur
|
L'adresse de contact est une information qui sera fournit aux utilisateurs pour pouvoir contacter les administrateurs du service par courriel. |
- Editer le fichier de configuration /etc/ejabberd/ejabberd.yml puis remplacer :
mod_disco {}
- Par les informations suivantes (adapter les éléments en rouge):
mod_disco: server_info: - modules: all name: "abuse-addresses" urls: ["mailto:abuse@geocoucou.eu"]
- Redémarrer le serveur Ejabberd pour la prise en compte des nouveaux paramètres :
service ejabberd restart
Configuration des options par défaut pour les salons de discussion
- Editer le fichier de configuration /etc/ejabberd/ejabberd.yml puis après le bloc :
default_room_options: mam: true
- Ajouter les éléments suivants :
allow_change_subj: true allow_private_messages: true allow_private_messages_from_visitors: anyone allow_visitor_nickchange: true anonymous: false presence_broadcast: [moderator,participant,visitor] public: true
- Redémarrer le serveur Ejabberd pour la prise en compte des nouveaux paramètres :
service ejabberd restart
Installation du certificat SSL
|
Pour illustrer cette installation, nous utiliserons un certificat SSL gratuit fournit par Let's Encrypt à l'aide du programme Certbot. |
- Installation de Certbot et de ses dépendances :
|
|
- 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
Sécu
- Editer le fichier de configuration /etc/ejabberd/ejabberd.yml puis après :
loopback: ip: - 127.0.0.0/8 - ::1/128
- Ajouter :
net_ncad: ip: - 109.190.9.125/32
Paramètre du mode moc_http_upload
|
Ce mode permet d'héberger des fichiers sur le serveur de messagerie instantané. Cette fonction est utilisée pour partager des pièces jointes sur le chat. |
Configuration du connecteur Ejabberd
Tout d'abord, il faut autoriser les requêtes HTTP_UPLOAD depuis le connecteur Ejabberd.
- Editer le fichier de configuration /etc/ejabberd/ejabberd.yml puis rechercher le bloc suivant :
- port: 5443 ip: "::" module: ejabberd_http tls: true protocol_options: 'TLS_OPTIONS' request_handlers: /api: mod_http_api ##/bosh: mod_bosh ##/upload: mod_http_upload /ws: ejabberd_http_ws
- Puis, décommenter la ligne suivante :
- port: 5443 ip: "::" module: ejabberd_http tls: true protocol_options: 'TLS_OPTIONS' request_handlers: /api: mod_http_api ##/bosh: mod_bosh /upload: mod_http_upload /ws: ejabberd_http_ws
- Redémarrer le serveur Ejabberd pour la prise en compte des nouveaux paramètres :
service ejabberd restart
Paramétrage du module
- Editer le fichier de configuration /etc/ejabberd/ejabberd.yml puis après la ligne :
modules:
- Ajouter les éléments suivants (adapter les éléments en rouge) :
mod_http_upload: access: local thumbnail: false docroot: "/var/lib/ejabberd/upload" put_url: "https://upload.@HOST@/upload" custom_headers: "Access-Control-Allow-Origin": "*" "Access-Control-Allow-Methods": "GET,HEAD,PUT,OPTIONS" "Access-Control-Allow-Headers": "Content-Type"
- Créer le répertoire qui contiendra les fichiers téléchargés sur le serveur et octroyer les autorisations adéquates :
|
|
- Redémarrer le serveur Ejabberd pour la prise en compte des nouveaux paramètres :
service ejabberd restart
Paramétrage du reverse proxy
- Dans notre cas, le sous domaine upload.geocoucou.im pointe sur un serveur web Apache2 externe. Nous allons créer un nouveau vhost pour cet hôte.
- À la racine /etc/apache2/sites-available/, créer le fichier upload.geocoucou.im.conf et y renseigner la configuration du reverse proxy suivante (adapter les éléments en rouge) :
ProxyRequests Off RewriteEngine on SSLProxyEngine on SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off SSLProxyCheckPeerExpire off <VirtualHost *:80> ServerName upload.geocoucou.im ErrorLog ${APACHE_LOG_DIR}/rev-upload.geocoucou.im_error.log CustomLog ${APACHE_LOG_DIR}/rev-upload.geocoucou.im_access.log combined ProxyPreserveHost On ProxyVia Full RequestHeader edit Transfer-Encoding Chunked chunked early RequestHeader unset Accept-Encoding CheckSpelling On TimeOut 1800 ProxyPass / https://xmpp.geocoucou.im:5443/ ProxyPassReverse / https://xmpp.geocoucou.im:5443/ </VirtualHost>
- Pour appliquer la nouvelle configuration, activer le nouveau vhost puis redémarrer le serveur Apache2 :
|
|
- Ensuite, nous utilisons le programme Certbot pour l'installation du certificat SSL.
- Pour valider le bon fonctionnement du vhost, ouvrir un navigateur web et se rendre à l'url https://upload.geocoucou.im/upload. Le serveur retournera le message not found.
Paramètres de l'API
une API permet à une application tierce de pouvoir exécuter des commandes sur le serveur Ejabberd. La liste des commandes disponibles est consultable depuis la documentation en ligne en distinguant les commandes liées à l'administration du service et les commandes liées à l'administration des salons de discussion.
Pour illustrer cette section, nous disposons donc :
- D'un serveur de messagerie instantané Ejabberd.
- D'un serveur web fonctionnant sur Apache2 et qui jouera les rôles de :
- Serveur web pour l'hébergement de notre application.
- Serveur web proxy pour gérer les flux entre notre application et notre serveur Ejabbers.
À cet effet, pour mener à bien cette architecture il faudra :
- Activer la fonction API sur le connecteur Ejabberd en déclarant le module mod_http_api.
- Autoriser notre application web à pouvoir requêter le serveur Ejabberd via le module mod_http_api.
- Configurer le vhost Apache2 pour l'hébergement de l'application web.
- Configurer le vhost proxy Apache2 pour capter les échanges entre l'application et le serveur Ejabberd.
Activation du module mod_http_api
- Pour activer le module mod_http_api sur le port d'écoute 5443 du serveur Ejabberd, éditer le fichier de configuration /etc/ejabberd/ejabberd.yml puis adapter les éléments en rouge :
-
port: 5443
ip: "::"
module: ejabberd_http
tls: true
protocol_options: 'TLS_OPTIONS'
request_handlers:
/api: mod_http_api
/bosh: mod_bosh
## /captcha: ejabberd_captcha
/upload: mod_http_upload
/ws: ejabberd_http_ws
- Redémarrer le serveur Ejabberd pour la prise en compte des nouveaux paramètres :
service ejabberd restart
- Pour valider le bon fonctionnement du connecteur, ouvrir un navigateur web et se rendre à l'url https://xmpp.geocoucou.im/api. La page suivante devrait s'afficher :
Mise à jour des permissions
- Pour autoriser l'application à exécuter n'importe quel commande sur le serveur Ejabber, éditer le fichier de configuration /etc/ejabberd/ejabberd.yml puis remplacer :
"public commands":
who:
ip:
- 127.0.0.1/8
what:
- status
- connected_users_number
- Par les éléments suivants :
"public commands": who: ip: - 127.0.0.1/8 - 51.38.231.60/32 - 2001:41d0:305:2100:9789/56 what: "*"
- Redémarrer le serveur Ejabberd pour la prise en compte des nouveaux paramètres :
service ejabberd restart
Installation du client XMPP-WEB
Présentation
XMPP-WEB est client web léger de messagerie instantané intégrant les fonctionnalités de base du protocole XMPP. La dernière version peut être récupérée depuis le dépôt GitHub à l'adresse : https://github.com/nioc/xmpp-web.
Paramétrage du reverse proxy
|
Le client XMPP-WEB utilise une connexion websocket pour communiquer avec le serveur Ejabberd. |
- Dans notre cas, le sous domaine wss.geocoucou.im pointe sur un serveur web Apache2 externe. Nous allons créer un nouveau vhost pour cet hôte.
- À la racine /etc/apache2/sites-available/, créer le fichier wss.geocoucou.im.conf et y renseigner la configuration du reverse proxy suivante (adapter les éléments en rouge) :
ProxyRequests Off RewriteEngine on SSLProxyEngine on SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off SSLProxyCheckPeerExpire off <VirtualHost *:80> ServerName wss.geocoucou.im ErrorLog ${APACHE_LOG_DIR}/rev-wss.geocoucou.im_error.log CustomLog ${APACHE_LOG_DIR}/rev-wss.geocoucou.im_access.log combined ProxyPreserveHost On ProxyVia Full RequestHeader edit Transfer-Encoding Chunked chunked early RequestHeader unset Accept-Encoding CheckSpelling On TimeOut 1800 ProxyPass / wss://xmpp.geocoucou.im:5443/ ProxyPassReverse / wss://xmpp.geocoucou.im:5443/ </VirtualHost>
- Pour appliquer la nouvelle configuration, activer le nouveau vhost puis redémarrer le serveur Apache2 :
|
|
- Ensuite, nous utilisons le programme Certbot pour l'installation du certificat SSL.
- Pour valider le bon fonctionnement du vhost, ouvrir un navigateur web et se rendre à l'url https://wss.geocoucou.im/ws. La page suivante devrait s'afficher :
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.
Source | Protocole(s) | Port(s) | Description |
---|---|---|---|
* | tcp | 22 | Accès SSH, SFTP. |
* | udp | 3478 | Protocole STUN/TURN pour Ejabberd. |
* | tcp | 5280 | Accès interface d'administration Ejabberd. |
* | tcp | 5222 | Connexion des clients XMPP au serveur Ejabberd. |
* | tcp | 5223 | Connexion des clients XMPP au serveur Ejabberd avec TLS. |
* | tcp | 5225 | Connexion des clients XMPP au serveur Ejabberd avec TLS derrière un reverse proxy. |
* | tcp | 5269 | Echanges entre serveurs XMPP. |
proxy.cachelou.net | tcp | 5443 | Flux spécifiques pour les requêtes API, BOSH et HTTP_UPLOAD. |
<@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).
|
|
- Ajout des règles iptables pour autoriser les flux SSH, ICMP et MySQL :
|
|
- Sauvegarde de la configuration et application automatique à chaque redémarrage du système.
|
|