IpTable, explication d'une règle

clemccm Messages postés 2 Statut Membre -  
clemccm Messages postés 2 Statut Membre -
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

  1. kmf31 Messages postés 1564 Statut Contributeur 501
     
    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
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  3. kmf31 Messages postés 1564 Statut Contributeur 501
     
    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
  4. clemccm Messages postés 2 Statut Membre
     
    Nickel, c'est donc logique.

    Merci !
    0