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
ou
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:
Un exemple d'entrée pour le “daemon” ftpd(8) utilisant l'IPv4 ressemblerait:
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:
Protocole | Explication |
---|---|
tcp, tcp4 | TCP IPv4 |
udp, udp4 | UDP IPv4 |
tcp6 | TCP IPv6 |
udp6 | UDP IPv6 |
tcp46 | TCP IPv4 et v6 |
udp46 | UDP IPv4 et v6 |
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:
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.
Ce document, ainsi que d'autres peut être téléchargé sur ftp://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>.