Aller au contenu

Mise en place d'une passerelle IRC vers XMPP

Pour des raisons matérielles ou pratiques, on peut vouloir continuer à utiliser son bon vieux client IRC pour discuter avec d'autres personnes et ne pas avoir envie d'installer un autre logiciel de messagerie. Heureusement, il est tout à fait possible d'aller sur XMPP en utilisant un client IRC, puisqu'il suffit d'utiliser une passerelle IRC vers XMPP pour cela.

Dans mon cas, j'ai choisi d'installer Bitlbee. Il s'agit d'un pseudo-serveur IRC qui va se charger de communiquer avec notre serveur XMPP pour échanger les données entre lui et notre client IRC. Il est disponible par défaut dans les dépôts de Debian 10 et il peut également servir à utiliser d'autres services de tchat, mais ce ne sera pas abordé dans cette documentation.

Installation

Pour installer Bitlbee, il nous suffit de lancer : sudo apt install bitlbee

Configuration de Bitlbee

La configuration de Bitlbee se trouve dans le fichier /etc/bitlbee/bitlbee.conf et ne nécessite pas beaucoup de changements pour fonctionner correctement. Ici, je vais surtout vous indiquer quelles valeurs sont à modifier, sachant qu'elles sont toutes présentes dans le fichier en question sur Debian 10 (cela peut varier en fonction de votre distribution).

L'une des premières options à décommenter et modifier est celle qui sert à définir l'adresse d'écoute du serveur. On autorise donc Bitlbee à écouter sur l'extérieur, sur le port 6667 (celui d'un serveur IRC classique) :

DaemonInterface = 0.0.0.0
DaemonPort = 6667

On autorise ensuite les inscriptions et les connexions de manière libre. N'importe qui pourra donc créer son compte sur l'instance et ajouter son compte XMPP au système :

AuthMode = Open
AuthBackend = storage
AllowAccountAdd 1

En dernière partie, on indique le sous-domaine à associer avec le serveur Bitlbee et les protocoles qui seront autorisés pour tous les utilisateurs. Dans notre cas, on autorise seulement IRC et Jabber (l'autre nom pour XMPP) :

HostName = irc.votredomaine.xyz
Protocols = irc jabber

Une fois notre configuration terminée, il suffit alors de lancer Bitlbee et de l'activer au démarrage de notre machine : sudo systemctl enable bitlbee && sudo systemctl start bitlbee

Les utilisateurs peuvent donc maintenant se connecter à Bitlbee et utiliser XMPP à travers leur client IRC favori.

Chiffrer les communications de Bitlbee

Par défaut, Bitlbee ne chiffre pas les communications entre lui et les clients. Les mots de passe sont donc envoyés en clair et il est possible pour une personne mal-attentionnée de récupérer ces informations en lisant le trafic entre les deux.
Une technique pour sécuriser les échanges est de faire transiter le tout via un relais qui se chargera de rediriger le trafic sur un autre port et de chiffrer le tout si on essaye de contacter le serveur de l'extérieur. Dans notre cas, nous allons utiliser Stunnel qui est disponible dans les dépôts de Debian, mais il est possible d'utiliser un autre logiciel (comme Relayd si vous êtes sous OpenBSD).

Pour installer stunnel, il suffit de lancer la commande suivante : sudo apt install stunnel

Après installation, on crée un fichier de configuration dédié dans le dossier de stunnel, à savoir /etc/stunnel/bitlbee.conf, et on rentre les informations suivantes :

[bitlbee]
accept = 6697
connect = 127.0.0.1:6667
cert = /etc/letsencrypt/live/irc.votredomaine.xyz/fullchain.pem
key = /etc/letsencrypt/live/irc.votredomaine.xyz/privkey.pem

Le port 6697 étant le port par défaut pour un serveur IRC utilisant TLS, j'ai naturellement choisi ce port pour la compatibilité avec les nombreux clients IRC. Pour le certificat, vous pouvez soit utiliser le même que celui de prosody (si le sous-domaine est inclus), soit utiliser un certificat indépendant. La seule chose à prendre en compte est le sous-domaine que vous allez utiliser avec votre instance Bitlbee.

Une fois cela fait, il suffit alors de lancer stunnel automatiquement : sudo systemctl enable stunnel && sudo systemctl start stunnel.
N'oubliez pas non plus d'ouvrir ce port sur votre pare-feu et vous pouvez désormais utiliser votre instance tout en chiffrant les communications externes.