Certaines distributions proposent par défaut d'installer de nombreux démons, dont certains sont pourtant inutiles dans la plupart des cas et parfois connus pour leurs failles de sécurité.
Il est donc important de choisir quels services devront être proposés, et quels programmes assureront ces services. Vous trouverez ici un tour d'horizon des services les plus courants.
Un service est une fonctionnalité, locale ou réseau, assurée par un programme dédié qui est communément appelé démon. A priori, fournir des services est le rôle d'un serveur, qui les fournira à un réseau, alors qu'un poste client en fournira peu ou pas, et généralement uniquement aux utilisateurs du poste en question.
Un service écoute sur un port du système, qui peut être un port privilégié (un port <1024) ou un port éphémère (>1024). Ce port est généralement fixe et connu à l'avance, mais peut être dynamique pour certains protocoles.
La plupart des démons affichent un texte d'accueil lors de la connexion (dans le cas de services TCP). Or, la plupart des textes par défaut donnent des indications sur le démon ou sur le système (voire les deux). Bien sur, il est souvent possible d'obtenir ces informations par d'autres moyens, mais cette façon de récupérer les informations est particulièrement discrète, puisqu'elle consiste en une simple connexion anodine.
Certains protocoles prévoient également la possibilité d'effectuer des requètes succeptibles de donner d'autres informations sur le système (comptes valides, utilisateurs logués, etc...).
De plus, un service accepte généralement des instructions en entrée depuis le réseau, et a souvent besoin de certains privilèges sur le système pour pouvoir fonctionner. Il est alors parfois possible de forger une instruction erronée qui va engendrer un comportement non prévu du démon, et qui va permettre d'exécuter des opérations non autorisées, ou de rendre le service (voire le serveur ou le réseau) inopérant.
Inetd est un "super démon", qui peut écouter sur de nombreux ports et démarrer le démon concerné lors d'une connexion.
D'un point de vue performances, inetd est très intéressant pour des services peu utilisés (le démon n'est démarré que quand cela est nécessaire), beaucoup moins pour des services fortement sollicités.
Du point de vue fiabilité, inetd exécute une instance du démon pour chaque connexion, donc garantit à priori[1]que le bloquage (volontaire ou non) d'une instance du démon ne bloquera pas le service.
D'un point de vue sécurté, enfin, inetd (et ses dérivés tels qu'xinetd) permettent d'assurer certaines vérifications pour tous les services sous son controle.
[1] | Dans le cas ou l'instance bloquée du démon a verouillé des ressources, les autres instances risquent d'attendre celles-ci |