Un IRCd (abréviation de Internet Relay Chat daemon) est une application implémentant le protocole IRC que l'on lance sur un serveur, faisant de ce serveur un serveur IRC. Il permet à différentes personnes de communiquer entre elles à travers l'Internet en échangeant des messages textuels en temps réel.. Ne pas confondre avec un Robot IRC qui est un programme se connectant à un serveur IRC comme n'importe quel client.

Le serveur écoute les connexions émanant de clients IRC sur un ensemble de ports TCP. Lorsque le serveur est membre d'un réseau IRC, il garde également une ou plusieurs connexions avec les autres serveurs/daemons.

Le terme ircd se rapportait initialement à une seule partie du logiciel., mais il a fini par devenir un terme générique pour une implémentation quelconque d'un daemon IRC.

Implémentations notoires Ces serveurs sont très majoritairement installés sur des machines utilisant Linux. L'installation d'un tel dispositif est simple et rapide. La configuration nécessite en revanche davantage de temps. De nombreux sites web proposent des tutoriels pour l'installation d'un IRCD.

Les IRCD les plus utilisés sont :

Bahamut développé par le réseau de discussion DALnet IRCu développé par le réseau de discussion Undernet IRCoderZ développé par les Coderz pour le réseau de discussion IRCube SnIRCd, développé et utilisé par QuakeNet. UnrealIRCd IRCD fonctionnant sous Windows et Unix Hybrid (IRCd), pour héberger son propre serveur de discussions, librement. ConferenceRoom qui ne respecte pas totalement les RFC et qui n'est pas gratuit InspIRCd - Un IRCD modulaire écrit en C++, qui respecte — sans module — la RFC1459.

Un grand nombre d'IRCD sont des versions modifiées des principaux IRCD (notamment des IRCu et des Bahamut).

Une grande partie de ces serveurs sont gratuits et Open Source (source libre), ce qui explique le grand nombre de versions existantes.

Par ailleurs, les serveurs IRC sont souvent accompagnés de services (Nickserv, Chanserv...) qui rajoutent des fonctionnalités tel que la réservation de pseudonymes et de canaux.

Configuration

O-line Une O-line (Operators Line) est un bloc de données du fichier de configuration du Serveur IRC (ircd.conf, unrealircd.conf ... dépendant de l'IRCd). Elle sert à indiquer au système qui sont les opérateurs du réseau, c'est-à-dire ceux qui peuvent en prendre le contrôle à un niveau global sur le(s) serveur(s). Les O-lines sont généralement créées par l'administrateur du serveur/réseau ou par un administrateur ayant directement accès aux fichiers de configuration du serveur IRC. L'attribution d'une O-line à un utilisateur signifiant le fait de lui accorder un certain nombre de pouvoirs sur le système, il est nécessaire de s'assurer que la personne est absolument digne de confiance, et aussi, apte à gérer des actions à un niveau au-delà de la gestion individuelle des canaux.

Exemple d'O-line Le type de configuration varie d'un type d'IRCd à l'autre.

L'exemple suivant montre un bloc de configuration d'une O-line sous UnrealIRCd. Il rassemble toutes les informations et autorisations d'accès d'un IrcOp donné, et peut contenir autant le bloc opérateurs que nécessaire. Le bloc commence toujours par la ligne "Oper <nomdel'opérateur>" suivi d'une accolade ouverte, et se termine toujours par une accolade fermée et un point virgule. De manière générale, le point virgule indique la fin d'un bloc ou d'une ligne de configuration. Il se présente ainsi : oper UserName { class clients; from { userhost *@InternetServiceProvider.com;

password "motdepasse"; flags { netadmin; global; get_umodew; get_host; can_gkline; can_gzline; can_zline; can_restart; can_die; can_override;

maxlogins 1;

Si l'on détaille le contenu du bloc, on remarque différents éléments :

UserName : Le pseudonyme de l'utilisateur opérateur. Il est sensible à la casse : UserName est différent de Username. Il suffit donc de remplacer ce nom par celui de l'utilisateur à déclarer comme opérateur. class clients : Indique simplement que le bloc fait référence à un utilisateur connecté au réseau. Le sous-bloc from est indispensable. Il permet de renforcer la sécurité en limitant l'oper-up d'un utilisateur à partir d'un hostmask donné. Si le paramètre userhost est défini sur *@*, l'utilisateur pourra effectuer un Oper-up avec la commande /OPER depuis n'importe quel ordinateur sur n'importe quelle connexion. En revanche, si l'on spécifie un hostmask, par exemple : *@internet-dialup100.com, l'utilisateur ne pourra devenir IrcOp que depuis la connexion internet qui renvoie cet hostmask au serveur. Cette mesure vise à empêcher des détournements de privilèges opérateur par des utilisateurs malveillants. password : C'est simplement le mot de passe Opérateur (qui peut être différent de celui enregistré pour protéger le pseudonyme dans NickServ. Il est sensible à la casse. Dans le fichier de configuration, il doit être spécifié entre guillemets. Le sous-bloc flags : Il contient les Oper Flags, c'est-à-dire les autorisations d'accès de l'opérateur. Ces derniers sont détaillés dans la documentation d'UnrealIRCd. Ils varient en fonction des autorisations que l'administrateur principal a donné à l'opérateur. maxlogins : Il s'agit d'un paramètre optionnel visant à limiter le nombre d'oper-ups pour un opérateur donné. Cela permet d'éviter que quelqu'un prenne les privilèges opérateur alors que l'IrcOp est déjà connecté.

Il existe d'autres paramètres optionnels pour le Bloc opérateur, comme l'attribution de modes utilisateurs après un oper-up...

O-line temporaire Les IrcOps ayant des accès de niveau Administrateur des Services (Services Admins ou SA) peuvent définir des O-lines par le biais d'OperServ. Comparé à celles définies dans le fichier de configuration du serveur, ces O-lines peuvent être considérées comme temporaires car il est très facile de les mettre en place et de les retirer. De plus, elle ne nécessite aucune relecture de la configuration pour être actives, et l'utilisateur qui en bénéficie peut effectuer un Oper-up en utilisant son pseudo (enregistré avec NickServ) et son mot de passe d'identification NickServ. Mais contrairement à la configuration centrale, il n'est pas possible d'utiliser les Oper-flags du type "can_kline" ou "global", mais il fait utiliser les flags dit "à l'ancienne", tels que +oaAWst ... (ces modes sont indiqués avec leurs correspondances en nouveaux Oper-flags dans la documentation d'UnrealIRCd). Par exemple, pour définir une O-line temporaire sur un utilisateur, l'administrateur entrera la commande suivante et y mettra les flags appropriés :

/MSG OperServ OLINE <pseudonyme> <flags>

Exemple : /MSG OperServ OLINE Nickoperateur +owghasW

Dans cet exemple, on a ajouté (+) les flags suivants : un opérateur (o), qui peut voir les messages de service envoyés aux IrcOps (w) et ceux envoyés à toute personne sur le réseau (g). Il a aussi accès à l'aide spéciale des Opérateurs par le biais de la commande /helpop (h), c'est aussi un administrateur des services (a) qui voit les notices serveur (s) et qui reçoit une notice quand un autre utilisateur fait un /WHOIS sur lui (W). Les flags sont sensibles à la casse. Ils donnent différents privilèges : a est différent de A (qui signifie Administrateur du Serveur).

Il est très facile de supprimer la O-line temporaire. Pour cela, il suffit d'entrer la même commande que précédemment, mais en faisant simplement suivre le pseudonyme du symbole moins (-).

Exemple : /MSG OperServ OLINE Nickoperateur -

L'utilisateur perd sa O-line et ses droits temporaires d'opérateur.

D-line Un (ou ), de , est un terme du jargon de l'IRC. À l'instar du K-line, un D-line va empêcher un utilisateur d'utiliser un certain serveur d'un réseau IRC. La particularité du D-line est que l'utilisateur affecté ne pourra même pas se connecter au serveur (celui-ci supprimera aussitôt la connexion avec l'adresse IP bannie), alors que le K-line déconnectera () l'utilisateur une fois sa connexion au serveur terminée (éventuellement après l'affichage du MOTD avec une notice indiquant le motif du bannissement). Un D-line sert généralement à bloquer les connexion d'attaquants persistants.

K-line Un K-line (ou K:line), de , est un terme du jargon des réseaux IRC. Un utilisateur étant affecté par un K-line se voit interdire l'accès à un certain serveur du réseau, et ce de manière temporaire ou permanente.

Généralement, un K-line ne s'applique que sur un serveur à la fois : l'utilisateur banni peut donc se connecter au réseau IRC en passant par un autre serveur. Toutefois, il y a un grand nombre d'autres « » (G-line, Z-line, etc.) qui sont proches du K-line. Par exemple, un G-line agit de la même manière que le K-line, mais celui s'applique sur l'ensemble des serveurs d'un réseau IRC.

Les IRC modernes peuvent aussi autoriser les IrcOps à mettre en place des K-lines sans avoir besoin de modifier les fichiers de configuration du daemon (chose normalement réservée aux administrateurs). Certains services IRC peuvent aussi aider à gérer ces lines, comme OperServ par exemple.

Modes Les modes sont des moyens de protéger les canaux et les utilisateurs, d'attribuer des privilèges, d'activer des options... Les modes ont plusieurs niveaux allant de la gestion du serveur, en passant par celle des canaux et aussi des utilisateurs.

Seul un utilisateur ayant des privilèges sur un canal ou sur un serveur peut modifier les modes de ce dernier et des autres utilisateurs (en fonction de son niveau d'accès, IrcOp, Services Admin, Opérateur de canal, Half-Op...). L'utilisation de la commande /mode dépend entièrement du client IRC choisi par l'utilisateur, sa syntaxe est la suivante : /mode <cible> <mode> [paramètres] La cible peut être un canal irc, par exemple #plop, ou le pseudo d'un utilisateur (son nick). Le mode est sous la forme d'une lettre majuscule ou minuscule précédée d'un + ou d'un - selon qu'on veuille définir ou retirer le mode. Certains modes requièrent des paramètres, notamment ceux qui servent à gérer les droits des utilisateurs.

Par exemple, pour ne permettre qu'aux utilisateurs invités d'entrer sur le canal #plop, un opérateur va procéder comme suit : /mode #plop +i Sur ce même canal, pour retirer les droits d'opérateur à un utilisateur dont le nick est "JeanClaude" : /mode #plop -o JeanClaude Si JeanClaude ne souhaite pas faire apparaître son adresse IP publiquement, il fera : /mode JeanClaude +x

Modes des canaux

i : canal accessible uniquement sur invitation (commande /invite) n : les messages externes ne sont pas autorisés p : canal privé; le nom du canal est invisible s : canal secret; le canal est totalement invisible t : sujet du canal uniquement modifiable par les opérateurs du canal m : canal modéré, seuls les utilisateurs en mode verbose et les opérateurs peuvent envoyer un message c : permet d'empêcher l'utilisation de couleur d'écriture ou de fond d'écriture sur un salon. q : +q nick donne à nick le statut de propriétaire de canal, -q le retire a : +a nick donne à nick le statut de chanadmin sur le canal, -a le retire o : +o nick donne à nick le statut d'opérateur sur le canal, -o nick lui retire v : +v nick met l'utilisateur nick en mode verbose. Ce mode est sans effet sans le mode +m l : l nombre fixe la limite du nombre d'utilisateurs sur le canal à nombre b : +b user bannit l'utilisateur user k : k key - seuls les utilisateurs connaissant la clé key pourront se connecter au canal S : +S - Les couleurs du salons sont filtrées R : +R - Applique l'obligation d'être inscrit pour joindre le canal. (sur certains serveurs)

Les modes o, v, l, b et k prennent un paramètre.

Modes des utilisateurs

w : reçoit tous les messages envoyés par la commande wallop o : signifie que l'utilisateur est un opérateur IRC (à ne pas confondre avec le mode de canal o) i : invisible - en dehors de la participation commune à un canal, l'utilisateur n'est pas visible par les autres