Product SiteDocumentation Site

4.12. Utilisation de tcpwrappers

L'encapsulation TCP a été développée quand il n'y avait pas de réels filtres de paquets disponibles et que les contrôles d'accès étaient nécessaires. Toutefois, ils sont toujours très intéressants et utiles. L'encapsulation TCP vous permet d'autoriser ou de refuser un service à un hôte ou à un domaine et de définir une règle par défaut pour les autorisations et les refus (toutes réalisées au niveau applicatif). Pour plus de détails, jetez un œil à hosts_access(5).
De nombreux services installés dans Debian sont soit:
  • lancés par le service tcpwrapper (tcpd) ;
  • compilés avec la prise en charge de libwrapper.
D'un côté, pour des services configurés dans /etc/inetd.conf, cela comprend telnet, ftp, netbios, swat et finger), vous observerez que le fichier de configuration exécute avant tout /usr/sbin/tcpd. D'un autre côté, même si un service n'est pas lancé par le super démon inetd, il peut être compilé avec la prise en charge pour les règles d'encapsulation TCP. Les services suivant sont compilés avec prise en charge d'encapsulation TCP dans Debian : ssh, portmap, in.talk, rpc.statd, rpc.mountd, gdm, oaf (le démon d'activation GNOME), nessus et beaucoup d'autres.
Pour voir quels paquets utilisent tcpwrappers [33], essayez :
  $ apt-cache rdepends libwrap0
Tenez compte de cela quand vous utilisez tcpdchk (un vérificateur très utile de règles et syntaxe de fichier de configuration d'encapsulation TCP). Quand vous pouvez ajouter des services indépendants (qui sont liés à la bibliothèque d'encapsulation) dans les fichiers host.deny et hosts.allow, tcpdchk vous informera qu'il ne peut pas trouver les services mentionnés étant donné qu'il les cherche dans /etc/inetd.conf (la page de manuel n'est pas totalement précise ici).
À présent, voici une petite astuce et probablement le plus petit système de détection d'intrusions disponible. Généralement, vous devriez disposer d'une politique correcte concernant le pare-feu en première ligne, puis disposer de l'encapsulation TCP en seconde ligne de défense. Un petit truc est de mettre en place une commande SPAWN [34] dans /etc/hosts.deny qui enverra un courrier au superutilisateur quand un service refusé déclenche l'encapsulation :
  ALL: ALL: SPAWN ( \
    echo -e "\n\
    Encapsulation TCP \: Connexion refusée\n\
    Par \: $(uname -n)\n\
    Processus \: %d (pid %p)\n\
    Utilisateur \: %u\n\
    Hôte \: %c\n\
    Date \: $(date)\n\
  " | /usr/bin/mail -s "Connexion à %d bloquée" root) &
Attention: L'exemple ci-dessus peut-être facilement sujet à une attaque par déni de service en soumettant énormément de connexions dans une période très courte. De nombreux courriers signifient de nombreuses E/S en envoyant uniquement quelques paquets.


[33] Pour les anciennes versions de Debian, vous pourriez devoir utiliser :
 $ apt-cache showpkg libwrap0 | egrep '^[[:space:]]' | sort -u | \ sed 's/,libwrap0$//;s/^[[:space:]]\+//'
[34] Assurez-vous d'utiliser des majuscules sinon spawn ne fonctionnera pas.