68 votes

iptables : différence entre les paquets NEW, ESTABLISHED et RELATED

Partie d'un pare-feu sur un serveur :

iptables -A INPUT -p tcp --dport 22 -m state NEW --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP

Lorsque je fais des recherches en ligne, je vois toujours que NEW est utilisé dans cette règle, mais j'ai du mal à comprendre pourquoi ESTABLISHED et RELATED ne sont pas utilisés.

Comme ceci :

iptables -A INPUT -p tcp --dport 22 -m state NEW,ESTABLISHED,RELATED --state -m recent --set

iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -m recent --update --seconds 100 --hitcount 10 -j DROP

Quelqu'un peut-il m'expliquer quand exactement un paquet NEW se transforme en ESTABLISHED et RELATED ?

70voto

Aaron Copley Points 12225

Considérez un NOUVEAU paquet d'un appel téléphonique avant que le récepteur n'ait décroché. Un paquet ESTABLISHED est leur "Bonjour". Et un paquet RELATED serait le cas si vous appeliez pour leur parler d'un e-mail que vous étiez sur le point de leur envoyer. (L'e-mail étant RELATIF.)

Au cas où mon analogie ne serait pas très bonne, je pense personnellement que les pages de l'homme s'en occupent bien :

NEW -- signifiant que le paquet a démarré une nouvelle connexion, ou autrement associé à une connexion qui n'a pas vu de paquets dans les deux directions, et

ESTABLISHED -- signifiant que le paquet est associé à une connexion qui a vu des paquets dans les deux sens,

RELATED -- ce qui signifie que le paquet démarre une nouvelle connexion, mais est associé à une connexion existante, comme un transfert de données FTP, ou une erreur ICMP.

iptables(8) - Page de manuel Linux

26voto

Jaime Hablutzel Points 406

En supposant que le serveur et le client soient tous deux soumis à des restrictions INPUT et ouvrir OUTPUT c'est-à-dire :

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT

Et de iptables-extensions(8) sur l'exemple du FTP en mode actif :

1. NOUVEAU

NEW Le paquet a commencé une nouvelle connexion ou autrement associé à à une connexion qui n'a pas vu de paquets dans les deux sens.

Le client sur le port 50000 (un port non privilégié quelconque) se connecte au serveur FTP sur le port 21 le serveur a besoin d'au moins cette information pour accepter cette connexion entrante :

iptables -A INPUT --dport 21 -m state --state NEW -j ACCEPT

2. ÉTABLI

ESTABLISHED Le paquet est associé à une connexion qui a vu passer paquets dans les deux sens.

Maintenant, du côté client, il a ouvert une connexion sortante au serveur sur le port 21 en utilisant un port local 50000 et il a besoin des iptables suivants pour permettre à la réponse d'arriver de server (21) a client (50000) :

sudo iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

3. RELATIONS

RELATED Le paquet démarre une nouvelle connexion, mais est associé à une connexion existante, comme un transfert de données FTP ou une erreur ICMP. ou une erreur ICMP.

Maintenant, après que la connexion FTP a été établie et qu'une connexion de données est sur le point d'être effectuée, le client ouvrira un socket serveur (oui, avec le FTP actif, le client devient un serveur pour la connexion de données) sur le port 60000 (à ma connaissance, le client marquera ce port 60000 comme RELATED à l'autre connexion de 50000->21 ) et enverra ce numéro de port au serveur en utilisant le FTP PORT commande. Ensuite, le serveur FTP ouvrira une nouvelle connexion depuis son port 20 au port 60000 sur le client, et bien, le client a maintenant besoin de ce qui suit pour permettre à cette nouvelle connexion de réussir :

sudo iptables -A INPUT -m state --state RELATED -j ACCEPT

Enfin, pour que cela fonctionne, vous devez activer l'option ip_conntrack_ftp module du noyau pour permettre au système de marquer les connexions/paquets comme étant RELATED (c'est ce que je comprends, je n'ai pas trop creusé la question) :

modprobe ip_conntrack_ftp

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X