Exploring the roots and future of Internet Relay Chat

Guide IRCop : /oper, /kill, /kline, snomasks et responsabilités

Mon premier /oper, c'était sur un réseau de 30 utilisateurs en 2001. J'avais 23 ans et je me sentais invincible. Deux jours plus tard, j'ai accidentellement /kill un utilisateur légitime que j'avais confondu avec un clone. Il s'est avéré que c'était le meilleur ami du fondateur du réseau. Vingt-deux ans et beaucoup d'erreurs plus tard, voici ce que j'aurais aimé savoir avant de taper /oper pour la première fois.

Qu'est-ce qu'un IRCop

Un IRCop (IRC Operator) est un utilisateur disposant de privilèges administratifs sur un serveur ou un réseau IRC. Ce n'est pas un opérateur de canal (le @ que vous voyez devant un pseudo dans un canal) — c'est un opérateur de serveur, avec des pouvoirs qui affectent l'ensemble du réseau.

Hiérarchie IRC :

1. Utilisateur normal       → aucun privilège spécial
2. Voice (+v)               → peut parler dans les canaux modérés
3. Halfop (+h)              → modération légère (kick, ban limité)
4. Opérateur de canal (+o)  → contrôle total du canal
5. IRCop                    → contrôle du serveur / réseau
   ├── Local operator       → pouvoirs limités au serveur local
   ├── Global operator      → pouvoirs sur tout le réseau
   ├── Services admin       → accès aux commandes services
   └── Network admin        → accès complet (rehash, die, restart)

Le statut IRCop est attribué dans la configuration du serveur, pas dans les services. C'est l'administrateur du serveur (la personne qui a accès au fichier de configuration et au shell) qui décide qui peut devenir IRCop.

Obtenir le statut /oper

La commande /oper est ce qui transforme un utilisateur normal en IRCop. Mais avant de pouvoir l'utiliser, un bloc oper {} doit exister dans la configuration du serveur.

Configuration UnrealIRCd :

oper Marco {
    class opers;
    mask {
        *@trusted-host.example.net;
        *@192.168.1.0/24;
    }
    password "$argon2id$v=19$m=65536...";  /* hash du mot de passe */
    operclass netadmin;
    swhois "est un administrateur réseau";
    vhost "staff.example.net";
};

Configuration InspIRCd :









Une fois configuré, l'utilisateur se connecte normalement et tape :

/oper Marco monmotdepasse

Si le mot de passe est correct et que le hostmask correspond, le serveur accorde les privilèges et affiche un message de confirmation. L'utilisateur reçoit le mode +o (visible aux autres IRCops via /whois).

Attention : Ne tapez jamais /oper dans un canal. C'est un réflexe de débutant qui expose votre mot de passe à tous les présents. Tapez-le dans la fenêtre status/serveur de votre client, ou dans une fenêtre de query avec vous-même.

Les commandes essentielles

/kill — Déconnecte un utilisateur du réseau avec un message.

/kill Spammer42 Spam detected

# L'utilisateur voit : "Closing Link: Spammer42 (Killed (Marco (Spam detected)))"
# /kill est immédiat et affecte tout le réseau (pas juste votre serveur)

/kline — Bannit un hostmask de votre serveur local. L'utilisateur banni ne peut plus se connecter à CE serveur.

# Bannir une IP pour 1 jour
/kline +1d *@203.0.113.42 :Spam

# Bannir un range pour 1 semaine
/kline +7d *@203.0.113.0/24 :Spam range

# Bannir par ident
/kline +1d ~spambot@* :Bot de spam

# Kline permanent (pas de durée)
/kline *@bad-host.example.net :Permanent ban

/gline — Bannit un hostmask sur TOUS les serveurs du réseau (global). Nécessite des privilèges élevés.

/gline +1d *@203.0.113.42 :Network-wide spam ban

# Sur certains IRCd, les glines nécessitent un vote
# (confirmation par un deuxième IRCop sur un autre serveur)

/zline — Bannit une adresse IP (pas un hostmask). Plus restrictif qu'un kline — bloque avant même la résolution DNS.

/zline +1d 203.0.113.42 :Blocked IP
/zline +1d 203.0.113.0/24 :Blocked range

/rehash — Recharge la configuration du serveur sans le redémarrer.

/rehash          # Recharge le fichier de configuration
/rehash -tls     # Recharge les certificats TLS (UnrealIRCd)
/rehash -motd    # Recharge le MOTD

Commandes de diagnostic :

/stats k         # Liste des klines actifs
/stats g         # Liste des glines actifs
/stats o         # Liste des oper blocks configurés
/stats l         # Connexions actives avec détails
/stats u         # Uptime du serveur
/trace           # Trace des connexions serveur
/map             # Carte du réseau (topologie des serveurs)
/connect srv     # Connecter un serveur au réseau
/squit srv       # Déconnecter un serveur du réseau
Conseil : La commande /map est votre meilleur ami pour diagnostiquer les problèmes réseau. Elle affiche la topologie en temps réel : quels serveurs sont connectés, le lag entre chaque lien, et le nombre d'utilisateurs par serveur. Utilisez-la en premier quand quelque chose semble anormal.

Snomasks : les yeux du réseau

Les snomasks (Server Notice Masks) sont des filtres qui déterminent quelles notifications serveur vous recevez. Sans snomasks, vous opérez à l'aveugle. Avec les bons snomasks, vous voyez tout ce qui se passe en temps réel.

# Activer des snomasks
/mode MonNick +s +cFfkejvGnNqS

# Snomasks courants (UnrealIRCd) :
# c = connexions locales
# F = connexions distantes (tout le réseau)
# f = flood alerts
# k = kills
# e = erreurs
# j = junk (nick changes, etc.)
# v = /vhost usage
# G = gline/shun/spamfilter activations
# n = notices réseau
# N = notices réseau distantes
# q = rejects (connexions refusées)
# S = spamfilter matches

# Ma configuration personnelle (monitoring complet) :
/mode Marco +s +cFfkeGnqS

Sur InspIRCd, les snomasks sont similaires mais avec des lettres différentes :

# InspIRCd snomasks :
# c = connexions locales
# C = connexions distantes
# k = kills
# o = opers (quelqu'un fait /oper)
# q = quits
# x = xlines (klines, glines, etc.)
# l = links (connexions/déconnexions serveur)
# d = debug

/snomask +cCkoqxl

Les snomasks génèrent beaucoup de bruit sur un réseau actif. Sur un réseau de 1000+ utilisateurs, les notices de connexion/déconnexion défilent en continu. Configurez une fenêtre dédiée dans votre client IRC pour les server notices — ne les mélangez pas avec vos canaux de discussion.

Niveaux de privilèges

Les IRCd modernes définissent des classes d'opérateurs avec des privilèges granulaires. Le principe du moindre privilège s'applique : donnez à chaque IRCop uniquement les pouvoirs dont il a besoin.

# UnrealIRCd — operclass hiérarchiques
operclass locop {
    permissions {
        kill;               # /kill
        kline;              # /kline (local)
        channel:override:message;  # Écrire dans les canaux modérés
    }
};

operclass globop {
    parent locop;           # Hérite de locop
    permissions {
        gline;              # /gline (réseau)
        zline;              # /zline
        spamfilter;         # Gérer les spamfilters
        server:remote:kill; # Kill sur d'autres serveurs
    }
};

operclass netadmin {
    parent globop;          # Hérite de globop
    permissions {
        server:rehash;      # /rehash
        server:die;         # /die (arrêter le serveur)
        server:restart;     # /restart
        server:addline;     # Ajouter des lignes de config
        all;                # Tout le reste
    }
};

En pratique, sur un réseau de taille moyenne :

Répartition type des rôles :
├── 1-2 Network Admins    → accès complet, gèrent l'infrastructure
├── 2-4 Global Operators  → gèrent le spam/abus réseau
├── 2-6 Local Operators   → gèrent les abus sur leur serveur
└── N Channel Operators   → pas des IRCops, gèrent leurs canaux

Responsabilités et éthique

Être IRCop n'est pas un titre honorifique. C'est une charge qui vient avec des responsabilités concrètes et des pièges éthiques.

Ce que vous devez faire :

1. Répondre aux signalements d'abus dans un délai raisonnable
2. Documenter vos actions (kills, klines, glines) avec des raisons claires
3. Appliquer les règles du réseau de manière uniforme
4. Maintenir la confidentialité des données utilisateur (IPs, logs)
5. Communiquer avec les autres IRCops avant les actions majeures
6. Tester vos spamfilters avant de les déployer
7. Avoir un plan de réponse aux incidents (DDoS, takeover, compromission)

Ce que vous ne devez pas faire :

1. Utiliser vos pouvoirs dans des conflits personnels
2. Lire les messages privés des utilisateurs (même si techniquement possible)
3. Donner le statut IRCop à des amis sans évaluation
4. Ignorer les signalements parce que le contrevenant est un ami
5. Faire des /kill "pour rire"
6. Modifier la configuration en production sans la tester
7. Partager les IP des utilisateurs avec des tiers

La règle d'or que j'applique depuis 2003 : chaque action d'IRCop doit être justifiable devant les autres opérateurs. Si vous ne pouvez pas expliquer pourquoi vous avez /kill quelqu'un, vous n'auriez pas dû le faire.

Erreurs courantes de débutant

Le gline au /16. Face à un spammeur, le nouvel IRCop panique et tape /gline +30d *@203.0.0.0/16. Il vient de bannir 65 536 adresses, dont probablement des centaines d'utilisateurs légitimes. Commencez toujours par le masque le plus étroit possible.

Le /kill en cascade. Trois clones apparaissent. L'IRCop /kill chacun manuellement. Ils reviennent. Re-/kill. Ils reviennent. Pendant ce temps, 50 autres clones se connectent. La bonne approche : identifier le pattern (IP, ident, realname), poser un kline ou un spamfilter, puis /kill les résidus.

Le rehash qui casse tout. Vous modifiez la config pour ajouter un oper block, vous faites /rehash, et le serveur déconnecte tous les utilisateurs parce que vous avez introduit une erreur de syntaxe. Testez toujours la configuration avant de recharger :

# UnrealIRCd — vérifier la config sans recharger
/opt/unrealircd/bin/unrealircd configtest

# InspIRCd
/opt/inspircd/bin/inspircd --runasroot --config --nolog

L'abus de SAMODE/SAJOIN. /samode permet de changer les modes d'un canal sans en être opérateur. /sajoin force un utilisateur à rejoindre un canal. Ces commandes existent pour des situations spécifiques (canal perdu, besoin d'intervention). Les utiliser pour s'auto-promouvoir op dans des canaux random est un abus de pouvoir qui détruit la confiance.

Questions fréquentes

Un IRCop peut-il lire les messages privés ?

Techniquement, sur certaines configurations, oui — via des modules de surveillance ou l'accès aux logs du serveur. Éthiquement et légalement, non. La lecture des messages privés sans consentement peut violer les lois sur la vie privée (RGPD en Europe). Les réseaux sérieux interdisent cette pratique dans leur charte d'opérateur. Le mode +p (override de canal privé) et le snomask de messages n'existent pas par défaut — il faut les activer volontairement.

Combien d'IRCops faut-il pour un réseau ?

Dépend de la taille et de l'activité. Pour un réseau de 100-500 utilisateurs, 3-5 IRCops avec des fuseaux horaires différents suffisent. L'objectif est d'avoir au moins un IRCop joignable à tout moment. Si votre réseau est petit et calme, deux IRCops actifs avec un troisième en backup peuvent suffire.

Que faire si un autre IRCop abuse de ses pouvoirs ?

Documentez les abus (screenshots, logs). Contactez le network admin ou les autres IRCops. Ne tentez pas de "corriger" la situation vous-même par des actions d'IRCop — cela transforme un abus en guerre civile. Si la gouvernance du réseau est trop dysfonctionnelle pour gérer le problème, c'est un signal que le réseau a des problèmes plus profonds que techniques.