Tip of the day: Still not using a real SSL/TLS certificate? Check out Using Let's Encrypt with UnrealIRCd. |
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.
If your server is currently under attack, then you may want to start reading the Security article first.
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.
Distributing user load and doing server maintenance
If you have multiple servers then see Distributing user load and doing server maintenance article for best practices on this. That article helps both to spread the load and to direct users to other server(s) if you are going to do maintenance on one.
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.
See the Security article on how to limit bad users from getting into your server and how to limit the damage. It explains features like blacklists, connthrottle, antirandom, spamfilter, limiting commands, and more.
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 +P channels will have 0 users as well. For users to regain channel operator status (ops) and manage channels you normally use Services.