Internet Relay Chat (IRC) est quelque chose qui existe depuis les premiers jours d'Internet. Dans ce guide, je vais vous montrer comment configurer un serveur IRC avec InspIRCd avec Atheme pour des services IRC supplémentaires. InspIRCd est l'un des rares serveurs IRC écrits à partir de zéro et l'un des rares serveurs IRC à fournir un nombre réglable de fonctionnalités grâce à l'utilisation d'un système de modules avancé.
Conditions préalables
- Une instance de serveur Ubuntu 16.04 LTS x64.
- Un utilisateur sudo (ou compte root) .
- (Facultatif) Un nom DNS pour votre instance.
InspIRCd devrait fonctionner avec n'importe quelle taille d'instance. Ses exigences système minimales sont un processeur de 700 MHz et 300 Mo de RAM.
Mettre à jour le système
Lorsque vous vous connectez en tant qu'utilisateur sudo, vous pouvez mettre à jour le système vers le dernier état stable comme suit:
apt-get update && apt-get upgrade
Configuration du pare-feu
Durcissons d'abord un peu le VPS. Nous allons activer ufw
et ajouter quelques règles. Commençons par configurer les ports:
ufw allow 22/tcp
ufw allow 6667/tcp
ufw enable
Le pare-feu demandera une boîte de dialogue pour accepter les modifications. Appuyez simplement Ypour oui.
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Ensuite, nous pouvons installer InspIRCd, pour Ubuntu 16.04, ce package est disponible via le référentiel principal.
apt-get install inspircd
Une fois l'installation terminée, nous pouvons commencer à configurer le service. La configuration principale se trouve dans le /etc/inspircd/inspircd.conf
fichier et a la disposition d'un fichier XML.
nano /etc/inspircd/inspircd.conf
Recherchez d'abord la server
balise. Cette balise est l'endroit où vous entrez les détails de votre serveur / réseau, la plupart de ces paramètres sont visibles par vos utilisateurs.
name
: Nom d'hôte de votre serveur. Il n'a pas besoin d'être résolu, mais doit être la syntaxe correcte (par exemple:) sub.example.net
.
description
: Description du serveur.
id
: Le SID à utiliser pour ce serveur. Cela ne doit pas être commenté sauf en cas de conflit SID. Cela doit comporter trois caractères. Le premier caractère doit être un chiffre [0-9], les deux caractères restants peuvent être des lettres [AZ] ou des chiffres.
network
: Nom du réseau donné lors de la connexion aux clients. Doit être le même sur tous les serveurs du réseau et ne pas contenir d'espaces.
Dans notre guide, nous utiliserons les éléments suivants:
<server name="irc.example.net"
description="My EXAMPLE.NET server"
id="5AA"
network="ExampleNET">
Remplacez la balise d'origine par celle ci-dessus.
Ensuite, recherchez la admin
balise. Ces paramètres sont les détails administratifs de votre serveur. Ils s'affichent lorsque vous tapez la /ADMIN
commande.
name
: Vrai nom
nick
: Pseudo (de préférence ce que vous utilisez sur le réseau).
email
: adresse e-mail. Ne doit pas être valide mais cette adresse sera celle que vos utilisateurs devraient vous contacter en cas de problème.
Utilisons l'administrateur Xenial
:
<admin name="Xenial Xerius"
nick="xenial"
email="[email protected]">
Passez maintenant au bind address
. Cette balise est utilisée pour ouvrir le service. Par défaut, vous verrez l'IP localhost ( 127.0.0.1
). Cela signifie que le service ne peut pas être contacté par le monde extérieur. Ouvrons notre service en n'utilisant aucune adresse. Cela entraînera la liaison du service à toute interface Ethernet que la machine possède:
<bind address="" port="6667" type="clients">
La prochaine balise sera la power
balise. Cette balise définit deux mots de passe.
diepass
: Mot de passe à utiliser par les opérateurs s'ils souhaitent arrêter un serveur.
restartpass
: Mot de passe à utiliser par les opérateurs s'ils ont besoin de redémarrer un serveur.
Il est préférable de modifier ces mots de passe par défaut:
<power diepass="die123" restartpass="restart123" pause="2">
Les derniers paramètres que nous allons modifier sont les oper
paramètres. Ceux-ci définissent les connexions des opérateurs.
name
: connexion opérateur utilisée pour fonctionner (exemple:) /oper name password
.
password
: texte brut et clair
host
: Quels noms d'hôtes / IP sont autorisés à fonctionner. Plusieurs options peuvent être séparées par des espaces et les CIDR sont autorisés. Vous pouvez simplement utiliser *
ou @
pour cette section.
type
: De quel type d'opérateur s'agit-il. Le bloc ci - dessus devrait avoir trois classes déjà définies: NetAdmin
, GlobalOp
et Helper
. C'est NetAdmin
celui que nous utiliserons.
Modifiez la oper
balise en utilisant le contenu suivant. Notez que pour notre exemple, nous utiliserons " @
" pour l'hôte. Dans un environnement de production, il n'est pas souhaitable d'utiliser ceci:
<oper name="xenial"
password="mypassword"
host="*@*"
type="NetAdmin">
Avant de redémarrer le service, modifiez les fichiers motd
et rules
:
nano /etc/inspircd/inspircd.motd
Remplacez-le par le vôtre, par exemple:
This is the motd of example.net. Here you can list planned outages or information your users need to know about this IRC server.
Enfin éditez les fichiers de règles.
nano /etc/inspircd/inspircd.rules
Ajoutez vos propres règles, par exemple:
The first rule of Fight Club is: You do not talk about Fight Club. The second rule of Fight Club is: You DO NOT TALK ABOUT FIGHT CLUB!
Maintenant que tout est configuré, redémarrez le service IRC:
service inspircd restart
Pour vérifier que tout fonctionne, interrogez l' netstat
outil:
netstat -tulpn | grep -i inspircd
Il devrait lister le programme inspircd
, en écoutant sur le port 6666
:
tcp6 0 0 :::6667 :::* LISTEN 31313/inspircd
udp 0 0 0.0.0.0:39335 0.0.0.0:* 31313/inspircd
Pour tester le serveur, nous pouvons installer un client IRC terminal. Sous Windows, vous pouvez utiliser un programme tel que mIRC. Dans notre exemple, nous utiliserons weechat. Il s'agit d'un client IRC basé sur du texte qui peut être utilisé dans une session de terminal.
Installez l'application weechat via les référentiels:
apt-get install weechat
Une fois cette application installée, exécutez ce client IRC:
weechat
Pour afficher toutes les commandes que weechat a à offrir, vous pouvez demander la commande d'aide:
/help
Pour quitter weechat, vous pouvez taper la commande suivante:
/quit
Ajoutez notre serveur local à une connexion dans weechat:
/server add local localhost
Maintenant, nous pouvons nous connecter au profil de connexion nommé «local»:
/connect local
Vous verrez notre motd et nos règles s'afficher dans la fenêtre du terminal.
Pour vous promouvoir auprès d'un opérateur, tapez ce qui suit:
/oper xenial mypassword
Cela nous montrera une confirmation du succès:
22:40:34 local -- | User mode [+o] by irc.example.net
22:40:34 local -- | You are now a NetAdmin
C'est tout pour notre serveur IRC.
Installation des services IRC - Atheme
Atheme est un ensemble de services pour les réseaux IRC conçus pour les grands réseaux IRC avec des exigences d'évolutivité élevées. Il ajoute des services supplémentaires tels que NickServ (Nickname Registration) à votre réseau IRC.
Atheme peut être trouvé dans le référentiel Ubuntu:
apt-get install atheme-services
Une fois les fichiers binaires installés, extrayez l'exemple de fichier de configuration et copiez-le dans le atheme
dossier:
gunzip /usr/share/doc/atheme-services/examples/atheme.conf.example.gz
cp /usr/share/doc/atheme-services/examples/atheme.conf.example /etc/atheme/atheme.conf
Ensuite, modifiez ce fichier de configuration:
nano /etc/atheme/atheme.conf
Recherchez d'abord la loadmodule
commande de protocole. Cela devrait être défini comme suit:
loadmodule "modules/protocol/charybdis";
Remplacez charybdis
par le protocole de inspircd
:
loadmodule "modules/protocol/inspircd12";
Prochaine recherche du service name
:
name = "services.int";
Modifiez services.int
pour faire correspondre le nom de domaine ou l'adresse IP de votre serveur IRC:
name = "services.irc.example.net";
Une fois cela fait, recherchez le numérique:
numeric = "00A";
Maintenant, changez-le en une valeur différente de la valeur numérique utilisée dans la balise de serveur utilisée auparavant.
numeric = "77C";
Une fois cela fait, configurons le nom du réseau. Rechercher netname
:
netname = "misconfigured network";
Remplacez cette valeur par le paramètre réseau dans la balise de serveur.
netname = "ExampleNET";
Modifiez la valeur de hidehostsuffix
:
hidehostsuffix = "users.misconfigured";
Retirez le .misconfigured
:
hidehostsuffix = "users";
Remplacez ensuite le nom d'administrateur par celui que nous avons utilisé auparavant:
adminname = "xenial";
Faites correspondre le adminemail
à l'e-mail associé utilisé avant:
adminemail = "[email protected]";
Maintenant que cela est fait, nous devons créer une liaison montante pour nos services. Trouvez les deux uplink
blocs de code et commentez-les tous. Ajoutez /*
avant la uplink{
commande et */
à la fin de l'accolade fermante.
Il ressemblera à ceci:
/* this is an example for using an IPv6 address as an uplink */
/*
uplink "irc6.example.net" {
host = "::1";
password = "linkage";
port = 6667;
};
*/
Ensuite, ajoutez notre propre liaison montante. Cette liaison montante ne fonctionnera que sur l'IP de notre hôte local et sur le port 7001
. Spécifiez un mot de passe super secret (nous l'utiliserons plus tard):
uplink "services.irc.example.net" {
host = "127.0.0.1";
// password
// If you want to have same send_password and accept_password, you
// can specify both using 'password' instead of individually.
password = "SuperSecret123456";
port = 7001;
};
Enfin, recherchez nos définitions de services. Commencez par le nickserv
bloc en premier.
Dans le bloc nickserv, recherchez la host
balise et changez-la en ExampleNet/services/NickServ
:
nickserv {
...<<truncated>>...
/* (*)host
* The hostname we want NickServ to have.
*/
host = "ExampleNet/services/NickServ";
/* (*)real
* The realname (gecos) information we want NickServ to have.
*/
real = "Nickname Services";
...<<truncated>>...
Modifiez également le hostname tag
pour tous les autres services:
nickserv: ExampleNet/services/NickServ
chanserv: ExampleNet/services/ChanServ
global: ExampleNet/services/Global
infoserv: ExampleNet/services/InfoServ
operserv: ExampleNet/services/OperServ
saslserv: ExampleNet/services/SaslServ
memoserv: ExampleNet/services/MemoServ
gameserv: ExampleNet/services/GameServ
botserv: ExampleNet/services/BotServ
groupserv: ExampleNet/services/GroupServ
hostserv: ExampleNet/services/HostServ
helpserv: ExampleNet/services/HelpServ
alis: ExampleNet/services/ALIS
Une fois cela fait, enregistrez et quittez le fichier de configuration.
Pour tout tester, exécutez le atheme-services
binaire:
atheme-services
Cela devrait vous dire exactement si cela fonctionne ou non. Si vous ne recevez pas de sortie comme celle illustrée ci-dessous, revenez en arrière et vérifiez les erreurs dans le fichier de configuration:
[19/02/2018 23:06:24] db-open-read: database '/var/lib/atheme/services.db' does not yet exist; a new one will be created.
[19/02/2018 23:06:24] pid 1929
[19/02/2018 23:06:24] running in background mode from /
Activez maintenant le service en éditant le fichier des services:
nano /etc/default/atheme-services
Modifiez la ENABLED
valeur:
DAEMON_OPTS=""
ENABLED=1
Nous pouvons maintenant démarrer le service:
service atheme-services restart
Vérifiez son statut:
service atheme-services status
Cela renverra des résultats similaires:
● atheme-services.service - LSB: Atheme-services daemon init.d script
Loaded: loaded (/etc/init.d/atheme-services; bad; vendor preset: enabled)
Active: active (running) since Wed 2018-02-19 23:45:05 UTC; 8s ago
Docs: man:systemd-sysv-generator(8)
Feb 19 23:45:05 vultr.guest atheme-services[2810]: Starting Atheme IRC Services: atheme-service
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] atheme 6.0.11 is start
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] Module operserv/sgline
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] module_load(): module
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] /etc/atheme/atheme.con
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] db-open-read: database
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] pid 2824
Feb 19 23:45:05 vultr.guest atheme-services[2810]: [19/02/2018 23:45:05] running in background
Feb 19 23:45:05 vultr.guest atheme-services[2810]: .
Feb 19 23:45:05 vultr.guest systemd[1]: Started LSB: Atheme-services daemon init.d script.
Avant de terminer, nous devons ajouter nos services Atheme à InspIRCd:
nano /etc/inspircd/inspircd.conf
À la fin du fichier, ajoutez ces lignes:
<bind address="127.0.0.1" port="7001" type="servers">
<uline server="services.irc.example.net">
<link name="services.irc.example.net"
ipaddr="127.0.0.1"
port="7001"
allowmask="127.0.0.1"
sendpass="SuperSecret123456"
recvpass="SuperSecret123456">
<chanprotect noservices="no"
qprefix="~"
aprefix="&">
# Modules needed for services to function
<module name="m_chanprotect.so">
<module name="m_halfop.so">
<module name="m_services_account.so">
<module name="m_deaf.so">
<module name="m_spanningtree.so">
<module name="m_globops.so">
<module name="m_cban.so">
<module name="m_svshold.so">
<module name="m_hidechans.so">
<module name="m_servprotect.so">
<module name="m_chghost.so">
<module name="m_namesx.so">
<module name="m_uhnames.so">
Redémarrez maintenant le service InspIRCd:
service inspircd restart
Assurez-vous que tout fonctionne bien:
service inspircd status
Maintenant, redémarrez notre client weechat:
weechat
Connectez-vous à notre serveur local:
/connect local
Vous verrez immédiatement apparaître l'un de nos services Atheme: NickServ. Il vous accueillera avec des informations sur lui-même.
23:12:48 local -- | NickServ (NickServ@ExampleNet/services/NickServ): Welcome to ExampleNet,
| root! Here on ExampleNet, we provide services to enable the registration of
| nicknames and channels! For details, type /msg NickServ help and /msg
| ChanServ help.
Vous pouvez interroger NickServ et découvrir ses commandes disponibles avec les éléments suivants:
/msg NickServ help