Utiliser Unbound avec Slackware 13.37

Unbound est un résolveur DNS ayant des fonctions de cache, de recherche récursive et de validation DNSSEC. Il est développé par NLnet Labs, une organisation à but non lucratif, et sous licence BSD.

Les intérêts d'utiliser Unbound sont multiples (variété logicielle, facilité de configuration, support DNSSEC, ...) mais ne seront pas détaillés ici, ni même les aspects théoriques et pratiques de DNSSEC. Le but de cet article étant de ne proposer que les instructions d'installation (et relativement sommaires, il faudrait plus de temps pour tout détailler). La lecture des fichiers README, INSTALL et des fichiers de configuration est aussi recommandée.

Installer la bibliothèque ldns

Cette bibliothèque est aussi le fruit des NLnet Labs et se trouve sur leur site. On prendra soin, comme pour les autres logiciels concernés, de vérifier la validité du fichier par rapport au checksum SHA1 annoncé.

L'installation s'effectue par le trio de commandes classiques, avec une paramètre pour désactiver le support de l'algorithme de chiffrement russe GOST, qui n'est pas supporté par la version d'OpenSSL fournie avec Slackware.

./configure --disable-gost
make
make install
ldconfig

Ldns vient avec un outil d'interrogation DNS nommé drill, qui vient en remplacement de dig fourni avec le serveur BIND. L'installation de drill se fait à part de celle de ldns, mais de façon similaire :

cd drill
./configure
make
make install

Installer Unbound

Unbound dispose de son propre site web et une fois téléchargé, répond à la procédure de configuration et de compilation classique. Néanmoins, les pré-requis nécessitent de créer un groupe et un utilisateur unbound sur le système (le nom peut-être déterminé de manière différente à la configuration si on le souhaite).

groupadd unbound
useradd -g unbound -s /bin/false -c "User for Unbound" unbound
./configure --sysconfdir=/etc --disable-gost
make
make install

Là encore, on désactivera le support de l'algorithme GOST et l'on choisi de placer les fichiers de configuration dans le répertoire /etc par commodité.

Avant de lancer le daemon, quelques opérations seront nécessaires :

unbound-anchor

La validation DNSSEC requiert la connaissance de la Root Trust Anchor et doit donc être obtenue, soit automatiquement via cette commande (la clé est fournie en dur même si l'on est connecté à aucun réseau), soit auprès du site web de l'IANA. De fait, il recommandé d'installer la clé via unbound-anchor et de la comparer à celle de l'IANA (dont l'authenticité peut être établie via GPG).

La commande suivante permet de créer les certificats x509 utilisés pour l'administration d'Unbound :

unbound-control-setup

Les fichiers produits seront créés dans le même répertoire que le fichier de configuration, soit /etc/unbound dans notre cas.

Reste à modifier le fichier de configuration unbound.conf, abondamment commenté, et où l'on pourra définir de nombreuses options (en particulier control-enable: yes). Pour vérifier que tout soit correct, une commande supplémentaire est disponible :

unbound-checkconf

Reste à définir Unbound comme résolveur pour le système via le fichier /etc/resolv.conf et lancer le daemon.

Pour faciliter la gestion d'Unbound, j'ai écrit un script rc.unbound similaire au script rc.bind, avec des options de lancement, d'arrêt, etc habituels. Pour que ce script soit pris en compte au démarrage, outre le fait de le rendre exécutable, il faudra modifier le script /etc/rc.d/rc.inet2 en ajoutant les lignes suivantes, sous la section concernant BIND :

# Start the Unbound name server daemon:
if [ -x /etc/rc.d/rc.unbound ]; then
/etc/rc.d/rc.unbound start
fi

Vous pouvez maintenant utiliser un résolveur DNSSEC pour votre machine ou votre réseau.

Et de plus vous disposez de la base nécessaire pour utiliser dnssec-trigger, le dernier logiciel également proposé par les NLnet Labs. Celui-ci vise à rendre l'utilisation de DNSSEC plus simple pour l'utilisateur final, particulièrement l'utilisateur nomade devant se connecter à des réseaux WiFi improbables et proposant des services DNS du même tonneau. DNSSEC-trigger est encore en plein développement, il faudra donc sans doute essuyer quelques plâtres et faire preuve de débrouillardise pendant encore quelques temps.

Installons donc ce nouveau venu :

mkdir /etc/dnssec-trigger
./configure --sysconfdir=/etc/dnssec-trigger
make
make install

Rien de très particulier. Comme pour Unbound, la communication avec le daemon se fait par le biais de certificats x509 qu'il faut générer :

dnssec-trigger-control-setup

Reste enfin à lancer le programme :

dnssec-triggerd

Pour l'utilisateur final, un programme dnssec-trigger-panel sera lancé automatiquement à sa prochaine connexion sous KDE, du fait du fichier /etc/xdg/autostart/dnssec-trigger-panel.desktop installé.

Il est maintenant possible de se connecter à différents réseaux et de bénéficier de résolveurs DNSSEC. À noter que lors d'une connexion via WiCd le fichier /etc/resolv.conf sera réécrit par ce dernier et il faudra refaire un sondage ("reprobe") via dnssec-trigger-panel.

Quelques informations supplémentaires concernant DNSSEC, Unbound et DNSSEC-trigger :

- DNSSEC HOWTO en anglais, et toujours par les gens du NLnet Labs. Très complet, aspirine non fournie.

- Présentation d'Unbound par S. Bortzmeyer

- Présentation de DNSSEC-trigger par S. Bortzmeyer

publié le 20 octobre 2011