Comment exécuter un serveur de conversation UnrealIRCd sur Debian 7

introduction

Dans cet article, nous allons apprendre à créer, installer et configurer un serveur IRC à l’aide du démon Unreal IRC (IRCd): un service qui permet aux utilisateurs de se connecter via IRC (Internet Relay Chat). IRC est un protocole qui permet aux utilisateurs de discuter en temps réel via des messages envoyés sur un réseau.

En particulier, nous allons utiliser un droplet * Debian 7 x64 * pour ce tutoriel.

Première étape - Créer un utilisateur ircd

Nous supposerons que vous venez de lancer une nouvelle Droplet Debian 7 x64 et que vous êtes connecté en tant que root. Si vous n’êtes pas actuellement l’utilisateur root, passez à root avec:

su

Comme pour tout service ou démon visible de l’extérieur, il est préférable de ne pas exécuter UnrealIRCd en tant que root, pour des raisons de sécurité et de performance. Pour cette raison, nous allons commencer par créer un utilisateur spécifique pour exécuter le démon.

adduser ircd

Créez un nouveau mot de passe pour l’utilisateur à l’invite. Je recommande un mot de passe créé à l’aide de la méthode XKCD pour créer des mots de passe, c’est-à-dire combiner 3 à 5 mots de dictionnaire assez communs en une combinaison mémorable dont la longueur ajoutera suffisamment d’entropie (force) à le mot de passe rend difficile à deviner un ordinateur, mais facile à retenir pour un humain.

Si vous n’êtes pas invité à créer un mot de passe, tapez simplement:

passwd ircd

Vous serez ensuite invité à créer le mot de passe.

Donner des privilèges à l’utilisateur

Nous devons maintenant nous assurer que le serveur est fourni avec sudo, un utilitaire populaire pour les systèmes UNIX (tels que Linux). Pour ceux qui ne sont pas familiers, la commande sudo permet aux utilisateurs d’exécuter des commandes avec des privilèges root (su ou superuser), d’où le nom - s supérieur u ser * do * - dont nous aurons besoin lors de la configuration du bibliothèques de prérequis.

Dans Debian 7, sudo est installé par défaut. Si vous devez l’installer, tapez:

apt-get install sudo

Maintenant que nous savons que sudo est installé, vous devez ajouter l’utilisateur * ircd * que nous avons créé précédemment au groupe sudo pour lui permettre d’accéder à la commande sudo.

Pour ce faire, exécutez cette commande:

adduser ircd sudo

C’est tout pour la création de l’utilisateur! Maintenant, nous pouvons simplement passer au nouvel utilisateur:

su ircd

Accédez au répertoire de base de l’utilisateur * ircd *.

cd ~

Deuxième étape - Installation des prérequis

Avant de pouvoir installer UnrealIRCd, il nous manque quelques bibliothèques. Celles-ci incluent les bibliothèques utilisées pour la connexion sécurisée ainsi que les compilateurs et les bibliothèques nécessaires à la création de UnrealIRCd.

Ces packages sont * make *, * gcc *, * build-essential *, * openssl *, * libcurl4-openssl-dev *, * zlib1g *, * zlib1g-dev *, * zlibc *, * libgcrypt11 * et * libgcrypt11 -dev *.

Nous allons utiliser APT pour les installer dans Debian. Exécutez la commande suivante pour mettre votre gestionnaire de paquets à jour:

sudo apt-get update

Exécutez la commande suivante pour installer les prérequis. Entrez lorsque vous y êtes invité. Vous constaterez peut-être que certains de ces paquets sont déjà installés - au moment de la rédaction de ce document, zlib1g et openssl sont déjà inclus avec Debian - mais ils sont listés ici pour des raisons d’exhaustivité.

sudo apt-get install make gcc build-essential openssl libcurl4-openssl-dev zlib1g zlib1g-dev zlibc libgcrypt11 libgcrypt11-dev

Ce serait un bon moment pour prendre une collation, car le gestionnaire de paquets peut prendre un certain temps pour télécharger et installer tous les paquets.

Une fois que cela est fait, nous pouvons télécharger et installer UnrealIRCd et commencer le processus de construction.

Troisième étape - Installer UnrealIRCd

UnrealIRCd n’est pas disponible par défaut sous forme de paquet sur Debian ou l’une des distributions principales. Nous allons donc le télécharger et le construire manuellement à partir du code source.

Nous téléchargerons le paquet source pour UnrealIRCd en utilisant l’utilitaire wget intégré à Debian. Si vous devez télécharger wget, exécutez cette commande:

sudo apt-get install wget

Vous devrez obtenir le lien de téléchargement sur le site Web d’UnrealIRCd pour pouvoir procéder à l’installation. Rendez-vous sur la page de téléchargement official d’UnrealIRCd et téléchargez la dernière branche source stable.

Lorsque la page de téléchargement vous est présentée, vous pouvez voir un lien indiquant «Le téléchargement doit commencer dans 5 secondes, s’il ne clique pas ici». Il s’agit du lien vers le fichier contenant le code source Unreal, et le URL à utiliser avec * wget *.

Au moment de la rédaction de cet article, l’URL est * http: //unrealircd.org/downloads/Unreal3.2.10.4.tar.gz*.

Lorsque vous êtes connecté en tant qu’utilisateur * ircd *, assurez-vous que nous sommes dans notre répertoire personnel:

cd ~

Maintenant, téléchargeons le code source. * Avertissement: * L’utilisation de l’indicateur + - no-check-certificate + avec est un moyen moins sécurisé d’obtenir ce fichier. Vous devez utiliser une méthode différente si votre objectif est la sécurité par rapport à la vitesse:

wget --no-check-certificate http://unrealircd.org/downloads/Unreal3.2.10.4.tar.gz

Extrayez le code source dans son propre dossier:

tar xzvf Unreal3.2.10.4.tar.gz

Nous pouvons maintenant basculer vers le nouveau répertoire:

cd Unreal3.2.10.4

Et enfin, commençons le processus de construction. Utilisez le script intégré au paquet source:

./Config

Lisez les notes de version et appuyez sur * Entrée * pour continuer le défilement. Surveillez le pourcentage en bas pour ne pas manquer les questions. Une fois les notes de publication terminées et le script de configuration démarré, UnrealIRCd commencera à vous poser des questions.

What directory are all the server configuration files in?

Vous pouvez laisser cela à la valeur par défaut. Appuyez sur * Entrée * pour continuer.

What is the path to the ircd binary including the name of the binary?

Laissez ceci comme valeur par défaut également. Appuyez sur Entrée*.

What should the default permissions for your configurations files be?  (Set this to 0 to disable)

Une fois de plus, laissez la valeur par défaut. La prochaine question est importante:

Do you want to support SSL (Secure Sockets Layer) connections?

Répondre:

Par défaut, le script de configuration de UnrealIRCd ne prend pas en charge les connexions SSL, mais la saisie de Oui ici l’activera. C’est pourquoi nous avons installé OpenSSL plus tôt.

Vous devriez alors être invité à indiquer le chemin d’accès à OpenSSL sur le système. Puisque nous avons laissé APT gérer cela plus tôt pour nous, nous pouvons le laisser par défaut.

If you know the path to OpenSSL on your system, enter it here. If not
leave this blank (in most cases it will be detected automatically).

Appuyez sur Entrée*.

La question suivante est importante pour certains utilisateurs utilisant IPv6 sur leur Droplet.

Do you want to enable IPv6 support?

Vous ne devez répondre * Oui * à cette question que si vous avez activé IPv6 lors de la configuration initiale de votre Droplet. Si IPv6 n’est pas activé sur votre Droplet, vous pouvez conserver le paramètre par défaut («Non») et appuyer sur * Entrée *.

La question suivante concerne les utilisateurs qui utiliseront le démon IRC avec plusieurs serveurs liés dans un réseau IRC. Ziplinks est essentiellement un moyen d’économiser de la bande passante lors de l’échange de données entre serveurs IRC en compressant les données avant leur envoi. Vous n’êtes pas obligé de répondre * Oui *, mais il est recommandé de le faire. Si vous rencontrez des difficultés pour créer UnrealIRCd non documenté dans cet article, essayez de courir à nouveau et répondez * Non * à cette question.

Do you want to enable ziplinks support?

Répondre:

Lorsque le chemin vous est demandé, appuyez sur * Entrée *.

If you know the path to zlib on your system, enter it here. If not
leave this blank

Vous pouvez répondre aux questions suivantes en appuyant sur * Entrée *:

Do you want to enable remote includes?
Do you want to enable prefixes for chanadmin and chanowner?
What listen() backlog value do you wish to use?
How far back do you want to keep the nickname history?
What is the maximum sendq length you wish to have?
How many buffer pools would you like?
How many file descriptors (or sockets) can the IRCd use?
Would you like to pass any custom parameters to configure?

Une fois que vous avez fini de répondre aux questions, le script de configuration commence à préparer le répertoire source pour le processus de construction. Cela peut prendre quelques instants, alors n’hésitez pas à faire une courte pause.

Vous serez éventuellement invité à générer un certificat SSL pour IRCd. Sauf si vous avez déjà un certificat SSL émis par une autorité de certification appropriée, vous voudrez probablement laisser cette option par défaut (qui devrait être «Oui») - c’est ce que nous allons faire dans ce tutoriel.

Des informations sur le serveur vous seront demandées, telles que le pays, la province, la ville et l’organisation. Vous pouvez entrer ici tout ce qui vous semble logique. Vous devez entrer le nom de domaine de votre serveur lorsque vous y êtes invité.

Appuyez sur * Entrée * pour continuer. Vous verrez un message rapide sur les certificats signés. Appuyez sur * Entrée * à nouveau, et le processus de configuration est terminé.

Quatrième étape - Construire UnrealIRCd

C’est l’étape la plus simple de tous! Déplacez-vous dans le répertoire * ~ / Unreal [quelle que soit la version téléchargée] *:

cd ~/Unreal3.2.10.4

Construit le!

make

Le processus de construction devrait commencer. C’est la plus longue étape et si vous n’êtes pas déjà allé faire du thé ou du café au cours des deux dernières pauses, c’est le moment de le faire - il faudra quelques minutes pour terminer le processus de construction.

Cinquième étape - Configuration d’UnrealIRCd

Une fois le processus de construction terminé, vous êtes maintenant prêt à configurer votre nouveau serveur UnrealIRCd. Le fichier de configuration est écrit avec la syntaxe C-like. C’est long, mais assez simple.

Faites une copie de l’exemple de fichier de configuration:

cp ~/Unreal3.2.10.4/doc/example.conf ~/Unreal3.2.10.4/unrealircd.conf

Cela copie l’exemple de fichier de configuration anglais dans le répertoire racine Unreal. Si votre serveur fonctionne dans une langue autre que l’anglais, nous vous invitons à utiliser le code de langue à deux lettres correspondant à ce que votre public cible utilisera. par exemple. *. / doc.example.fr.conf * Au moment de la rédaction de cet article, l’allemand, l’espagnol, le français, le hongrois, le hollandais, le russe et le turc sont pris en charge parallèlement à l’anglais, mais dans ce didacticiel, nous allons aborder la configuration d’exemple en anglais.

Ouvrez le fichier de configuration avec votre éditeur de texte préféré:

nano ~/Unreal3.2.10.4/unrealircd.conf

Commençons maintenant par éditer le fichier de configuration à notre guise. Nous allons parcourir le fichier de configuration de manière séquentielle de haut en bas, de sorte que l’ordre des sections peut être un peu étrange. Aller de haut en bas est la méthode la plus simple pour nos besoins.

Notez que ce fichier de configuration contient de grandes sections commentées, et que certains paramètres n’affectent pas la plupart des utilisateurs, que nous ne montrerons pas en détail.

Modules

UnrealIRCd est présenté comme étant un IRCd modulaire, dans la mesure où vous pouvez créer des fonctionnalités pour le démon sans avoir à recompiler la base de code source complète et à la charger / la décharger à la volée. Ainsi, certaines fonctionnalités de base sont stockées dans deux modules de stock d’Unreal-le module et du module. Recherchez ces deux lignes:

// loadmodule “src/modules/commands.so”;
// loadmodule “src/modules/cloak.so”;

Pour ceux qui ne connaissent pas la syntaxe C-like, la double barre oblique (+ // +) indique à Unreal d’ignorer tout ce qui vient après les barres obliques d’une ligne. Plusieurs lignes peuvent être commentées en ajoutant + / * + et + * / + autour du matériau.

Décommentez les deux modules pour qu’ils ressemblent à ceci:

/* FOR *NIX, uncomment the following 2lines: */
loadmodule "src/modules/commands.so";
loadmodule "src/modules/cloak.so";

me \ {} - Nom du serveur

Continuez à faire défiler le fichier de configuration jusqu’à ce qu’une section intitulée + me {} + apparaisse. Il y aura d’abord un exemple commenté. Vous voulez le non commenté.

Cette section, appelée auparavant ligne M, définit des détails spécifiques sur le serveur pour le moment où les utilisateurs se connectent.

Définissez le * nom * sur le nom d’hôte du serveur.

Le champ * info * doit contenir un nom officiel pour votre serveur IRC, tel que «MyDomain IRC». Les champs de nom et d’information doivent être placés entre guillemets.

Le numéro par défaut doit rester dans le champ * numérique *, sauf si vous envisagez de lier plusieurs serveurs IRC ensemble. Avec plusieurs serveurs, vous devez absolument vous assurer que tous les serveurs du réseau ont une valeur différente dans ce champ. Cela sert d’identifiant unique à UnrealIRCd sous le capot.

me
{
       name "";
       info "";
       numeric 1;
};

admin \ {} - Coordonnées de l’administrateur

La section suivante est le bloc + admin {} + ou une ligne:. Encore une fois, faites défiler jusqu’à atteindre l’exemple non commenté.

Cela devrait contenir vos informations de contact en tant qu’administrateur du serveur. Vous pouvez mettre autant ou aussi peu que vous le souhaitez, mais vous devez avoir au moins une ligne.

La plupart des utilisateurs placent leur vrai nom sur la première ligne ("Bob Smith" dans l’exemple), un surnom sur la deuxième ligne ("bob" dans l’exemple) et une adresse électronique sur la troisième ligne. La seule exigence est que chacune de ces lignes soit placée entre guillemets et terminée par un point-virgule (+; +).

admin {
       "";
       "";
       "";
};

Nous pouvons maintenant passer à une configuration plus spécifique liée au serveur, au-delà des simples informations de contact.

class \ {} - Paramètres de connexion client et serveur

Le bloc suivant, le bloc + class {} +, définit ce que le serveur se souviendra de «clients» se connectant au réseau (vos utilisateurs) et de «serveurs» reliant le réseau (si vous ajoutez votre serveur IRC à réseau de serveurs).

Généralement, ces paramètres peuvent être laissés à la valeur par défaut pour la plupart des scénarios de petit réseau. Toutefois, si vous exécutez une opération réseau importante, vous souhaiterez peut-être lire la documentation sur le fonctionnement des valeurs dans ces blocs, car elles ont leur utilité, mais uniquement dans des situations très spécifiques.

Les paramètres par défaut sont corrects:

class           clients
{
       pingfreq 90;
       maxclients 500;
       sendq 100000;
       recvq 8000;
};

class           servers
{
       pingfreq 90;
       maxclients 10;          /* Max servers we can have linked at a time */
       sendq 1000000;
       connfreq 100; /* How many seconds between each connection attempt */
};

allow \ {} - Mot de passe du serveur, exceptions

Les blocs + allow {} + déterminent qui est autorisé à se connecter au réseau.

En règle générale, pour un serveur IRC de grande taille et ouvert, accessible à tous, vous devez laisser cette valeur par défaut.

Pour un serveur que vous souhaitez conserver privé ou protégé par un mot de passe, vous devez ajouter la ligne, comme indiqué dans le deuxième exemple + allow {} + bloc, au premier bloc global. Le premier bloc + allow {} + a les paramètres globaux pour les connexions client. Vous pouvez voir que les valeurs et sont toutes deux définies sur + * @ * +, ce qui signifie «tout le monde de partout».

Cela vous permet de demander aux utilisateurs un mot de passe lors de la connexion.

allow {
       ip             *@*;
       hostname       *@*;
       class           clients;
       maxperip 5;

};

/* Passworded allow line */
allow {
       ip             *@255.255.255.255;
       hostname       *@*.passworded.people;
       class           clients;
       password "f00Ness";
       maxperip 1;
};

Vous pouvez également commenter le deuxième bloc * allow * si vous n’avez pas besoin d’affiner vos paramètres autoriser avec différentes adresses IP ou d’autres paramètres de connexion.

Le bloc suivant, le bloc + allow channel {} +, définit quels types de canaux, ou salles de discussion, sont exemptés des restrictions définies ultérieurement dans le fichier de configuration.

Un peu d’explication: dans un bloc ultérieur, nous pourrons définir quels canaux ou mots-clés sont interdits dans les noms de canal. Ce bloc nous permet de définir des exemptions à ces interdictions. Vous pouvez généralement laisser cela seul, sauf si vous avez un cas particulier, et l’exemple de configuration nous montre comment cela fonctionne:

   allow channel {
       channel "#WarezSucks";
       class "clients";
   };

Cet exemple oblige le serveur à autoriser tous les clients à accéder au canal #WarezSucks, malgré le fait que les canaux correspondant à la chaîne générique + * warez * + plus tard dans le fichier de configuration sont restreints.

À moins que vous ne souhaitiez interdire un canal donné mais pas d’autres canaux, vous pouvez laisser cela sans problème.

oper \ {} - Paramètres de l’opérateur

Le bloc suivant est de loin l’un des plus importants: le bloc + oper {} +, ou + o: line +, qui définit vos informations d’identification en tant que propriétaire du serveur, ou ce que la plupart des utilisateurs appellent le IRCop.

Parcourez cette section avec précaution, car vous devrez vous assurer que tout est en ordre.

Le bloc + oper {} + définit ce que vous et tous les autres utilisateurs privilégiés êtes autorisés à faire en tant qu’IRCop. C’est là que sont définis vos administrateurs, y compris vous-même, et pour cette raison, de nombreuses options sont en jeu. Pour le moment, cependant, nous allons commencer avec un exemple de bloc.

Le fichier de configuration contient actuellement un exemple de bloc + oper {} +, avec le nom d’utilisateur + bobsmith +. Cependant, je vous recommande simplement de le supprimer entièrement et de le remplacer par votre propre bloc + oper {} +. Vous devrez ajouter un nouveau bloc pour chaque utilisateur que vous souhaitez avoir en tant qu’opérateur sur votre serveur.

Ci-dessous, j’ai un exemple o: line que vous pouvez copier et coller dans le fichier de configuration. Les valeurs indiquées dans doivent être modifiées par vous.

oper  {
   class clients;
   from {
       userhost *@*;
   };
   password "";
   flags {
       global;
       netadmin;
       can_gkline;
       can_gzline;
       can_zline;
       can_kline;
       can_unkline;
       can_restart;
       can_die;
       can_rehash;
   };
   swhois "";
};

Voici quelques explications sur chacun de ces éléments:

  • définit le type d’opérateur correspondant à cet utilisateur, si vous avez précédemment spécifié une classe autre que «clients» ou «serveurs». Vous n’avez pas besoin de changer cela.

  • Le sous-bloc + from {} + contient les noms d’hôte (spécifiés par + userhost +) autorisés à utiliser cette ligne o:. En règle générale, vous pouvez laisser cet élément _ _ _, car la plupart des clients (y compris vous-même) ont une adresse IP dynamique et, par conséquent, un nom d’hôte en constante évolution.

  • définit le mot de passe que vous utiliserez pour vous identifier auprès du serveur en tant qu’opérateur. Le mot de passe doit être placé entre guillemets, comme pour tout littéral de chaîne.

  • Le sous-bloc + flags {} + contient les privilèges que l’IRCop spécifié aura lorsqu’ils seront identifiés en tant qu’opérateur. La documentation officielle contient une liste de ce que fait chacun de ces indicateurs de privilège, mais nous allons les passer rapidement en revue pour vous donner une idée de base. de quoi s’attendre.

  • définit si cet IRCop sera considéré comme un IRCop sur tous les serveurs. Alternativement, vous pouvez utiliser + local +, où ils n’auront d’influence que sur les utilisateurs connectés au serveur sur lesquels leur ligne o: est activée, mais pour votre propre ligne o:, vous devez absolument utiliser + global +.

  • définit le niveau (ou le «rang») de l’IRCop lorsque les utilisateurs demandent l’aide d’un opérateur. + netadmin + est le plus élevé, suivi de + servicesadmin +, suivi de + admin +, suivi de + coadmin +, suivi d’aucun indicateur de rang du tout.

  • ,,, et définissent tous les privilèges permettant d’appliquer certains types d’interdictions d’utilisateurs dans le cas où vous devriez supprimer un utilisateur problématique. Dans le jargon IRC, ak-line` + désigne une interdiction de se connecter au serveur auquel la ligne est appliquée. Un + z-line +, également appelé +` g-line + sur d’autres types de serveurs non Unreal, est semblable à un k-line, sauf qu’il s’applique à tous les serveurs du réseau (tout en étant stocké localement sur le serveur l’interdiction est appliquée). A + gz-line + et +` gk-line` + sont identiques, sauf que leurs lignes respectives sont appliquées sur tous les serveurs du réseau. Ainsi, si le serveur auquel l’interdiction est appliquée, les interdictions de connexion ou de déconnexion du réseau, l’interdiction est toujours considérée comme active. + can_unkline vous permet de supprimer ces interdictions une fois définies.

  • indique que vous êtes autorisé à envoyer la commande / RESTART au serveur pour redémarrer IRCd, en déconnectant tous les utilisateurs du processus.

  • spécifie que vous êtes autorisé à envoyer la commande / DIE au serveur pour arrêter l’exécution d’IRCd, déconnectant ainsi tous les utilisateurs.

  • indique que vous êtes autorisé à envoyer la commande / REHASH, qui recharge la configuration actuellement active, ce qui est utile lorsque vous devez apporter des modifications sans redémarrer le serveur.

  • Enfin, l’option spécifie les messages spéciaux que les utilisateurs doivent voir lorsqu’ils s’exécutent sur un / WHOIS lorsque vous êtes identifié en tant qu’opérateur. Cette ligne peut être entièrement omise, mais j’aime bien en profiter pour mettre un message amusant comme "Qu’est-ce que tu regardes?"

Vous êtes invité à dupliquer la ligne o: ci-dessus, si nécessaire, pour pouvoir accueillir tous les utilisateurs que vous souhaitez devenir IRCops. Les petits réseaux n’ont généralement besoin que d’un ou deux opérateurs; Cependant, vous pouvez juger nécessaire d’ajouter davantage de lignes o: à mesure que votre réseau se développe, afin de garder les utilisateurs sous contrôle.

listen \ {} - IPs, Ports et SSL

Maintenant que votre ligne o: est configurée, nous pouvons passer à des parties plus critiques de la configuration. Dans le bloc + listen {} +, vous pouvez configurer les ports sur lesquels les utilisateurs pourront se connecter.

Les paramètres par défaut devraient convenir à la plupart des serveurs.

listen      *:6697
{
   options
   {
       ssl;
       clientsonly;
   };
};

listen *:8067;
listen *:6667;

Le signe "+ * " avant le signe ": +" de chaque déclaration listen signifie "tous". Ceci peut être remplacé par l’adresse IP à laquelle vous souhaitez associer UnrealIRCd. Si votre serveur a plusieurs adresses IP, vous aurez besoin d’une déclaration listen distincte pour chaque adresse.

Cependant, dans la plupart des cas, vous utiliserez simplement + listen *: 6667 +, et le caractère générique + * + tentera de lier UnrealIRCd à toutes les adresses IP du port spécifié après le signe +: + `, dans ce cas, le port + 6667 + `.

  • Remarque: * Pour prendre en charge les adresses IPv6 dans UnrealIRCd, vous devez l’avoir compilé avec la prise en charge IPv6 dans les instructions de construction ci-dessus et votre Droplet doit prendre en charge les connexions IPv6. Notez cependant que lorsque vous spécifiez des adresses IPv6, vous devez placer l’adresse elle-même entre [crochets] afin que le démon puisse distinguer entre ce qu’est l’IP et ce qu’est le port:

listen [fd3a::a1c9:b311:985e]:6667

Dans le sous-bloc + options {} +, l’indicateur + ssl + définit si le serveur autorise les connexions SSL. L’indicateur + clientsonly + (par opposition à + ​​serversonly +) vous permet de spécifier si ce port est réservé aux clients ou aux serveurs. Sinon, par défaut, les clients et les serveurs pourront se connecter sur ce port. Le paramètre + clientsonly + est correct.

  • REMARQUE: * Si vous recevez des erreurs «adresse déjà utilisée» lorsque vous démarrez UnrealIRCd pour la première fois, vous devrez remplacer les caractères génériques + * + par l’adresse IP de votre Droplet, car Unreal peut ne pas l’être. capable de déduire l’adresse IP principale à lier.

Le bloc suivant, + link {} +, peut être laissé avec les paramètres par défaut. Ce bloc est utilisé lors de la connexion de deux serveurs pour former un réseau IRC, ce qui n’est pas traité dans ce tutoriel.

link            hub.mynet.com
{
       username        *;
       hostname        1.2.3.4;
       bind-ip         *;
       port            7029;
       hub             *;
       password-connect "LiNk";
       password-receive "LiNk";
       class           servers;
               options {
                       /* Note: You should not use autoconnect when linking services */
                       autoconnect;
                       ssl;
                       zip;
               };
};

ulines \ {} - Services avec privilèges

Le bloc + ulines {} + définit les serveurs qui se connectent à notre réseau doivent avoir des privilèges élevés.

En règle générale, lorsque vous connectez services à un réseau IRC (les services sont un ensemble spécial de programmes et de démons qui ajoutent une multitude de fonctionnalités à IRC non spécifiées par le standard RFC, telles que l’enregistrement de pseudonymes), vous vous en servez alors. les privilèges sont supérieurs à ceux d’un serveur normal.

Vous ne devriez * pas * utiliser ceci pour un serveur normal. Remplacez les exemples de serveurs par vos propres serveurs de service:

ulines {
       ;
       ;
};

drpass \ {} - Mots de passe pour / RESTART et / DIE

Le bloc suivant, + drpass {} +, définit les mots de passe à définir dans le cas où IRCop choisirait d’utiliser les commandes / DIE ou / RESTART sur le serveur.

Même si IRCop a les privilèges pour le faire, il est judicieux de définir un mot de passe pour cela au cas où leurs privilèges IRCop seraient compromis. De cette manière, un compte d’opérateur compromis ne peut pas arrêter le serveur avec un simple accès IRCop.

drpass {
   restart "";
   die "";
};

log \ {} - Paramètres du journal

Le bloc suivant, le bloc + log {} +, peut être laissé avec les paramètres par défaut.

Vous pouvez read up on the documentation pour obtenir des informations sur le blocage du journal si vous le souhaitez, mais en règle générale, vous pouvez le laisser tel quel. UnrealIRCd est très minutieux dans la tenue de son journal.

alias \ {} - Alias ​​de commande

La prochaine série de blocs, les blocs + alias {} +, contient les définitions des alias de commande au cas où vous envisagez d’installer des services avec votre nouveau serveur IRC.

Si vous ne prévoyez pas de lancer des services avec votre nouveau serveur, vous pouvez simplement laisser ces blocs tels quels sans souci.

fichiers \ {} - Inclure les fichiers de configuration

Le bloc suivant que nous ajusterons est le bloc + fichiers {} +, dans lequel vous spécifiez certains fichiers spéciaux à inclure dans la configuration.

La plupart d’entre elles sont commentées, mais vous devriez au moins chercher, décommenter et spécifier les éléments suivants. * ATTENTION: * UnrealIRCd ne démarrera pas si vous spécifiez ici un fichier qui n’existe pas. Lorsque vous avez terminé de modifier la configuration, vous devez créer ces fichiers. Nous allons créer les deux fichiers ici plus tard dans le tutoriel.

Localisez et décommentez ces deux fichiers:

motd ircd.motd;

...

rules ircd.rules
  • Le paramètre + motd + spécifie le MOTD du serveur, ou le message du jour_, qui est envoyé à un utilisateur lors de la connexion ou lorsqu’il utilise la commande / MOTD.

  • Le paramètre + rules + spécifie le fichier contenant les règles de serveur fournies par la commande / RULES. Je vous recommande de réfléchir aux règles de votre serveur, car IRC était, par le passé, notoire pour certains partages de fichiers peu légaux, etc.

tld \ {} - Exceptions internationales

Le bloc suivant, le bloc + tld {} +, est fonctionnellement identique au bloc + fichiers +, sauf qu’il vous permet de définir des exceptions spéciales pour les utilisateurs se connectant depuis différents pays, comme indiqué par leur domaine de premier niveau. (par exemple + .au + pour l’Australie, + .ru + pour la Russie, etc.).

Vous voudrez peut-être commenter cette section, car les fichiers que vous créez dans cette section sont aussi nécessaires que les fichiers trouvés dans le bloc + files {} + approprié. Joignez cette section aux commentaires de style C:

/*
tld {
   ...
};
*/

De cette façon, cela ne s’applique plus à la configuration actuelle.

La section suivante est complètement optionnelle. Toutefois, comme nous couvrons la configuration de manière séquentielle, il peut être préférable de survoler au moins les instructions afin de comprendre le fonctionnement de chaque bloc.

ban \ {} - Ban surnoms, adresses IP et noms

Ces sections peuvent toutes être laissées avec les paramètres par défaut.

Dans cette section, nous allons examiner différentes façons de sécuriser votre serveur contre les utilisateurs malveillants via la configuration du serveur.

Le bloc suivant, le bloc + ban {} +, vous permet d’interdire l’utilisation d’un surnom particulier ou alternativement, d’une adresse IP particulière de se connecter au serveur, ainsi que de nombreuses autres options.

Notez que vous devez choisir un surnom ou une adresse IP, et non les deux, pour un bloc d’interdiction individuel.

ban nick/ip {
   mask [""/]; // Banned nick or IP
   reason "";
};

Ou simplement commenter:

/*
ban nick {
       mask "*C*h*a*n*S*e*r*v*";
       reason "Reserved for Services";
};
*/

Notez que vous pouvez également utiliser un masque d’hôte IRC réel (utilisateur@hôte.nom) dans le champ de masque au lieu d’un pseudo ou d’une adresse IP afin d’interdire un utilisateur particulier. Veillez simplement à spécifier + ban user + au lieu de + ban ip + `ou + ban nick + `.

Enfin, vous pouvez également interdire l’utilisation d’un + realname + particulier. Lorsque les utilisateurs configurent leurs clients pour la première fois, ils peuvent spécifier leur «nom réel» dans leurs paramètres utilisateur. Ce paramètre s’applique à ceux. Par exemple, pour interdire tous les utilisateurs nommés Jack:

ban realname {
   mask "";
   reason "";
};
  • Remarque: * L’interdiction ci-dessus est quelque peu inutile, étant donné que les utilisateurs peuvent simplement changer leur nom réel dans les paramètres du client, mais c’est là pour des raisons d’exhaustivité.

Vous pouvez également configurer des exceptions d’interdiction, telles que:

except ban {
   // My username is sigtau--don't ban me!
   mask
};

Maintenant que nous avons examiné les blocs + ban {} +, qui sont utilisés contre les utilisateurs, examinons un autre type de bloc pouvant être utilisé contre d’autres types d’activités malveillantes.

refuser \ {} - Restreindre les activités des non-utilisateurs

Les paramètres de blocage par défaut + deny {} + peuvent être laissés tels quels pour la plupart des serveurs.

Lorsque l’IRC était un protocole très courant dans les années 80, 90 et au début des années 2000, un autre protocole supplémentaire était demandé par les utilisateurs souhaitant communiquer directement via IRC sans serveur centralisé intermédiaire. Le protocole DCC (client à client direct) est né, permettant aux utilisateurs de faire des choses que l’IRC normal était incapable de faire, comme envoyer des messages de discussion directement les uns aux autres, ainsi que le partage de fichiers.

Le partage de fichiers a toutefois ouvert de nombreuses failles en matière de sécurité, car DCC a gagné en popularité parmi les utilisateurs qui n’étaient pas assez avertis pour discerner les fichiers pouvant être nuisibles ou malveillants. Ainsi, certains démons IRC ont commencé à restreindre certains types de demandes DCC afin d’empêcher ce type d’activité.

UnrealIRCd fait partie de ces démons IRC. Le bloc + deny + est capable de faire une foule de différentes tâches de restriction, y compris le blocage de ces types de transferts de fichiers. Par exemple, dans l’exemple de configuration, vous trouverez ce bloc:

deny dcc {
   filename "*sub7*"; // note that this supports wildcards
   reason "Possible Sub7 Virus";
};

Ainsi, toutes les demandes DCC envoyées sur le serveur contenant la chaîne «sub7» (basée sur le tristement célèbre Sub7 trojan des jours précédents de l’IRC) sont interdites.

Un bloc + deny + peut également empêcher les utilisateurs de rejoindre ou de créer certains types de canaux. Rappelez-vous plus tôt où nous permettions aux utilisateurs de rejoindre un canal appelé + # WarezSucks +? Voici le bloc + deny + que nous avons contrecarré:

deny channel {
   channel "*warez*";
   reason "Warez is illegal";
   class "clients";
};

Cela empêche tout utilisateur de créer un canal avec le mot "warez" dans le nom.

vhost \ {} - Masquage des noms d’hôte d’utilisateurs

La plupart des serveurs peuvent utiliser le bloc + vhost {} + par défaut.

Bien que certains packages de services IRC populaires vous permettent de le faire sans modifier le fichier de configuration, la manière traditionnelle de masquer les noms d’hôte des utilisateurs les uns aux autres était automatique et ne nécessitait pas que les utilisateurs possèdent un pseudonyme enregistré.

Ceci est utile pour les utilisateurs qui se connectent via un videur mais utilisent des pseudonymes qu’ils ne souhaitent pas enregistrer, ou si votre serveur ne dispose pas de services pour commencer.

Le bloc facultatif + vhost + définit un faux nom d’hôte pour l’utilisateur spécifié. Nous allons examiner le préréglage de la configuration exemple:

vhost {
   vhost       i.hate.microsefrs.com;
   from {
       userhost *@*.image.dk;
   };
   login       stskeeps;
   password    moocowsrulemyworld;
};

Cela permet aux utilisateurs se connectant à partir du nom d’hôte + * @ * *. Image.dk + de définir leur nom d’hôte sur + * @ i.hate.microsefrs.com +. Les utilisateurs utilisent généralement la commande / CHGHOST pour cela.

L’utilisation de cette commande a considérablement diminué en faveur de l’utilisation de packages de services IRC offrant les mêmes fonctionnalités. Par conséquent, dans la plupart des cas, vous n’avez pas besoin de bien comprendre le fonctionnement de ce bloc pour configurer un réseau IRC fonctionnant correctement.

set \ {} - Configuration réseau

Cette section est * absolument requise *! Le démon IRC ne sera * pas * démarré à moins que vous ne configuriez correctement cette section!

Si vous avez suivi, le bloc suivant doit en être l’un des derniers et, paradoxalement, l’un des plus importants: le bloc + set {} +.

Le bloc + set {} + contient une tonne d’options de configuration dont le serveur aura besoin pour fonctionner. Vous trouverez ci-dessous une copie de l’exemple de configuration tel que vous le verrez, avec des commentaires en ligne ajoutés expliquant le rôle de chaque option. Vous n’avez pas besoin de copier les commentaires dans le fichier de configuration à moins que vous ne les trouviez utiles.

La plupart, sinon toutes, de ces options sont requises, il vous suffit donc de les modifier à votre guise au lieu de les supprimer en gros. Notez que si vous envisagez de relier plusieurs serveurs, il est préférable de les conserver identiques et identiques sur tous les serveurs. Si vous ne prévoyez pas de lier des serveurs, ces options doivent toujours être configurées.

La plupart de ces options impliquent simplement le remplacement du nom de domaine exemple par votre propre nom de domaine.

Notez que vous devrez générer trois valeurs aléatoires pour les trois + cloak-keys.

set {
   network-name ""; // This is the name of the network reported to clients
                  // upon joining, and in many popular IRC clients, is the
                  // formal name used for tabbed view and logs.
   default-server ""; // Replace this with your server's domain--the
                    // daemon reports this to the client as being
                    // the network's proper hostname.
   services-server ""; // If you plan to add services to your
                          // IRC server, use the same domain as
                          // above, e.g. services.mydomain.com.
                          // Even if you aren't going to run
                          // services, you should do this anyway.
   stats-server ""; // Same as the above, except with stats
                    // stats servers.
   help-channel ""; // Set this to a be your network's official "help
               // channel" so that users have a place to go in case
               // they need help with something that only an IRCop
               // or server administrator could do.
   hiddenhost-prefix ""; // For anonimity purposes, UnrealIRCd masks users'
                // IP addresses using 'hidden hosts'--i.e. the host
                // user331.newyork.someISP.com is converted to
                // hiddenhost-3AB66E2-newyork.someISP.com.  This value
                // can be customized--change "rox" to whatever you
                // want (generally, alphanumeric lowercase) the hidden
                // host mask to be.  This is sometimes referred to as
                // "cloaking."
   cloak-keys {
       "";
       "";
       "";
   };

   // The above block are the random seeds used to generate unique cloaks for
   // each user without revealing their hostname to one another.  Generally, a
   // 10-20 character random alphanumeric mixed-case string will do.  Any online
   // password generator will work, or if you're in a pinch, just type whatever
   // alphanumeric string you want in all three string fields.
   //
   // THERE MUST BE EXACTLY THREE STRINGS.

   hosts {
       local       "";
       global      "";
       coadmin     "";
       admin       "";
       servicesadmin   "";
       netadmin    "";
       host-on-oper-up "";
   };

   // The above block can go mostly unchanged, apart from changing "roxnet.org"
   // to your domain of choice.  Setting host-on-oper-up automatically changes
   // the hostname of the IRCop user to be one of the above based on their rank
   // indicators in their o:line flags (`local`, `global`, `admin`, etc.).
};

Le dernier bloc de la configuration devrait être un autre bloc + set {} +, mais cette fois, les options sont exclusives de cette instance de serveur au lieu d’être cohérentes sur l’ensemble du réseau.

  • Vous devez définir l’adresse e-mail de kline-address ou le serveur ne démarrera pas. *

Le reste de ces paramètres peut être laissé par défaut pour la plupart des serveurs.

set {
   kline-address ""; // When k-lines are applied, users are sometimes
                   // instructed to contact a particular e-mail for
                   // more information.  This should be that e-mail.
   modes-on-connect "+ixw"; // Leave these at default; however if you need to tweak
                // what modes users are automatically assigned upon
                // connecting, you can view the full mode reference
                // here: http://www.unrealircd.com/files/docs/unreal32docs.html#userchannelmodes
   modes-on-oper "+xwgs";   // These are modes that are applied when a user first
                // authenticates as an IRCop.  These are generally left
                // alone as well, but you can use the above link again
                // if you, for some reason, need to tweak these.
   oper-auto-join "#opers"; // This is the channel that IRCops are set to
                // be force-joined to as soon as they authenticate as
                // an IRCop.  You can set multiple channels by
                // delimiting them with commas: #chan1,#chan2,...
   maxchannelsperuser 10; // This is the maximum number of channels any one user
                  // session can be joined to.  You may raise or lower this
                  // as needed, however it must be greater than or equal
                  // to 1.
   options {
       hide-ulines; // This means any server specified in the ulines {} block
                // will not appear when a connected user uses /list.
                // IRCops automatically override this when they use /list.
       show-connect-info; // This allows a user to see messages such as
                  // "Looking up your hostname..." and "Requesting
                  // identd..." when they are connecting.  Generally a
                  // good idea to keep this.
   };

   anti-spam-quit-message-time 10s; // In the past, IRC servers have had issues
                    // with users joining and quitting with long
                    // quit messages in rapid succession to spam
                    // the server.  This helps combat that by
                    // specifying how long a user must be
                    // connected before the server will allow them
                    // to specify a message when using /QUIT.
                    // You can leave this as it is or change it.
   oper-only-stats "okfGsMRUEelLCXzdD"; // You should probably leave this alone,
                        // it defines which server stats are
                        // restricted to be viewable by IRCops only.
                        // Since there's too many stat modes to list
                        // for an article, here's a hint: once your
                        // server is up and running, use the /stats
                        // command (while authenticated as an IRCop)
                        // to get a list of character->stat pairs,
                        // which can be used to modify this list.
   throttle { // When users disconnect, their clients will try to reconnect them.
          // This prevents it from happening too quickly, potentially putting
          // the server under high load.
       connections 3; // The number of connections allowed...
       period 60s; // ...per x seconds, as specified here.
   };

   anti-flood { // This configures anti-flood settings to prevent users from
            // flooding the server with unnecessary commands.
       nick-flood 3:60; // Allows 3 nick changes per 60 seconds.

       // Some other useful options to read up on are away-flood for how
       // many times a user can use /AWAY, or unknown-flood-amount for
       // users that send unknown garbage data to the server.
   };

   spamfilter { // This controls settings for spam filtering and default ban info.
       ban-time 1d; // This is the default duration of a k-line/z-line ban when
                // automatically set by a spam filter.
       ban-reason "Spam/Advertising" // The message used by automatic bans.
       virus-help-channel "#help"; // The channel users can turn to if they
                       // need help with viruses such as those
                       // sent over DCC.
   };
};

C’est ça!

Enregistrez vos modifications dans le fichier de configuration, assurez-vous qu’il est enregistré sous le nom + unrealircd.conf +. Appuyez sur * CTRL-x *, puis * y *, puis * Entrée *.

Félicitations, vous avez terminé la modification du fichier de configuration! Terminons les dernières étapes avant de pouvoir démarrer le serveur.

Sixième étape - Créer ircd.rules et ircd.motd

Deux fichiers doivent être créés avant qu’UnrealIRCd ne démarre: + ircd.rules + et + ircd.motd +. À l’invite du shell, tapez ce qui suit pour créer le fichier correspondant à vos règles de serveur:

nano ~/Unreal3.2.10.4/ircd.rules

Maintenant, vous pouvez taper vos règles de serveur en texte brut. Ils seront présentés aux utilisateurs lors de la saisie de la commande / RULES. N’oubliez pas que vous devez conserver les lignes de ce fichier de moins de 80 caractères pour éviter qu’elles ne soient automatiquement encapsulées par l’IRCd (si vous utilisez l’indentation, cela peut être pénible).

Enregistrez vos modifications. Créez le fichier du message du jour:

nano ~/Unreal3.2.10.4/ircd.motd

C’est ici que vous pouvez taper votre MOTD, qui sera montré au moment où les utilisateurs se connectent au serveur. La même limite de longueur de ligne de 80 caractères s’applique également ici. Les informations utiles à mettre dans ce fichier sont les chaînes en vedette, une ventilation rapide des règles du serveur, les IRCops actuels, etc. Vous pouvez mettre ce que vous voulez ici en texte brut.

Enregistrez vos modifications.

Si vous avez répertorié d’autres fichiers dans votre configuration, créez-les maintenant également.

Septième étape - Fichier journal IRCd

Pour vous assurer que l’IRCd a un emplacement pour stocker ses journaux, allons de l’avant et créons un fichier vierge spécialement à cet effet.

touch ~/Unreal3.2.10.4/ircd.log

Huitième étape - Démarrer UnrealIRCd

Toutes nos félicitations! Vous avez correctement configuré votre propre démon IRC.

Déplacer vers le répertoire Unreal:

cd ~/Unreal3.2.10.4

Démarrer le serveur de discussion:

./unreal start

Vous devriez voir un message comme celui-ci:

* Loading IRCd configuration ..
* Configuration loaded without any problems ..
* Initializing SSL.
* Dynamic configuration initialized .. booting IRCd.

S’il y a une erreur de démarrage, vérifiez le numéro de ligne et le paramètre mentionné dans l’erreur. Vous devriez pouvoir localiser le problème dans votre fichier de configuration.

Une fois le serveur démarré, vous pourrez vous connecter à votre serveur via votre client IRC préféré. Je vous recommande de le faire sur votre ordinateur local plutôt que sur un droplet, afin de vous assurer que les autres utilisateurs peuvent se connecter.

Étape neuf - Connecter un client IRC

Dans votre client IRC préféré, tapez:

/server  6667

Vous aurez besoin de votre domaine ou adresse IP, ainsi que du numéro de port (6667 dans cet exemple). Si vous définissez un mot de passe global pour le serveur dans le bloc + allow {} +, vous devrez également l’utiliser.

Quelques clients IRC populaires pour Windows sont mIRC, HexChat et Pidgin. Si vous êtes sous Linux, http://xchat.org [X-Chat] est disponible gratuitement. Pour OS X, X-Chat Azure et quelques applications payantes sur l’App Store sont disponibles.

Dixième étape - Authentification de l’opérateur

Une fois connecté, vous devrez vous authentifier en tant qu’IRCop. Pour vous authentifier en tant qu’opérateur, tapez:

/oper your-oline-username your-oline-password

Ce sont les identifiants que vous avez définis dans le bloc + oper {} +.

Vous devriez alors être associé de force aux canaux que nous avions précédemment spécifiés dans + oper-auto-join +, indiquant que vous êtes maintenant un opérateur IRC.

Note sur la connexion via SSL

Étant donné que l’instance de serveur a été configurée à l’aide d’un certificat SSL auto-signé, il est possible que certains clients ne vous autorisent pas à vous connecter via SSL en raison d’un certificat «non valide» ou «non approuvé». Il est recommandé de rechercher un moyen de générer un certificat SSL valide avec un service gratuit tel que CACert.org ou avec une autorité de certification payante de votre choix.

Profitez de votre nouveau serveur IRC! À partir de là, vous pouvez maintenant configurer des services ou commencer à inviter des utilisateurs. Bonne conversation!