Table des matières

ZNC

Sur IRC, on ne peut pas rester connecté 24h/24h et cela peut être agaçant car nous perdons tout les élements des discussions…

ZNC est un bouncer IRC qui n’est rien d’autre qu’un proxy IRC. Celui-ci sera connecté en permanence à vos salons de discussion et fera office de passerelle entre votre client et vos serveurs irc. Vous pourrez par exemple consulter des messages diffusés en votre absence ou masquer votre identité.

À MiNET

Minet possède un serveur ZNC actuellement en beta sur la dev.

Déjà, il vous faudra maîtriser les bases d'IRC.

Par défaut, seules 3 connexions depuis la même IP sont tolérées, mais des exceptions peuvent être accordées par les opérateurs Rezosup, il y en a 1 par bureau MiNET chaque année. Cette limite a été augmenté à 20 connections sur 157.159.40.33 le 08/16/17

Connexion

Vous vous y connectez comme à un serveur classique, avec votre client IRC préféré :

IP: 157.159.40.33
Port: 443
SSL: oui

Par exemple sur irssi :

/network add minet
/server add -net minet -auto -ssl 157.159.40.33 443
/save
/connect minet

Le service ZNC écoute bien sur le port 2223 mais une redirection iptable du 443 vers le 2223 est configuré pour que le bouncer soit accessible depuis eduroam.

Une fois connecté vous devez vous authentifier à l'aide de vos identifiants du LDAP, à l'aide de la commande

/quote PASS login:password

Attention, le mot de passe apparaîtra en clair, il suffit d'ajouter la ligne suivante dans le fichier de conf ~/.irssi/config

address = "157.159.40.33";
chatnet = "minet";
port = "443";
password = "login:password";
use_ssl = "yes";
ssl_verify = "no";
autoconnect = "yes";

Comme le mot de passe par défaut est le mot de passe de votre compte LDAP, vous pouvez le changer via l'interface web.

Configuration

Pour configurer votre compte, deux solution sont possibles :

Pour des raisons de simplicité nous parlerons ici de la configuration via l'interface web. Dans votre navigateur web préféré, aller à l'URL : https://157.159.40.33

Loggez-vous avec votre compte du LDAP. Dans l'onglet “Your settings” réglez vos informations perso. Puis faire Add dans Network, et dans “Servers of this IRC network:” ajouter l'ip du serveur irc minet : 157.159.40.49 +6697 Finalement validez, retournez sur irssi et c'est gagné !

Depuis la version 1.6, il est nécessaire d'ajouter l'empreinte digitale (fingerprint) du certificat utilisé par le réseau : Dans “Your settings”, éditez le réseau ajouté et remplissez le champ “fingerprint” avec celle indiquée par votre client IRC s'il a râlé à la première connexion.

Vous pouvez ensuite ajouter les Channels auxquels vous souhaitez être connectés automatiquement : #MiNETChill, #MiNET, #int etc.

Quand vous vous connecterez, vous pourrez lire le buffer qui contient ce qui a été dit pendant votre absence :

18:35 -!- Irssi: #MiNETChill: Total of 12 nicks [1 ops, 0 halfops, 0 voices, 11 normal]
18:35 < ***> Buffer Playback...
18:35 < manwefm> test pour le wiki
18:35 < manwefm> test pour le wiki
18:35 < manwefm> test pour le wiki
18:35 < manwefm> test pour le wiki
18:35 < ***> Playback Complete.

Pour quitter, vous pouvez quit, mais grâce au bouncer, vous resterez connecté.

/quit

Redirection de port

On utilise iptables-persistent : https://wiki.debian.org/iptables

Script exécuté à chaque démarrage :

/etc/network/if-pre-up.d/iptables

Les règles sont sauvegardées dans :

/etc/iptables/rules.v4

SSL

Depuis la version 1.6 ; ZNC est plus regardant vis à vis du SSL et un certificat auto-signé n'est plus utilisable (impossible de désactiver la vérification du certificat, car, selon les mainteneurs, les gens qui désactivent la vérification du certificat ne devraient simplement pas utiliser SSL).

Ainsi, nous utilisons letsencrypt qui permet d'obtenir des certificats d'une autorité de certification simplement, les certificats sont délivrés si l'on est capable de montrer que l'on est bien maître du nom de domaine à certifier.

De façon pratique, nous utilisons le client certbot (CLI).

apt install -t jessie-backports certbot

Pour faire une nouvelle demande de certificat,

certbot certonly --standalone --tls-sni-01-port 2223 -d znc.minet.net

Le mode standalone lance un serveur écoutant sur le port 443 (par défaut, modifiable avec –tls-sni-01-port, nécessaire pour le ZNC à cause du forwarding expliqué dans la section précédente), il faut donc au préalable couper tout autre serveur tournant sur ce port. Enfin, le nom de domaine à certifier suis le -d (il doit être résolvable et l'ip obtenu routé vers la machine depuis laquelle la commande est lancée).

Pour renouveler le certificat (expire tous les 90 jours), certbot propose une commande vérifiant l'état du certificat, on rentre ainsi dans la crontab root :

@weekly  /usr/bin/certbot renew --standalone --tls-sni-01-port 2223 --pre-hook "pkill -SIGUSR1 znc && pkill znc" --renew-hook "/home/znc/.znc/znc-ssl-update.sh" --post-hook "sudo -u znc znc" --quiet

certbot propose aussi des hooks pour, par exemple, dans le pre-hook, fermer le service pouvant tourner sur le port utilisé par le serveur lancé par certbot en mode standalone, dans le post-hook, relancer le service qui vient d'être arreté, et dans le renew-hook, déployer les certificats qui viennent d'être renouvelés.

Pour déployer les certificats sur le ZNC, on utilise le script suivant (celui du renew-hook) :

#!/bin/bash
cat /etc/letsencrypt/live/znc.minet.net/{privkey,cert,chain}.pem > /home/znc/.znc/znc.pem
chown znc:znc /home/znc/.znc/znc.pem