Exploring the roots and future of Internet Relay Chat

Configurer InspIRCd depuis zero

Ma premiere installation d'InspIRCd date de 2008. Je venais d'UnrealIRCd et la configuration XML m'a fait grimacer. Puis j'ai compris le principe : dans InspIRCd, chaque fonctionnalite est un module que vous chargez ou non. Pas de fonctionnalite cachee, pas de comportement implicite. Vous savez exactement ce que fait votre serveur parce que vous avez explicitement charge chaque piece. Pour un administrateur qui veut du controle, c'est exactement ce qu'il faut.

Pourquoi InspIRCd

InspIRCd se distingue d'UnrealIRCd par sa philosophie modulaire. Dans UnrealIRCd, les fonctionnalites sont compilees dans le binaire et activees par configuration. Dans InspIRCd, meme les fonctions de base — modes de canal, cloaking, TLS — sont des modules qu'on charge explicitement. Le binaire nu est minimal.

Les avantages concrets : surface d'attaque reduite (vous ne chargez que ce dont vous avez besoin), consommation memoire optimisee, et possibilite de charger/decharger des modules en production sans redemarrer. Si un module a un bug, vous le dechargez, les utilisateurs continuent de chatter, et vous le rechargez une fois corrige.

L'inconvenient : la courbe d'apprentissage. Configurer InspIRCd demande plus de travail initial. Vous devez comprendre quels modules charger et comment les configurer. Pour quelqu'un qui installe son premier serveur IRC, UnrealIRCd est plus accessible. InspIRCd est pour ceux qui savent ce qu'ils veulent.

Installation sur Debian

# Dependances :
sudo apt install build-essential pkg-config libssl-dev \
  libgnutls28-dev libpcre2-dev cmake git

# Utilisateur dedie :
sudo useradd -m -s /bin/bash ircd
sudo su - ircd

# Cloner et compiler InspIRCd 4 :
git clone https://github.com/inspircd/inspircd.git
cd inspircd
git checkout insp4

mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/home/ircd/inspircd-install
make -j$(nproc)
make install

# Copier la configuration d'exemple :
cd /home/ircd/inspircd-install/conf
cp examples/inspircd.conf.example inspircd.conf

InspIRCd 4 utilise cmake au lieu du systeme de build proprietaire des versions precedentes. C'est plus standard et moins surprenant. Si vous venez d'InspIRCd 3, attendez-vous a des changements dans la structure des fichiers.

Configuration de base en XML

La configuration d'InspIRCd est en XML. C'est verbeux mais structure : chaque tag correspond a une fonctionnalite precise.




























Chaque module que vous chargez ajoute ses propres tags de configuration. La documentation de chaque module indique exactement quels tags il attend. C'est plus explicite qu'UnrealIRCd ou les options sont regroupees dans de grands blocs set{}.

Conseil : Commencez avec le minimum de modules (TLS, CAP, SASL, cloaking) et ajoutez-en au fur et a mesure que vous en avez besoin. Charger tous les modules disponibles est inutile et augmente la surface d'attaque.

Le systeme de modules

Les modules se chargent avec le tag <module> dans la configuration, ou a chaud avec des commandes :

# Charger/decharger a chaud (en tant qu'oper) :
/LOADMODULE cloaking
/UNLOADMODULE dnsbl
/RELOADMODULE sasl

# Modules par categorie :

# Securite :
    
      
 
         

# IRCv3 :
           
          
         
   
 

# Moderation :
   
       
  

# Linking :
  

La possibilite de recharger un module a chaud est ce qui rend InspIRCd particulierement adapte aux reseaux en production. Vous corrigez un probleme de configuration dans un module, vous le rechargez, et personne ne se deconnecte. Essayez de faire ca avec UnrealIRCd — un rehash complet est necessaire.

TLS et SASL













GnuTLS est le backend TLS recommande pour InspIRCd. L'integration est mature et la configuration de priorite GnuTLS est plus lisible que la liste de ciphers d'OpenSSL. Si vous avez une raison specifique d'utiliser OpenSSL (compatibilite, reglementation), le module ssl_openssl existe aussi.

Operateurs







Attention : Le champ host dans la definition de l'oper est un masque d'IP. Si vous le laissez a *@*, quiconque connait le mot de passe peut faire /OPER depuis n'importe quelle IP. Restreignez toujours a votre IP ou votre plage connue.

Linking de serveurs












Utilisez toujours TLS pour les liens inter-serveurs. Le trafic server-to-server inclut les mots de passe utilisateurs, les messages prives, et les commandes d'operateurs. Sans chiffrement, un intermediaire peut tout intercepter.

Questions frequentes

InspIRCd ou UnrealIRCd pour un debutant ?

UnrealIRCd. La configuration par defaut est plus complète et le serveur fonctionne avec moins de reglages initiaux. InspIRCd demande de comprendre le systeme de modules avant de pouvoir l'utiliser efficacement.

Peut-on mixer InspIRCd et UnrealIRCd dans le meme reseau ?

Non. Les protocoles server-to-server sont incompatibles. Tous les serveurs d'un reseau doivent utiliser le meme IRCd, ou au minimum des IRCds avec des protocoles S2S compatibles (ce qui est rare).

Combien de memoire utilise InspIRCd ?

Avec une configuration minimale (peu de modules) : 10-20 Mo. Avec tous les modules et 1 000 utilisateurs : 50-100 Mo. InspIRCd est tres econome en memoire grace a son architecture modulaire.