On fait parfois référence à inetd(8) comme étant le “super-serveur Internet” parce qu'il gère les connexions pour plusieurs services. Quand une connexion est reçue par inetd, ce dernier détermine à quel programme la connexion est destinée, invoque le processus en question et lui délègue la “socket” (le programme est invoqué avec la “socket” service comme entrée standard, sortie et descripteurs d'erreur). Exécuter inetd pour les serveurs qui ne sont pas utilisés intensément peut réduire la charge système globale quand on compare avec l'exécution de chaque “daemon” individuellement en mode autonome.
inetd est utilisé pour invoquer d'autres “daemon”s, mais plusieurs protocoles triviaux sont gérés directement, comme chargen, auth, et daytime.
Cette section abordera la configuration de base d'inetd à travers ses options en ligne de commande et son fichier de configuration /etc/inetd.conf.
inetd est initialisé par l'intermédiaire du système rc(8). L'option inetd_enable est positionnée à la valeur NO par défaut, mais peut être activée par sysinstall lors de l'installation en fonction de la configuration choisie par l'utilisateur. Placer
inetd_enable="YES"
ou
inetd_enable="NO"
dans /etc/rc.conf activera ou désactivera le lancement d'inetd à la mise en route du système. La commande:
# /etc/rc.d/inetd rcvar
peut être lancée pour afficher le paramétrage en vigueur.
De plus, différentes options de ligne de commande peuvent être passées à inetd par l'intermédiaire de l'option inetd_flags.
Comme la plupart des “daemons”, inetd possède de nombreuses options que l'on peut passer à son lancement afin de modifier son comportement. La liste complète des options se présente sous la forme:
inetd [-d] [-l] [-w] [-W] [-c maximum]
[-C taux] [-a adresse | nom de machine] [-p fichier] [-R taux] [fichier de
configuration]
Les options peuvent être passées à inetd en utilisant le paramètre inetd_flags dans /etc/rc.conf. Par défaut, inetd_flags contient -wW -C 60, qui active le “TCP wrapping” pour les services inetd, et empêche l'invocation d'un service plus de 60 fois par minute à partir d'une unique adresse IP.
Les novices seront heureux d'apprendre que ce paramétrage n'a en général pas besoin d'être modifié, cependant nous présentons ci-dessous les options de limitation du taux d'invocation étant donné que cela peut être utile si vous recevez une quantité excessive de connexions. Une liste complète d'options peut être trouvée dans la page de manuel de inetd(8).
Spécifie le nombre maximal par défaut 	 d'invocations simultanées pour chaque
service; il 	 n'y a pas de limite par défaut. Cette option peut 	 être surchargée
pour chaque service à 	 l'aide du paramètre 	 nb-max-enfants.
Précise le nombre maximal de fois qu'un 	 service peut être invoqué à partir 	
d'une unique adresse IP et cela sur une minute. Ce 	 paramètre peut être configuré
	 différemment pour chaque service avec le 	 paramètre 	 nb-max-connexions-par-ip-par-minute.
Précise le nombre maximal de fois qu'un service peut être invoqué par minute; la valeur par défaut est 256. Un taux de 0 autorise un nombre illimité d'invocations.
Précise le nombre maximal de fois qu'un 	 service peut être invoqué 	
simultanément à partir d'une adresse IP 	 unique; il n'y a pas de limite par défaut.
Cette 	 option peut-être surchargée pour chaque 	 service individuellement avec
le paramètre 	 max-child-per-ip.
La configuration d'inetd se fait par l'intermédiaire du fichier /etc/inetd.conf.
Quand le fichier /etc/inetd.conf est modifié, inetd peut être forcé de relire son fichier de configuration en utilisant la commande:
Chaque ligne du fichier de configuration ne mentionne qu'un seul “daemon”. Les commentaires dans le fichier sont précédés par un “#”. Le format de chaque entrée du fichier /etc/inetd.conf est le suivant:
nom-du-service
type-de-socket
protocole
{wait|nowait}[/nb-max-enfants[/nb-connexions-max-par-minute]]
{wait|nowait}[/nb-max-enfants[/nb-connexions-max-par-minute[/nb-max-enfants-par-ip]]]
utilisateur[:groupe][/classe-session]
programme-serveur
arguments-du-programme-serveur
Un exemple d'entrée pour le “daemon” ftpd(8) utilisant l'IPv4 ressemblerait:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
C'est le nom de service du “daemon” en question. Il doit correspondre à un des services listés dans le fichier /etc/services. Cela détermine quel port inetd doit écouter. Si un nouveau service est créé, il doit être ajouté en premier lieu dans /etc/services.
Soit stream, soit dgram, soit raw, ou seqpacket. stream doit être utilisé pour les “daemon”s TCP, alors que dgram est utilisé pour les “daemon”s utilisant le protocole UDP.
Un des suivants:
wait|nowait indique si le 	 “daemon”
invoqué par 	 inetd est capable ou non de 	 gérer sa
propre “socket”. Les 	 “socket”s de type dgram 	 doivent utiliser l'option wait, alors 	 que les “daemons à socket stream”,
	 qui sont généralement 	 multi-threadés, devraient utiliser 	 nowait. L'option wait 	 a
généralement pour conséquence de 	 fournir plusieurs “socket”s à un 	
“daemon”, tandis que l'option 	 nowait
invoquera un 	 “daemon” enfant pour chaque nouvelle 	
“socket”.
Le nombre maximal de “daemon”s 	 qu'inetd
peut invoquer peut 	 être fixé en utilisant l'option 	 nb-max-enfants. Si une limite de dix 	 instances pour un
“daemon” est 	 nécessaire, /10 devra 	 être
placé après 	 nowait. Spécifier 	 /0 autorise un nombre illimité 	 d'enfant.
En plus de nb-max-enfants, deux 	 autres options
limitant le nombre maximal de connexions 	 à partir d'un emplacement vers un 	
“daemon” particulier peuvent être 	 activéees. L'option 	 nb-max-connexions-par-ip-par-minute 	 limite le nombre de
connexions par minutes à 	 partir d'une adresse IP donnée, par exemple, une 	
valeur de dix limiterait 	 à dix le nombre de tentatives de connexions par 	
minute pour une adresse IP particulière. 	 L'option max-child-per-ip limite le 	 nombre d'enfants qui peuvent être
lancés 	 pour une adresse IP unique à un instant 	 donné. Ces options sont utiles
pour 	 empêcher l'abus excessif intentionnel ou par 	 inadvertance des ressources
d'une machine et les 	 attaques par déni de service (“Denial of 	
Service—DOS”).
Dans ce champ, wait ou 	 nowait est obligatoire. 	 nb-max-enfants, 	 nb-max-connexions-par-ip-par-minute et 	 max-child-per-ip 	 sont optionnelles.
Un “daemon” utilisant un flux de type 	 multi-threadé sans limites
	 nb-max-enfants, 	 nb-max-connexions-par-ip-par-minute ou 	 max-child-per-ip 	 sera tout simplement affecté de l'option
	 nowait.
Le même “daemon” avec une limite maximale de dix “daemon” serait: nowait/10.
La même configuration avec une limite de vingt connexions par adresse IP par minute et une limite maximale de dix “daemon”s enfant serait: nowait/10/20.
Ces options sont utilisées comme valeurs par défaut par le “daemon” fingerd(8), comme le montre ce qui suit:
finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s
Et enfin, un exemple de champ avec un maximum de 100 enfants en tout, avec un maximum de 5 adresses IP distinctes serait: nowait/100/0/5.
C'est l'utilisateur sous lequel le “daemon” en question est exécuté. En général les “daemon”s tournent sous l'utilisateur root. Pour des questions de sécurité, il est courant de rencontrer des serveurs tournant sous l'utilisateur daemon, ou sous l'utilisateur avec le moins de privilèges: nobody.
Le chemin complet du “daemon” qui doit 	 être exécuté quand une
requête 	 est reçue. Si le “daemon” est un 	 service fourni en
interne par 	 inetd, alors l'option 	 internal devrait être 	 utilisée.
Cette option va de pair avec 	 programme-serveur en
précisant 	 les arguments, en commençant avec 	 argv[0],
passés au 	 “daemon” lors de son invocation. Si 	 mydaemon -d est la ligne de commande, 	 mydaemon -d sera la valeur de 	 l'option arguments-programme-serveur. 	 Ici également, si le
“daemon” est un 	 service interne, utilisez 	 internal.
En fonction des choix effectués à l'installation, plusieurs services peuvent être activés par défaut. S'il n'y a pas de raison particulière à l'utilisation d'un “daemon”, envisagez de le désactiver. Ajoutez un caractère “#” devant le “daemon” en question dans le fichier /etc/inetd.conf, et ensuite rechargez la configuration d'inetd. Certains “daemon”s comme fingerd, devraient être évités parce qu'ils peuvent fournir des informations utiles aux personnes malveillantes.
Certains “daemon”s n'ont aucune conscience des 	problèmes de sécurité,
et ont un long 	délai limite, ou pas du tout, d'expiration pour les tentatives de
	connexions. Cela permet à une personne malveillante 	d'envoyer régulièrement et
de manière 	espacée des demandes de connexions à un 	“daemon”
particulier, avec pour conséquence 	de saturer les ressources disponibles. Cela peut
être 	une bonne idée de placer des limitations 	nb-max-connexions-par-ip-par-minute, 	max-child ou 	nb-max-enfants sur
certains 	“daemon”s si vous trouvez que vous avez trop de
	connexions.
Par défaut, le “TCP wrapping” est activé. Consultez la page de manuel hosts_access(5) pour plus d'information sur le placement de restrictions TCP pour divers “daemon”s invoqués par inetd.
daytime, time, echo, discard, chargen, et auth sont des services fournis en interne par inetd.
Le service auth fournit les services réseau d'identification, et est configurable à un certain degré, alors que les autres services ne peuvent être que stoppés ou en fonctionnement.
Consultez la page de manuel de inetd(8) pour plus d'informations.
| Précédent | Sommaire | Suivant | 
| Serveurs réseau | Niveau supérieur | Système de fichiers réseau (NFS) | 
Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.
Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.