[iptables] Révisions de partiels

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous !

J’ai un partiel de réseau la semaine prochaine, et il y aura certainement des questions sur le pare-feu Netfilter configuré avec iptables.

J’ai fait les annales et j’aimerais avoir votre avis sur mes réponses s’il vous plaît, je pense que vous n’y verrez aucun inconvénient, bien au contraire ?

Du coup, voici la première question. Au fur et à mesure de votre correction, je vous enverrais les autres (2 ou 3, toujours les mêmes grosso modo). Merci beaucoup et n’hésitez pas, si j’ai fait une erreur, à me l’expliquer !

Rappel : schéma d’iptables

Image utilisateur

Première question

Considérez les commandes suivantes configurant le routeur.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
1. iptables -F
2. iptables -P OUTPUT DROP
3. iptables -P INPUT DROP
4. iptables -P FORWARD DROP

5. iptables -t nat -A POSTROUTING -s 192.168.1/24 -o ppp0 -j MASQUERADE

6. iptables -A FORWARD -s 192.168.1/24 -j ACCEPT
7. iptables -A FORWARD -d 192.168.1/24 -j ACCEPT

8. iptables -A FORWARD -d 88.180.44.10 -p tcp --dport 80 -j ACCEPT
9. iptables -A FORWARD -s 88.180.44.10 -p tcp --sport 80 -j ACCEPT

a) Quel est l’effet des lignes 8 et 9 sur le trafic traversant le routeur ?

  1. Pour le prerouting, rien n’est précisé : comportement par défaut = ACCEPT

  2. Ce paquet sera analysé par la mangle table (chaîne forward), qui contient l’action par défaut puisque rien n’est précisé ("ACCEPT")

  3. Puis il sera analysé par la filter table (chaîne forward) : tout paquet TCP, encapsulant un paquet HTTP, allant vers 88.180.44.10 ou bien dont cette IP est la source sera accepté

  4. Si le paquet a été précédemment accepté, la mangle table (chaîne postrouting) l’analyse : l’action par défaut est effectuée car rien n’est précisé (ACCEPT). Sinon : paquet refusé, fin.

  5. Le paquet passe, enfin, par la nat table (chaîne postrouting) : tout paquet dont la source est 192.168.1/24 sortant par PPP0 voit son adresse source remplacée par l’adresse du routeur associée à son interface PPP0.

b) L’administrateur souhaiterait que ce routeur puisse être administré à distance par SSH mais uniquement depuis 192.168.1/24. Pour l’instant, ce n’est pas le cas. Pourquoi ? Comment y remédier ?

Ce n’est pas le cas car, le paquet étant destiné au routeur, la chaîne INPUT de la mangle table est exécutée (inutile de le dire car cette chaîne n’est pas précisée : action par défaut = ACCEPT) puis la chaîne INPUT de la filter table est exécutée : par défaut, il est indiqué de jeter tous les paquets entrants. Donc tout paquet SSH à destination du routeur est rejeté.

Pour y remédier, il suffit de taper :

1
2
iptables -A INPUT -s 88.180.44.10 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 88.180.44.10 -p tcp --sport 22 -j ACCEPT
+0 -0

Salut,

  1. Pour le prerouting, rien n’est précisé : comportement par défaut = ACCEPT
The-Aloha-Protocol

C’est du chipotage, mais iptables -F vide les tables de leur règle, ce qui n’implique pas de modifier la police courante. Du coup, il est plus « juste » de dire « comportement par défaut » sans le préciser puisque l’on ne connaît pas le police par défaut qui a été fixée auparavant.

Puis il sera analysé par la filter table (chaîne forward) : tout paquet TCP, encapsulant un paquet HTTP, allant vers 88.180.44.10 ou bien dont cette IP est la source sera accepté.

The-Aloha-Protocol

Le « encapsulant un paquet HTTP » est de trop. La seule chose qu’iptables va regarder ici, c’est le port et l’adresse, le contenu du paquet, il s’en tampone le coquillard. Je dirais pour ma part plutôt ceci : « tout paquet TCP provenant ou en direction de l’adresse 88.180.44.10 et ayant comme port source ou destination le port 80 est accepté ».

1
iptables -A INPUT -s 88.180.44.10 -p tcp --sport 22 -j ACCEPT

Cette règle devrait être dans la partie OUTPUT (puisque la police par défaut rejette aussi les paquets en sortie et donc les réponses du serveur SSH). Toutefois, elle ne sera pas très utile, car le plus souvent, le port source est un port choisi aléatoirement dans l’espace libre (1024-65535). Pour que cela fonctionne, il va être nécessaire d’autoriser le traffic sortant pour les connexions TCP établies, c’est-à-dire celles ayant terminé la « triple poignée de mains ».

Pour ce faire, tu peux employer la règle suivante.

1
iptables -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

Le RELATED est ici optionnel et fait référence à la possibilité de transmettre des paquets en rapport avec la connexion comme des paquets d’erreur ICMP.

+0 -0

Bonsoir Taurre, merci de m’avoir répondu !

Du coup tu es bien d’accord avec chacun de mes points (question n°a) :) ? En particulier, je n’étais pas sûr de mon "sinon" au point n°4.

Par ailleurs, est-on d’accord quant au fait de dire que iptables -P OUTPUT DROP spécifie une action par défaut uniquement pour le OUTPUT de la table FILTER ? Mais qu’on n’en sait rien pour la table mangle et la table nat ? (le man de iptables n’est pas clair à ce niveau-là).

Du coup tu es bien d’accord avec chacun de mes points (question n°a) :) ? En particulier, je n’étais pas sûr de mon "sinon" au point n°4.

The-Aloha-Protocol

Ben, disons qu’à nouveau le « sinon » est superflu (cf. ma remarque sur le flush des règles). Il me semble que tu peux te contenter de dire que la police par défaut est appiquée puisqu’aucune règle n’est précisée. ;)

Par ailleurs, est-on d’accord quant au fait de dire que iptables -P OUTPUT DROP spécifie une action par défaut uniquement pour le OUTPUT de la table FILTER ? Mais qu’on n’en sait rien pour la table mangle et la table nat ? (le man de iptables n’est pas clair à ce niveau-là).

The-Aloha-Protocol

Oui, si tu ne spécifies aucune table, c’est la table filter qui est désignée par défaut.

+0 -0

Ah exact, j’ai mieux regardé le man et effectivement c’est bien filter qui est utilisée par défaut. Merci ! :)

Du coup comme mes réponses te semblent correctes, voici une deuxième question.

Deuxième question : mascarade

Soit la commande : iptables -t nat -A POSTROUTING -s 192.168.1/24 -o ppp0 -j MASQUERADE.

Quels en seront les effets ?

Les paquets provenant de 192.168.1/24 et qui sortirent de l’interface PPP0 voient leur adresse source substituée par l’adresse du routeur associée à l’interface PPP0 de ce dernier.

Je pense que cette réponse suffit non ?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte