Les articles de contrôle

Le fonctionnement et la nature même de Usenet font que les articles qui y sont postés sont très faciles à falsifier ; il en va de même des messages de contrôle qui permettent automatiquement de créer (newgroup), de supprimer (rmgroup) et de connaître la liste officielle (checkgroups) des forums. C'est pourquoi les administrateurs de nombreuses hiérarchies signent les articles de contrôle qu'ils émettent, en utilisant PGP. Il est vivement conseillé aux newsmasters d'honorer ces messages, ce qui se fait hiérarchie par hiérarchie.
Pour la génération de tels articles de contrôle, voyez par exemple signcontrol.py.

Nous allons voir pas à pas comment configurer le serveur de news INN pour accepter et automatiquement honorer les articles de contrôle. Il est vraiment utile de prendre le temps de réaliser ces quelques opérations puisque cela fait gagner un temps considérable par la suite étant donné qu'il n'y a plus trop à se soucier de l'actualisation de son fichier active. Le moyen le plus simple est d'utiliser GnuPG (GNU Privacy Guard, logiciel libre qui constitue une excellente alternative à PGP, Pretty Good Privacy). Le paquet gnupg est d'ailleurs une suggestion lors de l'installation d'inn2 sous Debian. Toutes les commandes spécifiées dans cette page se rapportent à l'installation de base d'inn2 sous Debian.
Une documentation complémentaire, plus générale et s'appliquant à plusieurs autres serveurs de news est disponible sur le site de l'ISC.

Configuration de control.ctl

Pour que les créations et suppressions de groupes soient gérées par INN, il est tout d'abord nécessaire d'avoir un fichier control.ctl à jour. Vous trouverez la dernière version sur le site de l'ISC. Téléchargez-la puis mettez-la dans le répertoire /etc/news avec les droits d'accès 640 news/news.

Vous pouvez parcourir le fichier et l'adapter suivant ce que vous souhaitez pour les différentes hiérarchies. La page du man de control.ctl pourra aussi vous être utile pour mieux comprendre le fonctionnement du fichier.
Regardons la syntaxe pour la hiérarchie francophone :

## FR (French Language)
checkgroups:control@usenet-fr.news.eu.org:fr.*:verify-control@usenet-fr.news.eu.org
newgroup:control@usenet-fr.news.eu.org:fr.*:verify-control@usenet-fr.news.eu.org
rmgroup:control@usenet-fr.news.eu.org:fr.*:verify-control@usenet-fr.news.eu.org

Cela indique que les trois types de messages de contrôle ci-dessus (checkgroups, newgroup et rmgroup) sont automatiquement honorés lorsqu'ils sont envoyés par control@usenet-fr.news.eu.org, qu'ils concernent la hiérarchie francophone « fr.* » et qu'ils ont été signés par l'administrateur de la hiérarchie « fr.* », à savoir control@usenet-fr.news.eu.org.
Les opérations seront réalisées automatiquement sans que vous en soyez averti, hormis pour les checkgroups, dans le cas où ils contiennent trop de modifications par rapport aux groupes actuellement présents sur votre serveur, pour lesquels seules les commandes éventuelles à exécuter vous-même au shell seront envoyées par courrier électronique sur le compte usenet de votre serveur (pensez donc à correctement rediriger ces messages dans votre table d'alias). Si vous souhaitez recevoir un courrier électronique après la création d'un nouveau groupe, il suffit d'ajouter un =mail à la fin, ce qui revient à écrire la ligne suivante pour newgroup, au lieu de celle par défaut dans control.ctl :

newgroup:control@usenet-fr.news.eu.org:fr.*:verify-control@usenet-fr.news.eu.org=mail

Ajout des clefs publiques dans le trousseau

Il s'agit maintenant d'ajouter les clefs publiques des hiérarchies que vous transportez dans le trousseau de clefs de l'utilisateur news. La plupart des clefs sont accessibles sur le site de l'ISC.

Voyons une méthode pour réaliser cela. Copiez-collez dans un nouveau fichier texte nommé clef-big8 la clef du Big-8 (les hiérarchies « comp.* », « humanities.* », « misc.* », « news.* », « rec.* », « sci.* », « soc.* » et « talk.* »).

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.7

mQCNAjFsLmQAAAEEAKPbDQI6oDtYJYPvYxt7I4PMxThaq51Z/5kqfW7C3dMn6vPL
d+UsXHfRzMaQXkLBR4nIaQj5OHVtbKCjVTVIMtgfgsPeh9GRSONW870S5HUTQcB7
eDhQqvvst1ZEowhTf/CX01chaxOfWq3ZPB09VVohQTmvRJn2BMJdOtO4janBAAUR
tBduZXdzLmFubm91bmNlLm5ld2dyb3Vwc4kAlQIFEDF33BHCXTrTuI2pwQEBiJQD
/1uiv20adyB2a3tzBYESEEhKtugAVHGRJQJE4Ar5PrcnovF3aNpLFumslIaAzCwP
XlCANMjFHg140IB6SgJ8W8XH15u+1cMOmqTbk0wtmVgeLOLaSMgNWt65FV4AUn7e
RZdhK8j/JKxE0a+6gKu4S0PiUDrvnCEWUPjlXiqsbnjR
=E8K8
-----END PGP PUBLIC KEY BLOCK-----

Puis importez la clef dans le trousseau du compte news à l'aide de la commande :

gpg --import clef-big8

Pour vérifier si tout s'est bien déroulé, vous pouvez afficher la liste des clefs importées, ce qui sera utile lorsque vous en aurez plusieurs :

gpg --list-keys

Les clefs sont enregistrées par défaut dans le répertoire ~news/.gnupg. Plus d'informations sur gpg peuvent être obtenues dans la page du man, comme notamment la commande --update-trustdb. Mais il est aussi simple ici de copier manuellement le fichier contenant les clefs de confiance dans le répertoire ~news/.gnupg :

cp pubring.gpg trustedkeys.gpg

Il est aussi possible de placer le trousseau de clefs dans le répertoire /etc/news/pgp, en utilisant la commande --homedir /etc/news/pgp, mais cela n'est pas obligatoire.

Test de pgpverify

Testons maintenant le fonctionnement de pgpverify, l'utilitaire inclus dans INN pour vérifier les signatures des messages de contrôle. Il faut en effet utiliser un script spécial puisque certains en-têtes des articles de contrôle sont signés, pour des raisons de sécurité relativement aux actions à entreprendre (Control, From, etc.) ; aussi, avant de vérifier leur signature, faut-il bien les réordonner et supprimer les en-têtes qui ont été ajoutés lors de la propagation de l'article.

Commençons par regarder si les chemins sont corrects dans ce script, c'est-à-dire si les fichiers mentionnés existent réellement sur votre système. J'ai pour ma part les lignes suivantes dans /usr/lib/news/bin/pgpverify :

$gpgv = '/usr/bin/gpgv';
# $pgp = '/usr/local/bin/pgp';

Nous sommes désormais en mesure de tester si pgpverify est bien fonctionnel (avec la clef du Big-8) grâce au message de test présent sur le site de l'ISC.

wget https://ftp.isc.org/pub/pgpcontrol/sample.control
pgpverify -test < sample.control

Cela doit renvoyer le fichier suivi de sa signature et du résultat de gpgv, à savoir que la signature est valide. Si tel n'est pas le cas, il faut revoir les opérations réalisées depuis le début.

Paramétrage d'INN

Pour finir, il faut indiquer au serveur de news comment gérer les articles de contrôle. Il s'agit en premier lieu d'activer controlchan dans le fichier newsfeeds présent dans le répertoire /etc/news en vérifiant la présence des lignes suivantes :

controlchan!\
        :!*,control,control.*,!control.cancel\
        :AC,Tc,Wnsm:/usr/lib/news/bin/controlchan

Il faut en effet bien que les messages de contrôle soient traités par quelque chose, en l'occurrence controlchan, lorsqu'ils vous parviennent de vos pairs. Et il faut aussi préciser dans le fichier inn.conf du même répertoire :

pgpverify: true
pathcontrol: /usr/lib/news/bin/control

En cas de modification apportée à ce fichier, il faut ensuite relancer INN par ctlinnd xexec ''.

Et voilà ! C'est tout ! Au prochain article de contrôle reçu par votre serveur, tout devrait être traité automatiquement. Si tel n'est pas le cas, revoyez la configuration et analysez le message d'erreur présent dans /var/log/news/news.notice. En cas de problème, n'hésitez pas à demander de l'aide dans le groupe fr.comp.usenet.serveurs ou news.software.nntp.

En attendant l'arrivée du prochain checkgroups ou si vous transportez des hiérarchies qui n'émettent pas d'articles de contrôle, vous pouvez regarder la page sur les listes des groupes des hiérarchies. Notez que cela n'est plus nécessaire à partir du moment où les articles de contrôle sont correctement honorés par votre serveur de news et que vous avez déjà reçu un message de type checkgroups (il arrive que ceux-ci soient cependant à exécuter manuellement ; seul le script à exécuter vous est envoyé par courrier électronique, comme expliqué dans la première partie de cette page).
Et n'oubliez pas de mettre à jour les descriptions des groupes dans le fichier /var/lib/news/newsgroups !

 

↑ Retour au haut de cette page