Product SiteDocumentation Site

5.5. Sécurisation de l'accès à l'impression (le problème lpd et lprng)

Imaginez, vous arrivez au travail et l'imprimante crache une quantité infinie de papier car quelqu'un est en train de provoquer un déni de service sur le démon d'impression. Méchant, n'est ce pas ?
Dans toute architecture d'impression UNIX, il y a un moyen de fournir les données du client vers le serveur d'impression de l'hôte. Dans les traditionnels lpr et lp, la commande du client copie ou crée un lien symbolique pour les données dans le répertoire de spool (c'est pour cela que ces programmes sont habituellement SUID ou SGID).
Pour éviter tout problème, vous devriez garder vos serveurs d'impression particulièrement sûrs. Cela veut dire qu'il est nécessaire de configurer le service d'impression pour qu'il autorise seulement les connexions d'un ensemble de serveurs de confiance. Pour ce faire, ajoutez les serveurs auxquels vous voulez autoriser l'impression à /etc/hosts.lpd.
Cependant, même si vous faites cela, le démon lpr accepte les connexions entrantes sur le port 515 de n'importe quelle interface. Vous devriez réfléchir au filtrage par un pare-feu des connexions provenant de réseaux ou hôtes qui ne sont pas autorisés à imprimer (le démon lpr ne peut être limité que pour écouter sur une adresse IP donnée).
lprng doit être préféré à lpr car il peut être configuré pour faire du contrôle d'accès basé sur l'adresse IP. Vous pouvez indiquer l'interface sur laquelle se lier (cependant d'une manière un peu bizarre)
Si vous utilisez une imprimante sur le système, mais seulement localement, vous ne voulez pas partager ce service sur le réseau. Vous pouvez considérer l'utilisation d'autres systèmes d'impression, comme celui fourni par cups ou http://pdq.sourceforge.net/ qui est basé sur les permissions utilisateurs du périphérique /dev/lp0.
Dans cups, les données d'impression sont transférées vers le serveur par le protocole HTTP. Cela veut dire que le programme client n'a pas besoin de privilèges spéciaux, mais cela nécessite que le serveur écoute sur un port quelque part.
Cependant, si vous voulez utiliser cups, mais seulement localement, vous pouvez le configurer pour se lier à l'interface de bouclage (loopback) en modifiant /etc/cups/cupsd.conf :
Listen 127.0.0.1:631
Il y a plusieurs autres options de sécurité comme autoriser ou interdire des réseaux et hôtes dans le fichier de configuration. Cependant, si vous n'en avez pas besoin, il peut être préférable de simplement limiter le port d'écoute. cups fournit également la documentation par le port HTTP, si vous ne voulez pas dévoiler des informations potentiellement utiles aux attaquants extérieurs (et que le port est ouvert), ajoutez également :
<Location />
 Order Deny,Allow
 Deny From All
 Allow From 127.0.0.1
</Location>
Ce fichier de configuration peut être modifié pour ajouter plus de fonctionnalités y compris des certificats SSL/TLS et du chiffrement. Les manuels sont disponibles sur http://localhost:631/ ou à cups.org.
FIXME : Ajouter plus de contenu (l'article sur http://www.rootprompt.org fournit certains points de vues très intéressants).
FIXME : Vérifier la disponibilité de PDG dans Debian, et s'il l'est, le suggérer comme le système d'impression préféré.
FIXME : Vérifier si Farmer/Wietse a une alternative pour le démon d'imprimante et si il est disponible dans Debian.