Loading AI tools
serveur implémentant le protocole de communication IRC De Wikipédia, l'encyclopédie libre
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[1],[2]. 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[3] sur un ensemble de ports TCP[4]. Lorsque le serveur est membre d'un réseau IRC, il garde également une ou plusieurs connexions avec les autres serveurs/daemons[5].
Le terme ircd se rapportait initialement à une seule partie du logiciel[6], mais il a fini par devenir un terme générique pour une implémentation quelconque d'un daemon IRC[7],[8].
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 :
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.
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.
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 :
Il existe d'autres paramètres optionnels pour le Bloc opérateur, comme l'attribution de modes utilisateurs après un oper-up...
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.
Un D-line (ou D:line), de deny line, 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 (kill) 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.
Un K-line (ou K:line), de kill line, 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 « lines » (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 daemons 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.
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
/invite
)Les modes o, v, l, b et k prennent un paramètre.
Ce sont les modes les plus courants définis par la RFC, chaque serveur IRC est libre d'ajouter autant de modes qu'il le souhaite.
Les modes d'un canal conférant certains privilèges aux utilisateurs sont les suivants :
La plupart des connexions aux réseaux IRC sont souvent en clair, non chiffrées. Généralement, les utilisateurs n'y prêtent pas véritablement attention, mais le problème devient évident lorsqu'il est nécessaire d'utiliser un mot de passe pour s'identifier auprès des services IRC. Les mots de passe étant transmis en clair, comme toutes les données de la connexion, ils peuvent être potentiellement interceptés par une tierce personne écoutant le trafic du réseau.
La parade consiste donc à chiffrer des données pour protéger les informations (conversations, mots de passe, logins des IrcOp...). Ainsi, le trafic entrant et sortant du serveur ne sera lisible que par les machines destinataires légitimes. D'une manière générale, pour assurer la sécurité d'un réseau, les opérateurs devraient systématiquement utiliser des connexions sécurisées pour éviter le sniffing et ainsi, le vol de leurs mots de passe
Le chiffrement / sécurisation d'une connexion IRC suit un procédé standard utilisé avec d'autres types de protocoles (comme HTTPS par exemple). Le client IRC va d'abord négocier avec le serveur pour créer un tunnel de sécurité (via un port dédié) dans lequel les données circuleront (par vérification et échange de clés publiques et de certificats). Ce n'est qu'une fois que ce tunnel est prêt que la session IRC démarre. L'utilisation d'une connexion IRC sécurisée ne diffère en rien de l'utilisation d'une connexion normale, mis à part que le client peut parfois afficher un message d'alerte si le certificat lui semble incomplet (cas des certificats auto-signés, par exemple).
En général, le serveur signale au client que les données sont chiffrées en affichant avant le MOTD les caractéristiques de la connexion, par exemple :
-irc.serveur.com- *** You are connected to irc.serveur.com with TLSv1-AES256-SHA-256bits
TLSv1 indique la version du système de sécurisation, AES est le protocole de chiffrement avec une clé de longueur 256 bits, SHA256 est le hash. Ces informations varient bien entendu en fonction des protocoles de chiffrement et longueurs de clés utilisés et/ou disponibles sur le serveur ou le client.
Et par la suite, l'Usermode +z est appliqué au client, le marquant comme sécurisé. Ce mode permet aussi à l'utilisateur de rejoindre des canaux nécessitant le chiffrement des données, comme les canaux réservés aux administrateurs/opérateurs, ou autres.
À ce propos, lorsque l'utilisateur se connecte à un serveur et veut savoir si ce dernier supporte les connexions sécurisées, il suffit de passer en revue la liste des modes utilisables sur le serveur. Ces informations s'affichent toujours dès l'établissement de la connexion, avant le MOTD, comme ceci :
Welcome to the MyServer IRC Network Utilisateur!Username@host.isp.com
Your host is irc.server.com, running version Unreal3.2.7
This server was created Mon Jan 14 2008 at 10:15:24 CET
irc.server.com Unreal3.2.7 iowghraAsORTVSxNCWqBzvdHtGp lvhopsmntikrRcaqOALQbSeIKVfMCuzNTGj
NAMESX SAFELIST HCN MAXCHANNELS=30 CHANLIMIT=#:30 MAXLIST=b:60,e:60,I:60 NICKLEN=30 CHANNELLEN=32 TOPICLEN=307 KICKLEN=307
AWAYLEN=307 MAXTARGETS=20 WALLCHOPS are supported by this server
WATCH=128 SILENCE=15 MODES=12 CHANTYPES=# PREFIX=(qaohv)~&@%+ CHANMODES=beI,kfL,lj,psmntirRcOAQKVCuzNSMTG NETWORK=MyServer
CASEMAPPING=ascii EXTBAN=~,cqnr ELIST=MNUCT STATUSMSG=~&@%+ EXCEPTS INVEX are supported by this server
Dans les listes des modes (« iowghra... »), si le mode « z » apparaît, cela signifie que le chiffrement est supporté par le serveur. Pour utiliser la connexion sécurisée, il faut donc se renseigner auprès d'un IRCOp ou d'un Administrateur pour connaitre le numéro du port dédié.
Cette technique n'est pas toujours vrai. Certains serveurs, comme sur le réseau freenode utilise un mode différent et d'autres IRCd n'ont tout simplement pas implanté de mode de ce genre.
La plupart des clients IRC modernes implémentent des fonctions permettant de se connecter à un serveur IRC disposant d'un ou plusieurs ports dédiés aux sessions sécurisées. Certains clients gèrent ces fonctions en natif (comme KVIrc, XChat, ou encore Irssi si celui-ci est compilé avec le support SSL), là où d'autres clients comme mIRC par exemple nécessitent l'ajout de bibliothèques de chiffrement comme OpenSSL (libeay32.dll et ssleay32.dll par exemple). Il suffit donc ensuite de se connecter au serveur en passant par le port dédié aux connexions sécurisées; par exemple : 7000 (Comme convention, non officielle) au lieu de 6667.
Pour certains clients, il est parfois nécessaire d'ajouter un paramètre à la commande de connexion pour signaler qu'il va falloir utiliser le chiffrement. Sous mIRC, il suffit de placer un « + » juste avant le numéro du port (exemple : /server irc.server.com:+6668
), ou bien parfois, le commutateur « -ssl
» peut aussi être utilisé. Cela varie d'un client à l'autre.
L'implémentation du système de chiffrement sur un serveur se fait au moment de la préparation à la compilation (pour un serveur tournant sous un système Linux/UNIX ou FreeBSD). En fonction du serveur (UnrealIRCd, Bahamut, etc.), il faut configurer le script pour qu'il intègre les modules de chiffrement quand la compilation sera effectuée. Cela passe parfois par une question demandant si l'utilisateur désire que le serveur supporte les connexions de type SSL. Si l'on répond par l'affirmative, le système recherchera les modules de type OpenSSL ou autres pour installer le support du chiffrement et générer la clé et le certificat du serveur (certificat auto-signé dans ce cas, si l'on ne dispose pas de certificat délivré par une autorité officielle). Pour créer le certificat, le script pose une série de questions à l'utilisateur telles que : le nom du site, l'emplacement géographique, etc. Une fois cette étape passée, la compilation peut être lancée.
Il s'agit ensuite de configurer correctement le serveur pour déterminer le ou les ports permettant les connexions sécurisées. Cette configuration se fait généralement dans le fichier ircd.conf
ou unrealircd.conf
dans le Listen Block ou « P:Line ». On y précise les numéros de ports standards non sécurisés (6667 le plus souvent), et ensuite, le ou les ports sécurisés, en ajoutant les paramètres et options nécessaires indiquant au serveur d'utiliser le chiffrement pour ces ports précis. Par ailleurs, les chemins exacts des fichiers contenant la clé publique et le certificat doivent figurer dans la configuration principale du serveur IRC. En général, ces fichiers se trouvent dans le dossier contenant l'exécutable du serveur.
L'IRC étant un protocole nécessitant la vérification de l'exactitude des données transmises, il se base donc sur le modèle de transmission TCP. Cela signifie donc que si la connexion subit une latence trop élevée, une désynchronisation ou une perte de paquet non récupérable, la session est considérée comme nulle et est terminée automatiquement par le client ou le serveur. Il va donc de soi que le tunnel de sécurité fonctionne aussi selon ces mêmes règles. Une absence de réponse d'un côté ou de l'autre, une perte de synchronisation des clés de chiffrement, ou simplement un Ping Timeout (latence excessive) va entrainer la fermeture du tunnel, et avec lui, la fin de la session IRC. De cette façon les données ne sont pas transmises au hasard sans vérification de la part du système. La session sécurisée se remet en place lors de la reconnexion du client.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.