Chapitre
III. Autres informations
III. Le super daemon xinetd
3. Configuration
a) Principes
Le
fichier de configuration de xinetd
est /etc/xinetd.conf, il est découpé
en plusieurs sections, un section defaults avec des paramètres
concernant tous les services, et une section par service avec des
paramètres particuliers :
defaults
{
paramètres par défaut pour tous les services
}
service
nom-du-service1
{
paramètres pour le service1
}
service
nom-du-service2
{
paramètres pour le service2
}
...
On
peut très bien faire comme sous la Mandrake 7.2 avoir un
fichier xinetd.conf contenant :
defaults
{
paramètres par défaut pour tous les services
}
includedir
/etc/xinetd.d
On
créera un répertoire /etc/xinetd.d
contenant autant de fichier qu’il y a de service, chaque fichier
portant le nom du service et contenant :
service
nom-du-service1
{
paramètres pour le service1
}
On
aura donc le fichier telnet, ftp, finger...
b)
Les options généralistes
Voilà
les options qui peuvent s'appliquer à tous les services et
qu'on peut mettre dans la section defaults du fichier xinetd.conf
log_type
vous pouvez spécifier un archivage des logs en utilisant
le daemon syslogd ou alors archiver dans un fichier. Exemple :
log_type
= FILE /var/log/xinetd.log 20M 25M
Quand
vous atteindrez un fichier de log de 20M, un message d'alerte va
s'inscrire dans le fichier /var/log/messages mais le log continue,
quand on va atteindre 25M, xinetd n'écrit plus dans le fichier
de log.
log_on_success
qui va spécifier les informations à archiver en cas
de lancement réussi d'un service, vous avez le choix des
paramètres suivant :
PID
le PID du serveur
HOST adresse IP du client
USERID identité de l'utilisateur
EXIT le status de sortie du processus
DURATION le temps de la connexion
Exemple
:
log_on_success = PID HOST USERID EXIT DURATION
Va
donner les lignes suivantes pour un telnet
00/12/15@20:15:46:
START: telnet pid=1889 from=192.168.13.10
00/12/15@20:18:39: EXIT: telnet status=0 pid=1889 duration=173(sec)
log_on_failure
qui va spécifier les informations à archiver en cas
d'erreur de lancement service (erreur d'authentification, manque
de ressource), vous avez le choix des paramètres suivant
:
HOST et USERID comme précédemment
RECORD pour enregistrer toutes les info disponibles sur le client
Exemple
:
log_on_failure
= HOST RECORD
no_access
pour définir les clients non autorisés à se
connecter
only_from
pour définir les clients autorisés à se connecter.
Exemple avec le sous réseau 192.168.13.X
only_from
= 192.168.13.0/32
instances
pour fixer le nombre maximum d'instances de serveur à lancer,
ce qui permet d'éviter le DoS
per_source
pour restreindre le nombre de connexion à un service venant
d'une même machine
Les
options par service
id
pour identifier un service, si on utilise pas ce paramètre,
dans le fichier de log on aura le nom du service, avec id vous pouvez
redéfinir le nom du service qui sera archivé dans
le fichier de log (ftp-public au lieu simplement de ftp par exemple)
nice
pour définir la priorité d’un service (-20 plus
prioritaire 19 plus prioritaire)
port
numéro du port associé au service défini dans
/etc/services
protocol
nom du protocole défini dans /etc/protocols
server
le chemin du service
server_args
arguments à passer au service
socket_type
type de socket (stream pour TCP et dgram pour UDP), pour savoir
si c'est l'un ou l'autre voir le fichier /etc/services
wait
si wait=yes une seule instance du service peut être lancé
à la fois, si wait=no, on lance un serveur à chaque
nouvelle connexion (dans la limite du nombre d'instance max)
access_times
pour définir une plage horaire la syntaxe est la suivante
heure:minute-heure:minute, exemple pour une plage horaire entre
7h-12h et 14h-19h
access_times
= 7:00-12:00 14:00-19:00
env
pour passer une variable d'environnement avant de lancer le service
bind
(ou interface) pour attacher une interface à un service,
pour limiter les requêtes à une interface réseau
par exemple
redirect
permet de rediriger une requête sur le port particulier d'une
de vos machines de votre réseau local.
On
peut réutiliser les paramètres déjà
définis dans les paramètres par défaut et modifier
les options :
exemple
avec log_on_success, si celui-ci est
définit dans les paramètres par défaut avec
les options suivantes PID HOST
USERID EXIT
DURATION, on veut avoir pour un service
particulier uniquement PID et HOST
on écrira donc
log_on_success
-= USERID EXIT DURATION
De
même si on a log_on_success défini à PID HOST
et qu'on veut rajouter DURATION on écrira
log_on_success
+= DURATION
Quelques
exemples
Le
fichier xinetd.conf
Voilà
un fichier xinetd.conf type. Pour les autorisations d’accès
on autorise seules les machines du réseau local à
accéder aux services, les autres machines se font jeter.
Cela donne
defaults
{
instances = 20
per_source = 5
log_type = FILE /var/log/xinetd.log 20M 25M
log_on_success = HOST USERID DURATION
log_on_failure = HOST RECORD
only_from = 192.168.13.0/32
}
includedir
/etc/xinetd.d
Les
autres définitions de service se trouve sous le répertoire
/etc/xinetd.d
c)
Configurer un service
Le
fichier se trouve sous /etc/xinetd.d et porte le nom du service.
La syntaxe du fichier est la suivante :
service
nom-du-service
{
socket_type = type de socket
wait = pour lancer un ou plusieurs instances du service
user = à qui appartiendra le service
server= chemin du serveur
server_args= argument du serveur (facultatif)
access_times=plage horaire (facultatif)
nice = priorité (facultatif)
}
Vous
pouvez éventuellement rajouter d'autres options vues précédemments
(access_times, ...) et redéfinir certains paramètres
définis dans la section defaults
Exemple
avec pop3
service
pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += USERID
log_on_failure += USERID
}
Avec
le serveur NNTP leafnode
service
nntp
{
socket_type = stream
wait = no
protocol = tcp
user = news
server = /usr/local/sbin/leafnode
}
Avec
ftp avec une plage horaire et une limitation à 4 personnes
connectées simultanément
service
ftp
{
socket_type = stream
wait = no
protocol = tcp
user = root
server = /usr/sbin/in.ftpd
instances = 4
access_times = 7:00-12:00 14:00-17:00
nice=15
}
Exemple
avec xtelw le serveur minitel pour windows qui permet de voir comment
passer un argument au service
service
xtelw
{
socket_type = stream
wait = no
protocol = tcp
user = root
server = /usr/X11R6/bin/xtelw
server_args = -H
}
Exemple
avec un serveur ftp privé, seules les requêtes venant
de l'interface réseau internet ont acceptées, id va
redéfinir le nom du service, dans le fichier log on verra
la mention ftp-private au lieu de ftp tout simplement.
service
ftp
{
id = ftp-private
socket_type = stream
wait =no
user =root
server=/usr/sbin/in.ftpd
instances= 4
only_from= 192.168.13.0/24
bind= 192.168.13.11
}
Autre
exemple avec la redirection, ici on rediriger vers le port 23 (telnet)
de la machine 192.168.13.10
service
telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
redirect = 192.168.13.10 23
}
Précédent
- Plan - Suivant
|