Inetd, Le SuperServeur
De Diablotins.org.
| Services à la carte
|
| ||
| Vous disposez d'une machine qui assure divers services sur le réseau, mais peu sollicités ou irrégulièrement.
|
Sommaire |
Activer le super serveur
Ajoutez simplement l'entrée
inetd_enable="YES"
dans /etc/rc.conf pour lancer le «super serveur».
Évitez de redémarrer la machine en entrant:
/etc/rc.d/inetd start
Le serveur requiert deux fichiers principaux, /etc/inetd.conf pour sa configuration et /etc/services(5) qui associe un port IP à un service réseau.
Autoriser/Interdire un service
Déterminez quel est le nom du service à autoriser en parcourant le fichier /etc/inetd.conf et commentez ou non l'entrée du service.
La structure de ce fichier est la suivante:
Service type protocole comportement utilisateur commande arguments
- Type:
- stream (TCP*)
- dgram (UDP*),
- raw (ICMP)
- rdm (messages)
- Protocole :
- TCP/TCP6/TCP46;
- UDP/UDP6/UDP46;
- RPC/TCP; RPC/UPD
- Comportement de inetd par rapport au service:
- wait/nowait: Attendre ou pas que le service soit démarré avant d'écouter le traffic.
- max-child/max-connections-per-ip-per-minute/max-child-per-ip : limites de connexions.
- Utilisateur
- :Groupe
- /classe.
Un classique:
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l ftp stream tcp6 nowait root /usr/libexec/ftpd ftpd -l
/etc/services
La plupart des services ne sont pas notés par leur adresse de port IP, mais par un identifiant.
La liste des associations port IP/service se trouve dans le fichier /etc/services(5).
Vous y retrouverez la plupart des services sur IP connus.
Exemple
Inetd lance un processus et redirige ses entrées et sorties standards. Ce processus peut très bien être un script shell, un script perl ou autre. À partir de là, voici un petit exemple de serveur avec un script shell:
# ee /opt/bofh.sh
#!/bin/sh echo "=== Un exemple de serveur BOFH" echo "=== Feel the Power!" echo "Your excuse is: Too many interrupts"
Le script doit être exécutable:
# chmod +x /opt/bofh.sh
Associez le au service «mdqs» (port 666/tcp) dans inetd.conf. Le script sera appelé par l'utilisateur «nobody»:
# ee /etc/inetd.conf mdqs stream tcp nowait nobody /opt/bofh.sh bofh.sh
Relancez inetd(8), soit en lui envoyant un signal SIGHUP, soit en entrant:
/etc/rc.d/inetd restart
Essayez:
$ telnet -4 localhost 666 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. === Un exemple de serveur BOFH === Feel the Power! Your excuse is: Too many interrupts Connection closed by foreign host.
Étonnant, non ?
En savoir plus
- Le Manuel de FreeBSD.
- Le port security/xinetd est un remplaçant de inetd.

