IRCOp guide/fr

This is a guide for everyone who has their IRC server up and running and now needs to understand how to do server administration. Or, as we call it on IRC: how to do IRCOp tasks.

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 du 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).

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).

Pour de plus amples informations ou si vous avez des soucis avec la commande /OPER, jetez un oeil sur FAQ: Comment devenir IRCOp / administrateur

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/founders 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 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 se 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 :

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 :

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.

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 :

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.

OS AKILL
Si vous faites tourner des Anope (nous en parlerons plus loin) alors vous pouvez utiliser la commande AKILL d'OperServ (/os help akill). Cela permet de stocker tous les klines et glines dans une base de données et permet de les conserver entre deux redémarrages du serveur.

Exceptions de bans
Une fois que vous commencez à bannir des users vous pouvez accidentellement vous bannir vous-même.

If you have a static IP then it's worth exempting your IP's from bans. You do this by adding both an Except TKL block and Except ban block. Add this to your unrealircd.conf file (and rehash): except tkl { mask *@1.2.3.4; type gline; }; except ban { mask *@1.2.3.4; }; Naturally you should replace 1.2.3.4 with your IP address. (Just /WHOIS yourself to see your IP)

Getting information
As an IRCOp you can gather a lot of information about the server, users and channels. Below are the most common examples.

Server notices (Snomasks)
As an IRCOp you will see notices in your status window such as users connecting/disconnecting: *** Client connecting: The_User (~test@example.org) [192.168.0.1] {clients} [secure ECDHE-RSA-AES256-GCM-SHA384] The type of messages you receive are controlled via Snomasks.

User list (WHO)
As an IRCOp you can use /WHO without parameters to see all users on the network. In contrast, a normal user can also use /WHO but will only see users that are visible to him (such as in the same channel).

There are some useful parameters that you can use as IRCOp such as /WHO +R to see all real hosts, and /WHO +I to see all IP addresses.

User details (WHOIS)
You are (hopefully) already familiar with the /WHOIS nickname command. As an IRCOp you can use this same command but you will see additional information, such as: the IP address of the user and all the channels the user in (even if they are secret).

Channel list (LIST)
All users can use /LIST but if you issue this command as an IRCOp you will be able to see all channels, even if they are secret.

Channel mode querying (MODE)
You can see the modes of a channel without joining via /MODE #channel. Similarly you can see the banlist via /MODE #channel b.

Topic querying (TOPIC)
You can see the topic of a channel without joining, by using /TOPIC #channel.

See channel members (NAMES, WHO)
As an IRCOp you can see who is inside a channel, without joining the channel. Simply issue /NAMES #channel or /WHO #channel

Taking control of channels (Override)
As an IRCOp you can (with sufficient privileges) join a channel and do the same tasks as a channel operator of that channel. Note that it is highly debated matter whether this is 'good' or 'bad'. See also earlier.

In UnrealIRCd we call this "overriding", since you override the normal channel rules and behave like a chanop.

IMPORTANT: If you want to use this then you need to use the -with-override operclasses. For example if your Oper block has operclass netadmin you won't be able to override, you need to use operclass netadmin-with-override (and rehash of course).

Joining a channel even if you normally cannot
Say, you have a channel #drones you want to join because you suspect this to be a channel with troublemakers. If you try to /JOIN you will see a message like Channel is invite only (+i).

You can still join the channel (=override) by inviting yourself and retrying the join: /INVITE myself #drones /JOIN #drones Note: if this doesn't work then read previous block about operclass.

An alternative is to use SAJOIN. This is not available for all operclasses but is available with netadmin-with-override: /SAJOIN myself #drones

Both the INVITE+JOIN and SAJOIN allow you to bypass all channel modes and all bans.

Changing modes (MODE, SAMODE)
If you have override privileges you can simply use a MODE command like /MODE #channel -i. You can set the modes even if you don't have channel operator status.

There is also the command /SAMODE #channel -i. This will make the MODE appear from the server: *** irc.server.net sets mode: -i

Kicking users (KICK, SAPART)
If you have override privileges you can simply kick users like /KICK #channel nickname reason

There is also a command to forcefully part someone, in which case most clients won't auto-rejoin the user. This is /SAPART nick #channel

Making yourself unkickable
If you have sufficient privileges you can set user mode +q on yourself like this: /MODE yournick +q This makes it so you cannot be kicked by anyone in any channel.

This is naturally highly abusive but may be necessary if you are to join a channel with troublemakers that will keep kicking you and refuse any form of conversation.

Services
Most networks will run "Services". These are usually visible via the (pseudo) users "NickServ" and "ChanServ". Users can register their nick names and channels at services to claim "ownership" of their nicks/channels. This also helps with preserving settings between server restarts. If you want this you will have to install additional software. See Services.

Note: Setting up services takes at least an hour for most people. It's worth the effort, but be prepared to take some time for it. If you only just set up your first IRC server, then play around a little first before you setup Services another day.

Linking servers
If you want to run a multi-server IRC network then you will have to "link" multiple servers. Basically you set up 2 or more servers first and then "link" them together. The users on server A will then also be visible on server B and vice-versa. The same is true for channels and global bans such as GLINES. See Tutorial: Linking servers.

NOTE: Linking is by many beginners considered to be a complex topic so if you are just setting up your first server you may want to hold off until you have at least a couple of users before you set up a 2nd server and try to link them together.

Fighting spam and drones
Once your servers gets (more) popular you will eventually be hit by users spamming other users/channels and possibly a drone attack as well.

Use blacklists
To fight troublemakers you should add one or more Blacklist blocks. The blacklists under Example in that article are a good start.

What this does is query an external service for each and every connecting user. If the user is on the blacklist, the user is banned.

Use antirandom
Antirandom is a module that will automatically ban users that have a nickname/username/realname that looks "too random". Note that this may not work very well for non-English/non-Western languages.

To use this, have a look at conf/modules.optional.conf and copy-paste the entire section involving antirandom to your unrealircd.conf.

Use spamfilter
UnrealIRCd has a very effective, but also slightly complex, tool called Spamfilter. It allows you for example to automatically GLINE anyone saying "Hi plz download: www.virus.com/this.exe" in a channel. It can react on private messages, channel messages, dcc's and more. It can use simple matching but also regular expressions. See the Spamfilter article for full information.

Other measures
A very effective anti-flood feature that you should definitely deploy is Channel Mode +f.

Preserving settings between restarts
If your server dies or is restarted then all settings are lost. And this will happen eventually because you will have to upgrade the software.

With "all settings" we mean everything set on IRC, such as: channels, channel memberships, KLINE/GLINE's, SPAMFILTER's, and so on. The only thing that is preserved is everything in your configuration files (such as unrealircd.conf).

To fix this you will have to run Services.

What also helps is if you have a multi-server network. Once the servers "link" all channel settings (and KLINEs, GLINEs, SPAMFILTERs, etc) are synchronized. So, as long as a channel exists on 1 of the servers on the network, the settings will be preserved (even without services). Still, you should really run Services.