Repérer les chaînes d’iptables
Objectif : Associer une chaîne d’iptables au type de trafic qu’elle traite.
Quand vous sécurisez un serveur, une même machine reçoit des connexions, envoie des réponses et peut parfois acheminer du trafic vers une autre destination. Pour examiner le filtrage, vous devez savoir à quel endroit du parcours intervient chaque chaîne d’iptables. Vous éviterez ainsi de chercher une décision sur le mauvais trajet.
Dans la leçon précédente, vous avez suivi une connexion entrante jusqu’au serveur et sa réponse vers le client. Ici, vous reprenez ces trajets pour identifier la chaîne concernée, sans encore définir les tables ni les règles de filtrage.
Trois chaînes selon le trajet
Une chaîne est un point de passage auquel iptables peut appliquer un traitement au paquet. Les chaînes principales à repérer sont INPUT, OUTPUT et FORWARD. Leur nom indique le rôle du paquet par rapport à la machine : il entre dans le serveur, en sort, ou traverse le serveur pour continuer son trajet.
INPUTconcerne les paquets destinés au serveur lui-même. Une requête reçue par le serveur web suit ce trajet : le paquet arrive sur la machine et vise un service hébergé sur celle-ci.OUTPUTconcerne les paquets produits par le serveur et envoyés vers l’extérieur. La réponse du serveur à une requête distante relève de cette chaîne au moment où elle quitte la machine.FORWARDconcerne les paquets qui traversent le serveur sans lui être destinés. Le serveur joue alors un rôle d’acheminement entre une source et une autre destination.
Appliquer ces repères au serveur web
Supposons qu’un client demande une page hébergée sur le serveur du projet. La demande entre sur le serveur et lui est destinée : vous l’associez à INPUT. Le serveur prépare ensuite une réponse destinée au client distant ; le paquet de réponse sort du serveur et relève de OUTPUT. Vous retrouvez ainsi, pour les deux sens de l’échange, le même parcours que dans la leçon précédente, avec une chaîne associée à chaque passage.
Imaginez maintenant que le serveur soit configuré pour relayer un paquet vers une autre machine. Si ce paquet arrive d’un réseau et repart vers une autre destination sans viser un service local, il traverse le serveur : vous l’associez à FORWARD. Cette situation se distingue du serveur web classique qui reçoit lui-même la demande. Pour le projet fil rouge, concentrez-vous d’abord sur INPUT pour les connexions destinées au serveur et sur OUTPUT pour ses réponses.
Méthode de repérage
Avant de lire ou de préparer un filtrage, posez-vous deux questions dans cet ordre : le paquet vise-t-il un service de cette machine, ou doit-il continuer vers une autre destination ? Puis, le paquet est-il reçu par la machine ou envoyé par elle ? Si le paquet vise la machine et y arrive, pensez à INPUT. S’il est produit par la machine et en sort, pensez à OUTPUT. S’il passe par elle vers une autre destination, pensez à FORWARD.
Ces repères servent à localiser le trajet étudié ; ils ne déterminent pas encore si le paquet sera autorisé ou rejeté. La prochaine leçon distinguera les tables et les règles qui organisent le traitement. À ce stade, gardez simplement en tête la correspondance entre destination et chaîne.
À retenir
INPUTtraite le trajet des paquets destinés au serveur.OUTPUTtraite le trajet des paquets envoyés par le serveur.FORWARDconcerne les paquets qui traversent le serveur vers une autre destination.- Pour une requête web hébergée sur le serveur, repérez
INPUTà l’arrivée etOUTPUTpour la réponse.