Regles de filtrage iptables

Bonjour,

Après avoir réalisé un parefeu iptables sur une machine Debian6 j’aimerais avoir plus d’info sur les règles :
NEW,ESTABLISHED,RELATED

Car j’ai fait tous les sites de configuration de parefeu et ils sont tous expliqué de la meme facon :
New : nouvelle connexion
Established : connexion en cours
Related : nouvelle connexion qui dépend d’une autre

Et moi tout ça, ça ne me parle pas du tout, car mon parefeu fonctionne mais j’ai mis des règles simple inpout et output, j’aimerais bien approfondir avec ces termes.
Sur ce tuto par exemple rien est expliqué la dessus => debian-fr.org/installation-p … t1901.html

Quelqu’un peut m’expliquer en détail ?

Merci

Established : concerne une réponse (sur le même port ?).
Ca sert à interdire les entrées sur un port sauf si c’est en réponse à une demande envoyé par le serveur.
Par exemple le serveur smpt de sa machine pour discuter avec un serveur extérieur pour transmettre un mail et celui-ci pourra lui répondre . Par contre le serveur extérieur ne pourra pas demander la prise en charge d’un mail à motre serveur.

Related : ca évoque pour moi le ftp avec un canal de commande et un canal (voir plusieurs) de transfert. Quoi que pour le ftp, il y a un module particulier pour suivre les connexion (ipcontract je crois).

Voilà ce que j’ai compris.

Merci pour ta réponse
Ah merci pour established ducou j’ai bien compris le truc maintenant je te remercie en revanche pour les autre ducou je ne sais toujours pas, j’ai pas bien saisi :confused:

Pour new/established : Si tu laisses passer les flux “established”, il faut pour ssh par exemple que tu ouvres le port 22 pour pouvoir te connecter (new au départ), mais par la suite, tu peux fermer le port 22 et continuer à travailler via ssh (estabished après la connexion).

Pour le related… mystère.

[quote=“flyght”] j’aimerais avoir plus d’info sur les règles :
NEW,ESTABLISHED,RELATED[/quote]
Ce ne sont pas des règles mais des états de paquets, gérés par le suivi de connexion (conntrack).

[quote=“flyght”]New : nouvelle connexion
Established : connexion en cours
Related : nouvelle connexion qui dépend d’une autre[/quote]
En gros, c’est bien ça. Il y a deux notions à ne pas mélanger : l’état d’une “connexion” (flux de paquets bidirectionnel et cohérent), et l’état d’un paquet individuel. NEW, ESTABLISHED, RELATED, INVALID… sont les états de paquets individuels. L’état des connexions connues peut être obtenu avec la commande conntrack ou dans le contenu de /proc/net/nf_conntrack.

Quand un paquet est susceptible de créer une nouvelle connexion (paquet TCP SYN, paquet UDP, requête ICMP echo…) qui n’existe pas dans la table de suivi, alors il est classé NEW. Si le paquet n’est pas bloqué pour une raison quelconque (bloqué par une règle de filtrage, réseau de destination injoignable…) alors la connexion correspondante est mémorisée.

Quand un paquet appartenant à cette même connexion est vu dans l’autre sens (“réponse”), alors il est classé ESTABLISHED et la connexion est confirmée. Tous les paquets suivants dans les deux sens appartenant à cette connexion sont aussi dans l’état ESTABLISHED.

L’état RELATED qualifie deux types de paquets.

  • Les messages d’erreur ICMP liées à une connexion existante.
  • Les paquets qui créent une nouvelle connexion (et devraient normalement avoir l’état NEW) lorsque celle-ci est liée à une autre connexion existante. Comme déjà évoqué, c’est le cas des connexions de données FTP qui ont été négociées dans la connexion de commande FTP d’origine. Ces connexions liées utilisent souvent des ports aléatoires, il serait donc très difficile de les gérer correctement avec des règles de filtrage simple basées sur les ports. Un module spécial du noyau effectuant le suivi du protocole concerné (nf_conntrack_ftp pour FTP) doit être actif pour faire cette relation, sinon par défaut les paquets auront l’état NEW.

Enfin, l’état INVALID caractérise les paquets qui devraient appartenir ou être liés à une connexion inexistante (ou oubliée).

L’intérêt des états de suivi de connexion pour le filtrage des paquets est évident : iptables gère des paquets individuels, mais ce qui nous intéresse généralement, ce sont plutôt les connexions globales. L’utilisation est simple : on crée des règles pour accepter ou bloquer les paquets NEW selon ses besoins, on accepte les paquets ESTABLISHED et RELATED (avec restrictions pour ces derniers si nécessaire) et on bloque les paquets INVALID. Un paquet ne peut être dans l’état ESTABLISHED ou RELATED si le paquet NEW (ou RELATED) correspondant n’a pas été accepté ; bloquer le paquet NEW (ou RELATED) suffit donc à bloquer toute la connexion.