SCANNER EN TANT QU'UTILISATEUR AVEC UN SCANNER SUR PORT PARALLELE
par Christian Chartier
A  r  t  i  c  l  e  s 





Introduction
Partie 1
Partie 2
Conclusion
Retour Index

Rappels sur les services réseau sous linux

Linux est un système d'exploitation multi-tâches multi-utilisateurs orienté réseau. Il possède en standard tout ce qu'il faut pour offrir des services réseau.

Ces services réseau sont offert par des programmes tournant en arrière plan (appelés démons, de l'anglais daemon, acronyme de Disk And Execution MONitor), qui écoutent le réseau pour savoir si une requête leur est adressée. Chaque programme écoute une adresse particulière qui s'appelle un port. A chaque port correspond un service réseau particulier. La liste des correspondances entre le numéro de port et le service figure dans le fichier /etc/services.

Sur un réseau, un service tournant sur une machine particulière est identifié par l'adresse IP de la machine (ou son nom) et le port sur lequel il écoute, sous la forme :

adresseIP:port ou nom_de_machine:port

Ces services (démons) peuvent être lancés au démarrage de la machine (par exemple le service d'impression cups ou lp, ou encore le serveur Web Apache) et tournent en permanence en arrière-plan. Ils consomment donc en permanence des ressources système.

Pour éviter de surcharger la machine par des services dont le besoin n'est pas permanent, il existe un « super-démon » appelé inetd , ou sur les distributions plus récentes xinetd. Ce super-démon est un service tournant en permanence, lancé au démarrage, dont le rôle est d'écouter l'ensemble des ports listés dans ses fichiers de configuration (/etc/xinetd.conf et les fichiers contenus dans /etc/xinetd.d/) et, en cas de requête sur l'un de ces ports, d'exécuter le programme correspondant.

Comment utiliser le réseau pour scanner ?

Sane offre un service réseau : le démon saned , qui permet de scanner via le réseau. Il n'est pas indispensable que ce service tourne en permanence, aussi préférera-t-on son lancement par le super-démon xinetd.

Il faut bien entendu configurer xinetd pour cela. L'intérêt de cette manoeuvre dans le cas qui nous intéresse est qu'on peut configurer l'utilisateur sous l'identifiant duquel sera lancé le démon saned. En l'occurence, l'accès au port parallèle nécessitant les droits de root, le démon saned sera lancé en tant que root.

Ces informations figurent dans un fichier nommé sane placé dans /etc/xinetd.d/

Oui, mais moi, je n'ai pas de réseau !

Il n'est pas nécessaire d'avoir plusieurs machines pour utiliser des démons réseau. L'exemple du démon d'impression cups le montre bien : on peut imprimer même si l'on n'a qu'une machine.

Dans ce cas, l'accès aux services réseau s'effectue via une interface réseau particulière : l'interface loopback , qui est en fait une interface réseau qui fait référence à la machine elle-même. On accède donc à un service réseau tournant sur la machine même par l'adresse de loopback qui est 127.0.0.1, ou par le nom de l'hôte local (localhost, ou le nom que vous avez donné à votre machine). Cependant, si vous utilisez un nom, la correspondance entre ce nom et l'adresse de loopback doit pouvoir être établie. Cette correspondance doit être établie par une entrée dans le fichiers /etc/hosts sous la forme suivante :

127.0.0.1 localhost.localdomain localhost

127.0.0.1 mamachine.mondomaine mamachine

D'autre part, le fichier /etc/host.conf doit contenir une ligne du type de celle-ci :

order hosts, bind
multi on

Notez bien la présence après order du mot hosts : ce mot dit au système d'aller un premier lieu chercher la correspondance entre nom et adresse dans le fichier hosts.

Pourquoi puis-je imprimer en tant qu'utilisateur, alors que j'accède au port parallèle ?

Sous linux, quand on imprime, on n'accède pas au port parallèle ! On ne fait que déposer un fichier d'impression dans un répertoire particulier du système, le répertoire de spool.

Ensuite, le démon d'impression (qui est, comme je l'ai dit plus haut, un service), qui regarde en permanence s'il y a quelque chose à imprimer dans le répertoire de spool, envoie le fichier d'impression sur le port parallèle. Et ce service d'impression s'exécute avec les droits root, donc il peut écrire sur le port parallèle.