====== 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 [[:wiki:guide_du_debutant:irc | 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 : * L'interface WEB * Le client IRC 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 [[https://letsencrypt.org/|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 [[https://certbot.eff.org/|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