IpTable, explication d'une règle

Fermé
clemccm Messages postés 2 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 17 mai 2005 - 14 mai 2005 à 01:53
clemccm Messages postés 2 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 17 mai 2005 - 17 mai 2005 à 17:40
Salut la communauté !

Voilà je n'arrive pas à bien cerner la règle iptables suivantes :

-A INPUT -i eth0 -p tcp -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP

Ca veut dire qu'on rejette tout ce qui est NEW sauf si tous les flags sont mis ?

C'est pas clair dans ma tête !

4 réponses

kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
14 mai 2005 à 03:01
Mon precedent poste est faux car je n'avais pas regarde la doc d'iptables:

Voila la partie de "man iptables" pour ca:

--tcp-flags [!] mask comp
Match when the TCP flags are as specified. The
first argument is the flags which we should exam­
ine, written as a comma-separated list, and the
second argument is a comma-separated list of flags

Mar 09, 2002 15

which must be set. Flags are: SYN ACK FIN RST URG
PSH ALL NONE. Hence the command
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
will only match packets with the SYN flag set, and
the ACK, FIN and RST flags unset.


donc:
--tcp-flags SYN,RST,ACK SYN

veux dire que le flag SYN doit etre est mis et les deux autres RST,ACK ne doivent pas etre mis!


Maintenat que veux dire ?
! --tcp-flags SYN,RST,ACK SYN

C'est (en theorie) le contraire logique du precedent, c.-a-d.:
SYN n'est pas mis ou RST est mis ou ACK est mis.

Finalement en plus de ca il faut que l'etat = NEW (state=NEW).


Autrement dit:

C'est rejete (plutot "jete" pour DROP au lieu de REJECT) si

l'etat=NEW sauf si [le flag SYN est mis et les deux autres RST,ACK ne sont pas mis].


Effectivement cette regle avec les flags est logiquement assez subtils, il faut bien faire attention!
1
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
14 mai 2005 à 03:06
Salut,

Si tu n'as pas compris la difference entre REJECT et DROP.

REJECT est utilisé pour renvoyer un paquet erroné en réponse au paquet qui correspond . (donc il y a une trace que tu existesur net)

DROP signifie que le paquet est laissé de coté. (ici tu es en mode furtif).

En fait -m tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP veut dire que tu drop les paquets avec SYN non positionné et avec RST et ACK positionné (plutôt que
1
kmf31 Messages postés 1564 Date d'inscription mercredi 30 mars 2005 Statut Contributeur Dernière intervention 22 juin 2007 501
14 mai 2005 à 02:36
Je crois ca rejete (ou plutot ca "jete")

si "etat = NEW" (state=NEW)

et

si les options SYN,RST,ACK SYN ne sont pas mises

donc c'est effectivement comme tu dis:
on rejette tout ce qui est NEW sauf si tous les flags sont mis

avec la toute petite precision ce n'est pas "rejete" (REJECT) mais "jete" (DROP).
0
clemccm Messages postés 2 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 17 mai 2005
17 mai 2005 à 17:40
Nickel, c'est donc logique.

Merci !
0