Tip of the day: Don't like snomasks / server notices? Then configure logging to a channel. |
IRCOp guide
Ce guide est pour toutes personnes possédant son serveur IRC et qui a maintenant besoin de comprendre comment administrer un serveur. Ou, comme nous l'appelons sur IRC : Comment être un bon IRCop.
Avant-propos
Ce guide suppose que vous avez une compréhension basique de l'IRC. Vous devez être familiers des concepts de pseudos, salons, modes utilisateurs, modes des salons.
Qu'est-ce qu'un IRCop ?
Sur IRC les personnes avec des privilèges spéciaux sur le serveur sont appelés "IRC Opérateur", souvent raccourcis en "IRCops" ou "opers".
Comment devenir IRCop
Quand vous avez configuré votre serveur vous avez dû ajouter un Bloc oper. Une fois sur IRC, vous pouvez écrire /oper pseudo pass pour devenir IRCop. A noter que le pseudo et le mot de pass sont sensibles à la casse (A est différent de a).
Pour de plus amples informations ou si vous avez des soucis avec la commande /OPER, jetez un oeil sur FAQ: Comment devenir IRCOp / administrateur
Il existe de nombreux niveaux parmi les IRCops. La directive operclass dans le bloc oper servira à définir ce niveau. Le plus élevé est netadmin ou le netadmin-with-override (nous en parlerons plus loin).
NOTE: Les sections suivantes supposent que vous savez comment devenir IRCOp.
Principes
Les IRCOps ont beaucoup de pouvoir. Il y a plusieurs façon de composer avec ces pouvoirs. Nous allons maintenant vous proposer les deux principes les plus connus, les deux codes de conduite. C'est à vous de décider lequel vous souhaiter mettre en oeuvre. Bien entendu, rien n'est tout noir ou tout blanc, à vous de choisir.
Les IRCOps contrôlent tout
Les IRCOps ont les droits pour joindre n'importe quel salon, devenir opérateur n'importe où et peuvent se réserver le droit de le faire. Les IRCops sont "au-delà" des modérateurs/propriétaires des salons et ils sont parfaitement libres d'user de leur pouvoir sans la moindre restriction.
C'est généralement l'idée que les personnes ayant leur premier serveur IRC ont. C'est alors une gestion centralisée du serveur ou ce sont les membres du serveur qui gèrent les salons.
Les IRCops n'interfèrent pas sur les salons
Cette vision des choses diffère un peu de la précédente :
Quand il y a un problème sur un salon et qu'il peut être résolu par les founders ou modérateurs du salon, alors ce sont à eux de le faire. Les modérateurs/founders peuvent kicker ou bannir un utilisateur, alors les IRCops n'ont pas à intervenir. Les IRCops n'interviennent quand cela touche la sécurité du serveur ou des utilisateurs ou qu'un utilisateur est harcelé ou spammé en PV.
C'est le code de conduite utilisé par la plupart des serveurs. Il offre plus de liberté aux utilisateurs.
Déconnecter et bannir les users
Déconnecter un user (KILL)
Vous pouvez forcer un user à être déconnecté en utilisant un KILL. Vous pouvez le faire en écrivant /KILL pseudo raison. L'user peut toujours revenir.
Vous pouvez aussi bannir un user pour une durée précise (ou de façon permanente). Pour ce faire :
Bannir un user d'un serveur (KLINE)
Pour bannir un user d'un serveur vous pouvez faire /KLINE ident@host durée raison. La durée est en secondes ou avec une expression de temps tel que 1h ou 1d. Définir la durée à 0 pour que le ban soit permanent.
Exemple : /KLINE *@idiot.unicorn-land.org 3600 Va voir ailleur pour une heure
Cela bannira tous les utilisateurs avec l'host idiot.unicorn-land.org pour 3600 secondes (une heure).
Notez que si vous possédez un réseau avec de multiples serveurs liés (linkés) le KLINE n'est généralement pas conseillé car il suffit à l'user de se reconnecter à un autre serveur du réseau. Dans ce cas, vous devrez utiliser la commande GLINE, que nous allons voir ensuite.
Bannir un user du réseau (GLINE)
Pour bannir un user d'un réseau IRC (et donc de tous les serveurs linkés), utilisez /GLINE ident@host durée raison.
Exemple : /GLINE *@idiot.unicorn-land.org 7200 Va voir ailleurs pour les deux prochaines heures
ZLINE, GZLINE
En plus du KLINE (ban local) et du GLINE (ban global) il existe aussi ZLINE et GZLINE. Ils sont assez particuliers dans le sens où les users correspondants aux (G)ZLINE sont déconnectés immédiatement lorsqu'ils essaient de se connecter au serveur. A l'inverse, KLINE/GLINE laissent l'user faire un handshake (négociation de connexion). Il y a donc les pour et les contres.
In addition to KLINE (local ban) and GLINE (network ban) there is also ZLINE and GZLINE. These are special, in the sense that users matching (G)ZLINE's are killed immediately when they attempt to connect to the server. In contrast, KLINE/GLINE which let's the user perform a hanshake. There are pro's and con's to this:
Parce que les bans du (G)ZLINE sont appliqués immédiatement (avant le handshake) ils peuvent être causer une très légère charge supplémentaire sur le serveur. En d'autres termes, il n'y a pas de résolution des DNS, pas de résolution de l'ident, aucun pseudo n'est connu, les connexions SSL/TLS ne sont ainsi jamais établies. Pour résumer : il y a quelques mauvais côtés, mais il peut être utilisé en cas d'attaque massive de clônes sur le votre serveur.
Généralement nous conseillons d'utiliser KLINE/GLINE à la place des (G)ZLINE.
Si vous souhaitez néanmoins utiliser les (G)ZLINE, la syntaxe est : /GZLINE *@ip durée raison. A noter que le ZLINE est un ban local alors que le GZLINE est global.
Exemple : /GZLINE *@1.2.3.4 900 Tu as 15 minutes de déconnexion
Comme précisé auparavant, vous devez spécifier une adresse IP et vous ne pouvez pas utiliser un host car la résolution du DNS n'a pas lieu.
Advanced bans
Instead of banning on user@host or user@ip, it is also possible to use Extended server bans to ban on other user properties, such as account names, real name (gecos) and certificate fingerprints.
Exceptions de bans
Une fois que vous commencez à bannir des users vous pouvez accidentellement vous bannir vous-même.
On IRC you can do this via the ELINE command. For example /ELINE *@198.51.100.1 kGzZ 0 Trusted user would exempt that IP address from klines, glines, zlines and gzlines. Just type /ELINE to see the syntax and possible options.
Si vous avez une IP statique alors vous pouvez ajouter votre IP en exception. Pour se faire, vous devez vous ajouter dans le Bloc des exceptions TKL ET dans le Bloc des exceptions de bans. Ajoutez cela à votre fichier unrealircd.conf (et faites un /rehash) :
execpt tkl { mask *@1.2.3.4; type gline; }; except ban { mask *@1.2.3.4; };
En toute logique vous devez remplacer 1.2.3.4 par votre adresse IP. (Un simple /WHOIS sur vous-même vous la donnera).
Removing bans
To remove a ban created with an IRC command, use the same command and prefix - to the hostmask, with no duration or reason. For example: /KLINE -user@host.
To remove a ban created via the configuration file, remove it from the configuration and rehash.
Avoir l'information
Comme tous les IRCops vous pouvez connaître bon nombre d'informations sur le serveur, les users et les salons. Voyons les exemples les plus courants :
Notices serveur (Snomasks)
Comme tous les IRCops vous pouvez voir les notices dans votre fenêtres des status comme les connexions/déconnexions des users :
*** Client connecting: The_User ([email protected]) [192.168.0.1] {clients} [secure ECDHE-RSA-AES256-GCM-SHA384]
Ce genre de messages que vous recevez est contrôlé via les Snomasks.
List des users (WHO)
Comme tous les IRCops vous pouvez faire /WHO sans le moindre paramêtre pour voir la liste de tous les users du réseau. A l'inverse, un user normal peut utiliser /WHO mais ne peut voir que les users qui sont visibles pour lui-même (comme ceux qui sont sur le même salon).
Il existe quelques paramètres pratiques qu'un IRCop peut utiliser tel que /WHO +R pour voir tous les vrais hosts, et /WHO +I pour voir toutes les adresses IPs.
Détail d'un user (WHOIS)
Vous êtes (espérons-le) déjà familier avec /WHOIS pseudo. Comme tous les IRCops vous pouvez utiliser cette commande mais avec quelques informations supplémentaires, tel que : L'adresse IP de l'user et tous les salons sur lesquels il est présent (même s'ils sont secrets).
Liste des salons (LIST)
Tous les users peuvent faire un /LIST mais si vous le faîtes en étant IRCop vous verrez alors tous les salons, même ceux qui sont secrets.
Requête des modes salons (MODE)
Vous pouvez voir les modes d'un salon sans même être dessus via /MODE #salon. De la même façon, vous pouvez voir la liste des personnes bannies via /MODE #salon b.
Requête topic (TOPIC)
Vous pouvez voir le topic d'un salon sans même être dessus, en utilisant /TOPIC #salon.
Afficher les membres d'un salon (NAMES, WHO)
Comme tous les IRCops vous pouvez voir les personnes étant sur un salon, sans même être présent. Il suffit de faire /NAMES #salon ou /WHO #salon
Prendre le contrôle des salons (Override)
Comme tous les IRCops vous pouvez (avec les privilèges suffisants) rejoindre un salon et faire les mêmes choses qu'un opérateur de ce salon. A noter que cela a largement été débattu comme pouvant être les 'bonnes' ou 'mauvaises' choses. Voir #Principes.
Sur UnrealIRCd nous appelons ça "overriding', cela signifie que vous pouvez outrepasser les règles classiques d'un salon et agir comme un modérateur.
IMPORTANT : Si vous souhaitez faire cela, vous devez avoir la direction -with-override. Par exemple si dans votre Bloc oper vous avez operclass netadmin vous ne pouvez pas outrepasser les droits, vous devez utilisez operclass netadmin-with-override (et faire un /rehash, bien entendu).
Rejoindre un salon auquel vous n'auriez pas accès
Imaginons, vous avez un salon #drones que vous souhaitez rejoindre parce que vous pensez qu'il y a des fauteurs de trouble. Si vous faîtes /JOIN vous verrez un message comme Channel is invite only (+).
Vous pouvez néanmoins rejoindre le salon (=override) en vous invitant vous-même et en tentant de le rejoindre à nouveau :
/INVITE moi #drones /JOIN #drones
Note : Si cela ne fonctionne pas merci de lire le paragraphe précédent sur les operclass.
Une alternative est d'utiliser SAJOIN. Mais ce n'est pas valable pour tous les niveaux d'oper mais cela fonctionne pour les netadmin-with-override :
/SAJOIN moi #drones
Ensemble le INVITE+JOIN et SAJOIN vous autorise à outrepasser tous les bans et tous les modes des salons.
Modifier les modes (MODE, SAMODE)
Si vous avez les privilèges d'override vous pouvez simplement utiliser la commande /MODE #salon -i. Vous pouvez le faire même sans être opérateur du salon.
Sinon, il existe la commande /SAMODE #salon -i. Cela apparaît comme un mode du serveur ;
*** irc.unicorn-land.org sets mode : -i
Kicker les users (KICK, SAPART)
Si vous avez les privilèges d'override vous pouvez simplement faire /KICK #salon pseudo raison
Il existe sinon une commande pour forcer un user à partir d'un salon, et dans ce cas la plupart des clients n'ont pas d'auto-join. Pour se faire /SAPART pseudo #salon
Vous rendre insensible au kick
Si vous avez les privilèges nécessaires vous pouvez appliquer le mode user +q de cette façon :
/MODE moi +q
Cela vous rendra insensible au kick sur tous les salons et par n'importe qui.
C'est bien évidemment un abus de pouvoir mais cela peut être nécessaire si vous allez sur un salon avec des fauteurs de troubles qui vous kick sans cesse et refusent toute forme de dialogue.
Services
La plupart des réseaux utilisent des "Services". Ils sont habituellement visibles via les (pseudos) users 'NickSer" et "ChanServ". Leur users peuvent enregistrer leurs pseudos et leurs salons afin de demander la "propriété" de leurs pseudos/salons. Cela permet de les protéger entre deux redémarrages des serveurs. Si vous le souhaitez, vous pouvez installer des logiciels supplémentaires. Voir Services.
Note : Installer et configurer prend dans la plupart du temps une bonne heure. Cela en vaut la peine, mais soyez prêt à y passer le temps nécessaire. Si vous souhaitez juste faire tourner votre premier serveur IRC, alors prenez le temps de vous amuser un peu avant d'installer les Services.
Relier des serveurs
Si vous lancer un réseau IRC avec de multiples serveurs alors vous aurez besoin de "relier" (linker) ces serveurs. Généralement vous lancez ou un deux serveurs et vous les "linkez" ensemble. Les users du serveur A seront alors visibles sur le serveur B et vice-versa. La même chose est vraie pour les salons et les bans globaux tels que les GLINEs. Voire Tutorial : Relier des serveurs.
NOTE : Linker des serveurs peut être vu par l'ensemble des novices comme un sujet compliqué mais si vous installez votre premier serveur attendez d'avoir un nombre relativement important avoir de lancer un second serveur et de les linker ensemble.
Lutter contre le spam et les drones
Une fois votre serveur ayant (un peu) de popularité, vous pouvez éventuellement être impactés par des users faisant du spam ainsi que des attaques de drones.
Utiliser des blacklists
Pour lutter contre les fauteurs de troubles vous pouvez ajoutez une plus Listes noires. Les backlists nommées Exemple dans cet acticle sont un bon début.
Peu importe si la requête interroge un serveur extérieur pour chaques connexions. Si l'user est dans la blacklist, il est banni.
Use connthrottle
During a drone attack, when hundreds of bots/drones connect to your server in a short time, the connthrottle module will rate-limit those new connections, while still allowing (almost) all your regular users in.
The connthrottle module is already loaded and enabled by default. See the Connthrottle page for more information.
Utiliser antirandom
Antirandom est un module qui bannira automatiquement les users ayant un pseudo/ident/gécos semblant "trop aléatoire". A noter que cela ne fonctionne pas au mieux pour des langues non anglo-saxonnes.
Pour l'utiliser, jetez un oeil à conf/modules.optional.conf et faîtes un copier/coller dans l'ensemble dans la section antirandom dans votre fichier unrealircd.conf.
Utiliser spamfilter
UnrealIRCd possède un outil très efficace, bien que complexe, appelé Spamfilter. Il permet par exemple de GLINE automatiquement toutes les personnes disant "Bonjour, téléchargez : www.virus.com/cet.exe" sur un salon. Il peut également réagir aux messages privés, aux messages sur les salons, aux DCCs et plus encore. Il emploie une simple comparaison, mais en passant par les expressions régulières. Voir Spamfilter pour de plus amples informations.
Autres solutions
Une fonction très efficace contre les floods est encore de mettre en place Mode des salons +f.
Sauvegarde des configurations lors d'un redémarrage
Si votre serveur s'arrête ou redémarre alors toutes les sauvegardes sont perdues. Et cela peut arriver lorsque vous faîtes une mise à jour de votre serveur.
Of course, when a server restarts then it will start with having 0 users online. All channels will have 0 users as well. For users to regain channel operator status (ops) and manage channels you normally use Services.