Vous êtes sur la page 1sur 10

Chapitre 6

INETD& XINETD

INETD& XINETD

I.

Dmon INETD

1. Introduction
Avant lcriture dinetd, tous les services rseau taient dmarrs en arrire-plan au dmarrage du systme. Peu importe si ces processus allaient effectivement tre utiliss ou non, Ces services sont dits fonctionnant en mode autonome ou standalone . Au fils du temps, le nombre de dmons dvelopps pour rpondre des besoins les plus divers a constamment augment, tel point que des problmes de performance ont commenc se poser. Pour rsoudre cette difficult, luniversit de Berkeley a dvelopp inetd (aujourdhui xinetd), qui peut tre considr comme un Super Serveur Internet , l'coute sur plusieurs ports. Il sagit galement dun processus fonctionnant en arrire plan, mais dont le rle est de recevoir les demandes de connexion de plusieurs clients (telnet, ftp,...) et de lancer le serveur correspondant la demande. A son dmarrage il consulte les fichiers: /etc/services qui contiennent la liste gnrale des services TCP/IP avec leur numro de port et le protocole de transport associ. /etc/inetd.conf qui contient la liste des services activs sur une machine donne

Dans les distributions rcentes, inetd a t remplac par xinetd. Le principe est trs similaire, la seule diffrence que, dans /etc/xinetd.d, chaque service (telnet, ftp, pop3...) dispose de son propre fichier de configuration.

2. Fichier /etc/services :
Syntaxe gnrale : <nom-service> Exemple : $ more /etc/services : tcpmux 1/tcp daytime 13/udp netstat 15/tcp ftp-data 20/tcp ftp 21/tcp telnet 23/tcp smtp 25/tcp time 37/udp <nport/protocole>

mail timserver

3. Fichier /etc/inetd.conf
Syntaxe gnrale : <nom_service> <type-sock> <protocole> <flags> <user> <path-service> <args>

SALIM

Chapitre 6

INETD& XINETD

nom_service : Dfinit le nom du service, gnralement pour correspondre un service mentionn dans le fichier /etc/services. type-sock protocole : stream tcp ou dgram udp ou raw ip flags : Dtermine si le service est mono-fil (single-threaded, wait) ou multi-fils (multithreaded, nowait). user : Dtermine l'ID d'utilisateur sous lequel le processus est excut path-service : Dfinit le chemin du fichier binaire excutable devant tre lanc args : arguments de lapplication en noubliant pas largument 0 (nom de lapplication) Exemple : # more /etc/inetd.conf ftp stream tcp telnet stream tcp #shell stream tcp #login stream tcp #exec stream tcp

nowait nowait nowait nowait nowait

root root root root root

/usr/sbin/ftpd /usr/sbin/telnetd /usr/sbin/rshd /usr/sbin/rlogind /usr/sbin/rexecd

ftpd telnetd rshd rlogind rexecd

Le # devant une ligne rend la ligne inactive donc le service non disponible Ici, il n'y a que les services telnet et ftp qui sont activs.

4. Fonctionnement de inetd :
Lors d'une demande de connexion TCP (Ex : telnet), inetd extrait le numro de port destination du message, il recherche le nom de service dans "/etc/services" et vrifie si le service est activ dans le fichier /etc/inetd.conf. En cas de succs, il cre un processus et lance l'excution du binaire (exec) dont le chemin est spcifi dans "/etc/inetd.conf". Les messages qui suivent seront dirigs vers ce processus.
/etc/services /etc/inetd.conf Lanc au dmarrage du systme

Client

Serveurs

telnet
Socket associe au port 1635

inetd 23

In.telnetd

httpd

80

TCP/IP

TCP/IP

SALIM

Chapitre 6

INETD& XINETD

5. Activation/arrt de inetd :
Linux active Inetd lors de la phase d'initialisation. Si tel n'est pas le cas sur votre systme, entrez :
# chkconfig -add inetd

Il est possible darrter ou de relancer le service de manire interactive : # /etc/init.d/inetd stop #/etc/init.d/inetd start Si on modifie le fichier /etc/inetd.conf, il faut prvenir le demon inetd en lui envoyant le signal n 1 (SIGHUP) # ps e | grep inetd 309 ? 00 :00 :00 inetd # kill HUP 309

II.

TCP Wrappers
1. Introduction

Le mcanisme de TCP_wrappers permet de contrler et de restreindre l'accs certain services rseau. Il offre une couche de protection. En fait il utilise le dmon tcpd qui intercepte les demandes de connexion un service et vrifie dans les fichiers hosts.allow et hosts.deny si le client est autoris utiliser ce service ou non. Dans tous les cas de figure tcpd transmettra syslogd (deamon de log) votre demande (cette demande se retrouvera loguer dans le fichier /var/log/securite). Sur les versions de linux actuelles, tcpd est install par dfaut. Par contre il n'est pas actif dans sa partie contrle d'accs. TCP_Wrappers est un lment mettre en uvre pour scuriser une machine sous linux, il ne peut toutefois pas remplacer compltement un vrai FireWall. 2. Fonctionnement du wrapper tcpd
/etc/services /etc/inetd.conf /etc/hosts.allow /etc/hosts.deny

Client

Serveur

telnet
Requte sur port 23

inetd

tcpd

In.telnetd

Lorsqu'une requte client est reue par un service envelopp avec TCP, ce dernier suit les tapes lmentaires ci-dessous :
SALIM 3

Chapitre 6

INETD& XINETD

Le service envelopp avec TCP analyse le fichier /etc/hosts.allow de manire squentielle et applique la premire rgle spcifie pour ce service. Si une rgle correspond au service, il autorise la connexion. Sinon, il passe l'tape suivante. Le service envelopp avec TCP analyse le fichier /etc/hosts.deny de manire squentielle. Si une rgle correspond au service, il refuse la connexion. Sinon, il autorise l'accs au service. Ci-aprs figurent des points importants qu'il convient de prendre en compte lors de l'utilisation d'enveloppeurs TCP pour protger des services rseau : Parce que les rgles d'accs contenues dans le fichier hosts.allow sont appliques en premier, elles ont priorit par rapport aux rgles spcifies dans le fichier hosts.deny. Par consquent, si l'accs un service est autoris dans hosts.allow mais qu'une rgle refusant l'accs ce mme service est contenue dans le fichier hosts.deny, cette dernire ne sera pas prise en compte. tant donn que les rgles dans chaque fichier sont lues de haut en bas et que la premire rgle applique un service donn est la seule rgle prise en compte, l'ordre de ces dernires est extrmement important. Si aucune rgle contenue dans l'un ou l'autre des fichiers ne s'appliquent au service ou si aucun de ces fichiers n'existe, l'accs au service est autoris. Des services envelopps avec TCP ne mettent pas en cache les rgles des fichiers d'accs d'htes, ainsi, tout changement apport hosts.allow ou hosts.deny prend effet immdiatement sans devoir redmarrer les services rseau 3. Les fichiers Hosts.allow et Hosts.deny :

Syntaxe gnrale des deux fichiers :


<daemon list>: <client list> [: <option>: <option>: ...]

<daemon list> : Correspond une liste de noms de processus (pas de noms de services) spars les uns des autres par une <client list> : Correspond une liste de noms d'htes ou d'adresses IP d'htes <option> : Correspond une action facultative ou une liste d'actions facultatives spares les unes des autres par une virgule, devant tre excute lorsque la rgle est applique.

Remarque : le format dtaill des fichiers hosts.allow et hosts.deny est dcrit dans le manuel hosts_access Exemples : # more /etc/hosts.allow ALL : LOCAL in.ftpd : 192.168.0., 10.194.168.0/255.255.255.0, in.telnetd : .ac-creteil.fr

192.168.1.1

SALIM

Chapitre 6

INETD& XINETD

On autorise tout les ports depuis un accs local, et on autorise ftp pour les machines venant du rseau 192.168.0.0, ainsi que les machines du rseau 10.194.168.0 (avec une autre notation) et enfin la seule machine qui a pour adresse 192.168.1.1 #more /etc/hosts.deny ALL:ALL Le fichier hosts.deny est simple comprendre, il interdit tout par dfaut. Le fichier hosts.allow indique les services quon veut autoriser (Le nom du service doit tre identique au nom qui se trouve dans inetd.conf). On peut contrler plus finement les accs sa machine en contrlant le fichier de log, en envoyant un message la personne qui cherche se connecter, on peut aussi se faire envoyer des messages en utilisant la commande mail. Voici un exemple un peu plus complet et complexe que le prcdent : # more /etc/hosts.allow ALL: LOCAL .ucam.ac.ma EXCEPT sousdomaine.ucam.ac.ma: ALLOW in.ftpd : ALL : banners /root/messages.txt : spawn (echo " Accs au serveur ftp par l'adresse" %a "le " 'date') >> var/log/ftp.log & sshd : 192.168.0. in.telnetd : 10.94.243.1 EXCEPT PARANOID : spawn (/bin/mail -s "Alert le nom du hote et ladresse IP ne correspondent pas" root@%H)&

La ligne 1

indique que tous les ports sont ouverts pour la machine LOCAL et pour le domaine ucam.ac.ma sauf pour sousdomaine.ucam.ac.ma autorise toutes les connexions sur le service ftp, mais envoi un message sur la machine qui se connecte, reste placer le texte dans le fichier message.txt. spawn vous permet de faire appel la commande echo qui envoie un message dans le fichier de log ftp.log avec l'adresse de la machine qui se connecte %a et la date. que seul le rseau 192.168.0.0 peut se connecter via ssh la machine. autorise la connexion en telnet depuis la machine 10.94.243.1 uniquement si l'adresse IP de la machine et le nom d'hte correspondent. On envoie alors un message en utilisant la commande mail.

La ligne 2

La ligne 3 La ligne 4

Le fichier hosts.deny restant avec ALL : ALL Les variables que vous pouvez utiliser sont : %a L'adresse IP du client %A L'adresse IP du serveur %c Informations disponibles sur l'utilisateur %d Le nom du dmon %h Le nom du client ou son adresse IP si on ne peut avoir le nom %H Le nom du serveur ou son adresse IP si on ne peut avoir le nom %n Idem mais en vrifiant le reverse DNS
SALIM 5

Chapitre 6

INETD& XINETD

%N %p %s %u

Idem pour le serveur Le pid du daemen Informations disponibles sur le serveur Nom de l'utilisateur

Les tentatives d'accs depuis des machines extrieures sont toutes enregistres dans des fichiers particuliers. Ces enregistrements sont effectus par le processus syslogd qui son dmarrage lit le fichier /etc/syslog.conf pour trouver dans quel(s) fichier(s) il doit enregistrer les diffrentes tentatives d'accs. Extrait de /etc/syslog.conf # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none; /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure Extrait de /var/log/messages Feb 3 18:02:52 ns1 ftpd[1051]: FTP session closed Feb 3 18:03:31 ns1 syslogd 1.3-3: restart. Feb 3 18:07:34 ns1 in.ftpd[1057]: refused connect from cli1.archinet.edu Feb 3 18:07:46 ns1 in.ftpd[1058]: connect from ns1.archinet.edu uid=0) Feb 3 18:10:57 ns1 login[1063]: LOGIN ON ttyp3 BY mlx FROM puce

III.

XINETD

1. Introduction
xinetd remplace inetd avec de nouvelles possibilits et un paramtrage plus fin. Le principe est le mme que celui de TCP_Wrappers avec des fonctionnalits en plus. Il gre la connexion de certains protocoles (telnet, pop, ftp,....) et permet d'autoriser ou d'interdire les connexions sur la machine en fonction de ladresse IP, du nom d'hte du client ou de son domaine, de l'heure, du taux de charge, du nombre de connexions simultanes, du nombre de connexions entrantes par seconde, ce qui permet de limiter les tentatives de Deny of Service. Si on ne doit pas utiliser les services grs par xinetd, il est prfrable de ne pas le dmarrer. Il vaut mieux choisir entre inetd et xinetd xinetd est un lment mettre en uvre pour scuriser une machine sous linux. Il n'est pas en mesure de grer tous les protocoles.

2. Fonctionnement de xinetd
Lorsque vous souhaitez vous connecter sur une machine distante en telnet, par exemple, le xinetd intercepte votre demande de connexion et vrifie dans le fichier xinetd.conf, puis dans /etc/xinetd.d/telnet si le service telnet par exemple est utilisable.

SALIM

Chapitre 6

INETD& XINETD

Si la rponse est positive, votre demande de connexion sera autorise, sinon vous serez rejet. Dans tous les cas de figure et cela est l'autre fonction de xinetd, il transmettra syslogd (deamon de log) votre tentative de connexion. xinetd
Rpertoire

/etc/xinetd.d /etc/xinetd.conf

login

telnet

ftp

Remarque : Un service gr par inetd = une ligne du fichier /etc/inetd.conf ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd -l -a un service gr par xinetd = service ftp { socket_type = stream wait = no user = root server = /usr/sbin/in.ftpd } un fichier dans /etc/xinetd.d

3. L'installation
Lorsque vous installez une nouvelle machine, xinetd est install par dfaut. Si inetd est aussi install il nest pas conseill de le remplacer par xinetd. Les deux peuvent tourner en parallle. xinetd peut avoir t install avec l'option de compilation --with-libwrap, cette option permettant de conserver les fichiers hosts.allow et hosts.deny propre TCP_Wrappers. Cette option permettant de continuer utiliser certains programmes qui ne connaissent que tcp_wrapers. Le problme de cela tant quon a en plus des fichiers de xinetd vrifier les fichiers hosts.allow et hosts.deny. Si xinetd est compil avec cette option les fichiers hosts.allow et hosts.deny sont lus les premiers.

4. Activation/arrt du service xinetd


Le dmon xinetd est normalement activ au dmarrage par un script RC (par exemple /etc/rc.d/rc3.d/s56xinetd) Il est possible darrter ou de relancer le servic de manire interactive :
SALIM 7

Chapitre 6

INETD& XINETD

# /etc/init.d/xinetd # /etc/init.d/xinetd

stop start

Si on modifie lun des fichiers prsents dans /etc/xinetd.d, il faut prvenir le demon xinetd en lui envoyant : Le signal 10 (SIGUSR1) qui provoque une reconfiguration paisible Le signal 12 (SIGUSR2) qui provoque une reconfiguration violente : non seulement il ajuste sa configuration, mais arrte ventuellement les serveurs qui ne doivent plus tre activs.

5. Le fichier xinetd.conf
Le fichier /etc/xinetd.conf contient des paramtres gnraux de configuration ayant une influence sur tous les services placs sous le contrle de xinetd. Le fichier /etc/xinetd.conf est lu seulement lors du lancement du service xinetd. Voici un exemple de fichier /etc/xinetd.conf :

defaults { disable = yes instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST no_access = 0.0.0.0/0 cps = 25 30 per_source = 4 } includedir /etc/xinetd.d
La description des instructions utilises dans lexemple prcdent est prsente dans le tableau suivant :

Disable Instances log_type log_on_success

log_on_failure no_access

tout est dsactiv par dfaut Dtermine le nombre maximum de requtes qu'un service xinetd peut grer un moment donn. Indique xinetd d'utiliser le journal authpriv qui enregistre des entres de journalisation dans le fichier /var/log/secure. Configure xinetd de faon ce qu'il journalise si la connexion est tablie avec succs. Par dfaut sont enregistrs aussi bien l'adresse IP de l'hte distant que l'ID de processus du serveur traitant la requte. Configure xinetd de faon ce qu'il journalise si la connexion choue ou si elle n'est pas autorise. par dfaut aucun rseau ne peut se connecter. On peut la place utiliser no_access.
8

SALIM

Chapitre 6

INETD& XINETD

cps

per_source includedir /etc/xinetd.d/

Configure xinetd de manire n'autoriser que 25 connexions par seconde un service donn. Si cette limite est atteinte, le service est retir pendant 30 secondes. on n'autorise que 4 connexions en provenances de la mme machine. Inclut des options stipules dans les fichiers de configuration spcifiques aux services qui se trouvent dans le rpertoire /etc/xinetd.d/.

On peut dsactiver service par service. On enlve alors la premire ligne et on ajoute plusieurs lignes "disable" pour les diffrents services. Cela donne : disable = telnet ftp disable = cvs Le dfaut de cela est qu'il faut penser tous les mettre, l'avantage est par contre d'avoir tous les services dans un seul fichier.

6. Les fichiers de configuration par service


Le rpertoire /etc/xinetd.d/ contient les fichiers de configuration relatifs chaque service gr par xinetd. Le nom de ces fichiers de paramtrage fait rfrence aux services. Pour comprendre comment ces fichiers sont structurs, le fichier /etc/xinetd.d/telnet est prsent en exemple : service telnet { disable = yes socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID access_times = 09:00-17:30 only_from = 172.16.0.0/16 only_from = .ucam.ac.ma only_from = 10.0.0.{10,11,12} } Les instructions qui contrlent les diffrents aspects du service telnet sont dcrits dans le tableau suivant : service Dfinit le nom du service, gnralement pour correspondre un service numr dans le fichier /etc/services. Spcifie le connecteur rseau comme tant de type stream.
9

socket_type
SALIM

Chapitre 6

INETD& XINETD

wait user server log_on_success log_on_failure nice access_times only_from

Dtermine si le service est mono-fils ('single-threaded', yes), ou multi-fils fil ('multi-threaded', no) Dtermine l'ID d'utilisateur sous lequel le processus sera excut Dfinit le fichier binaire excutable lancer. Dtermine les paramtres de journalisation de ceux dj dfinis dans xinetd.conf. Dtermine les paramtres de dj dfinis dans xinetd.conf. Dtermine le niveau de priorit du serveur. Dtermine la priode pendant laquelle laccs au serveur est autoris Dtermine les machines autorises se connecter au serveur

Pensez enfin relire le fichier de configuration, lorsque vous faites des modifications avec la commande killall -HUP pid_xinetd.

SALIM

10

Vous aimerez peut-être aussi