• iptables vs iptables-legacy

    From =?UTF-8?Q?BERTRAND_Jo=c3=abl?=@21:1/5 to All on Tue Jun 27 18:50:01 2023
    Bonsoir à tous,

    J'ai toujours écrit mes firewalls à la main. Aujourd'hui, un script charge au démarrage le contenu de /var/lib/iptables/active au travers de iptables (nf_tables).

    Or iptables-legacy est toujours disponible.

    J'avoue avoir un peu de mal à comprendre le lien entre les deux filtres.

    Root rayleigh:[~] > iptables-legacy -L
    Chain INPUT (policy ACCEPT)
    target prot opt source destination

    Chain FORWARD (policy ACCEPT)
    target prot opt source destination

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    Root rayleigh:[~] > Root rayleigh:[~] > iptables -L
    # Warning: iptables-legacy tables present, use iptables-legacy to see them Chain INPUT (policy DROP)
    target prot opt source destination
    f2b-recidive tcp -- anywhere anywhere
    ACCEPT all -- anywhere anywhere
    ACCEPT all -- anywhere anywhere
    ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:smtp
    ...
    Chain f2b-recidive (1 references)
    target prot opt source destination
    REJECT all -- subnet.crackbox.io anywhere
    reject-with icmp-port-unreachable
    REJECT all -- 193.56.29.178 anywhere
    reject-with icmp-port-unreachable
    REJECT all -- 147.78.103.120 anywhere
    reject-with icmp-port-unreachable
    RETURN all -- anywhere anywhere
    Root rayleigh:[~] >

    D'après iptables-legacy, tout est ouvert. D'après iptables, tout est fermé sauf ce qui est explicitement ouvert.

    La question est simple. Si je change la règle par défaut iptables-legacy -DINPUT DROP, plus rien ne fonctionne. Les deux systèmes sont-ils en série ? Un paquet traverse-t-il d'abord un système de filtre
    puis l'autre en séquence ? Je n'ai pas trouvé l'information (je dois
    chercher au mauvais endroit)...

    Bien cordialement,

    JB

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From NoSpam@21:1/5 to All on Tue Jun 27 19:50:01 2023
    Bonsoir

    https://developers.redhat.com/blog/2020/08/18/iptables-the-two-variants-and-their-relationship-with-nftables#using_iptables_nft

    peut aider à comprendre. Perso j'ai basculer sur nftables.

    Le 27/06/2023 à 18:46, BERTRAND Joël a écrit :
    Bonsoir à tous,

    J'ai toujours écrit mes firewalls à la main. Aujourd'hui, un script charge au démarrage le contenu de /var/lib/iptables/active au travers de iptables (nf_tables).

    Or iptables-legacy est toujours disponible.

    J'avoue avoir un peu de mal à comprendre le lien entre les deux filtres.

    Root rayleigh:[~] > iptables-legacy -L
    Chain INPUT (policy ACCEPT)
    target prot opt source destination

    Chain FORWARD (policy ACCEPT)
    target prot opt source destination

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    Root rayleigh:[~] > Root rayleigh:[~] > iptables -L
    # Warning: iptables-legacy tables present, use iptables-legacy to see them Chain INPUT (policy DROP)
    target prot opt source destination
    f2b-recidive tcp -- anywhere anywhere
    ACCEPT all -- anywhere anywhere
    ACCEPT all -- anywhere anywhere
    ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:smtp ...
    Chain f2b-recidive (1 references)
    target prot opt source destination
    REJECT all -- subnet.crackbox.io anywhere
    reject-with icmp-port-unreachable
    REJECT all -- 193.56.29.178 anywhere
    reject-with icmp-port-unreachable
    REJECT all -- 147.78.103.120 anywhere
    reject-with icmp-port-unreachable
    RETURN all -- anywhere anywhere
    Root rayleigh:[~] >

    D'après iptables-legacy, tout est ouvert. D'après iptables, tout est fermé sauf ce qui est explicitement ouvert.

    La question est simple. Si je change la règle par défaut iptables-legacy -DINPUT DROP, plus rien ne fonctionne. Les deux systèmes sont-ils en série ? Un paquet traverse-t-il d'abord un système de filtre puis l'autre en séquence ? Je n'ai pas trouvé l'information (je dois chercher au mauvais endroit)...

    Bien cordialement,

    JB

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?BERTRAND_Jo=c3=abl?=@21:1/5 to All on Tue Jun 27 21:00:01 2023
    NoSpam a écrit :
    Bonsoir

    https://developers.redhat.com/blog/2020/08/18/iptables-the-two-variants-and-their-relationship-with-nftables#using_iptables_nft

    Merci.

    Mais ça ne répond pas trop à ma question sauf s'il faut comprendre entre les lignes que les paquets passent d'abord par les xtables avant
    de passer par les nftables.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From TOOTAi@21:1/5 to All on Tue Jun 27 22:20:01 2023
    C' est ce que j' ai compris

    ⁣--
    Daniel Huhardeaux​

    Le 27 juin 2023 à 20:52, à 20:52, "BERTRAND Joël" <joel.bertrand@systella.fr> a écrit:
    NoSpam a écrit :
    Bonsoir

    https://developers.redhat.com/blog/2020/08/18/iptables-the-two-variants-and-their-relationship-with-nftables#using_iptables_nft

    Merci.

    Mais ça ne répond pas trop à ma question sauf s'il faut comprendre
    entre les lignes que les paquets passent d'abord par les xtables avant
    de passer par les nftables.

    <html><head></head><body style="zoom: 0%;"><div dir="auto">C' est ce que j' ai compris <br><br></div>
    <div dir="auto"><!-- tmjah_g_1299s -->--<!-- tmjah_g_1299e --><br></div>
    <div dir="auto"><!-- tmjah_g_1299s -->Daniel Huhardeaux<!-- tmjah_g_1299e --></div>
    <div class="gmail_quote" >Le 27 juin 2023, à 20:52, "BERTRAND Joël" &lt;<a href="mailto:joel.bertrand@systella.fr" target="_blank">joel.bertrand@systella.fr</a>&gt; a écrit:<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left:
    1px solid rgb(204, 204, 204); padding-left: 1ex;">
    <pre class="blue">NoSpam a écrit&nbsp;:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> Bonsoir<br> <br> <a href="https://developers.redhat.com/blog/2020/08/18/iptables-the-two-
    variants-and-their-relationship-with-nftables#using_iptables_nft">https://developers.redhat.com/blog/2020/08/18/iptables-the-two-variants-and-their-relationship-with-nftables#using_iptables_nft</a><br></blockquote><br> Merci.<br><br> Mais ça ne répond
    pas trop à ma question sauf s'il faut comprendre<br>entre les lignes que les paquets passent d'abord par les xtables avant<br>de passer par les nftables.<br></pre></blockquote></div></body></html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michel Verdier@21:1/5 to All on Wed Jun 28 08:40:02 2023
    Le 27 juin 2023 BERTRAND Joël a écrit :

    NoSpam a écrit :
    Bonsoir

    https://developers.redhat.com/blog/2020/08/18/iptables-the-two-variants-and-their-relationship-with-nftables#using_iptables_nft

    Merci.

    Mais ça ne répond pas trop à ma question sauf s'il faut comprendre entre les lignes que les paquets passent d'abord par les xtables avant
    de passer par les nftables.

    Plutôt qu'une doc redhat (un comble sur cette liste) il faut utiliser la source :
    https://wiki.nftables.org/wiki-nftables/index.php/What_is_nftables%3F

    Donc dans xtables le x c'est pour ip/ip6/... nftables c'est ça qu'il faut utiliser de nos jours. Et les xtables et nftables ce sont les outils pour utiliser netfilter. Les paquets ne passent que par netfilter. Et il
    vaut mieux ne pas mixer les outils : https://unix.stackexchange.com/questions/687857/what-is-the-relationship-or-difference-among-iptables-xtables-iptables-nft-xt
    Et d'ailleurs pourquoi mixer les outils ?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?BERTRAND_Jo=c3=abl?=@21:1/5 to All on Wed Jun 28 10:00:02 2023
    Michel Verdier a écrit :
    Et d'ailleurs pourquoi mixer les outils ?

    Pourquoi ? Mais parce que fail2ban dans sa configuration par défaut s'est mis à utiliser nftables alors qu'il est tout à fait possible
    d'utiliser un firewall iptables (xtables) par ailleurs. J'ai d'ailleurs modifié ces scripts pour remplacer iptables par iptables-legacy parce
    qu'un temps, Debian ne fournissait pas un iptables capable de travailler
    sur les nftables.

    Je suis un peu flemmard sur les bords. Lorsque j'ai un serveur connecté
    à plusieurs réseaux et des VPN avec un firewall de plusieurs centaines
    de lignes qui est éprouvé, je ne m'amuse pas à le changer pour le fun et
    la beauté du geste. Par ailleurs, la syntaxe iptables fonctionne
    toujours pour les nftables (raison pour laquelle on se retrouve avec iptables-legacy et iptables). Il n'y a donc aucune raison valable à ce
    que les deux mécanismes cohabitent. À l'extrême limite, ce genre de
    chose est une bidouille interne au noyau et cela devrait être
    transparent du point de vue de l'utilisateur.

    JB

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From didier gaumet@21:1/5 to All on Wed Jun 28 11:00:02 2023
    Le 28/06/2023 à 08:32, Michel Verdier a écrit :

    Plutôt qu'une doc redhat (un comble sur cette liste) il faut utiliser la source : https://wiki.nftables.org/wiki-nftables/index.php/What_is_nftables%3F

    La plupart du temps, tu as raison, c'est mieux de directement se
    renseigner sur le site de l'éditeur du logiciel concerné

    Ceci dit, sans polémique aucune, parfois les docs ou les wiki d'autres
    distros sont plus détaillées, précises, à jour, etc... que ceux de
    Debian :-)

    Donc dans xtables le x c'est pour ip/ip6/... nftables c'est ça qu'il faut utiliser de nos jours. Et les xtables et nftables ce sont les outils pour utiliser netfilter. Les paquets ne passent que par netfilter.
    [...]

    Je suis une vraie truffe en réseaux et en sécurité (donc, à la croisée
    des chemins, en pare-feux),
    mais de ce que j'avais cru comprendre, il y a des frontends (tables
    xtables ou tables nft) à des backends (netfilter ou nft).
    Le backend nft serait une version révisée du backend netfilter, par la même équipe, en s'appuyant sur certaines parties de l'ancien backend netfilter. Si on cherche dans /boot/config*, on trouve des chaînes CONFIG_NETFILTER* et CONFIG_NFT.
    Et si tout passait par netfilter, il n'y aurait pas de distingo entre iptables-legacy et iptables-nft vu que ce serait la même chose (des
    tables iptables attaquant un backend netfilter)

    Enfin, j'ai peut-être rien pigé, hein :-)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michel Verdier@21:1/5 to All on Wed Jun 28 13:10:01 2023
    Le 28 juin 2023 didier gaumet a écrit :

    Le 28/06/2023 à 08:32, Michel Verdier a écrit :

    Plutôt qu'une doc redhat (un comble sur cette liste) il faut utiliser la
    source :
    https://wiki.nftables.org/wiki-nftables/index.php/What_is_nftables%3F

    La plupart du temps, tu as raison, c'est mieux de directement se renseigner sur le site de l'éditeur du logiciel concerné

    Ceci dit, sans polémique aucune, parfois les docs ou les wiki d'autres distros
    sont plus détaillées, précises, à jour, etc... que ceux de Debian :-)

    Archwiki ou ubuntu je veux bien, mais redhat c'est assez souvent en
    décalage par rapport à debian. Là en l'occurence c'est la bible nftables.

    mais de ce que j'avais cru comprendre, il y a des frontends (tables xtables ou tables nft) à des backends (netfilter ou nft).
    Le backend nft serait une version révisée du backend netfilter, par la même
    équipe, en s'appuyant sur certaines parties de l'ancien backend netfilter. Si
    on cherche dans /boot/config*, on trouve des chaînes CONFIG_NETFILTER* et CONFIG_NFT.

    netfilter c'est le framework de filtrage du kernel, et il est toujours d'actualité. Il supporte nf_tables et/ou xtables (donc ip_tables). nft
    c'est l'outil userspace pour parmétrer nf_tables.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Michel Verdier@21:1/5 to All on Wed Jun 28 13:20:01 2023
    Le 28 juin 2023 BERTRAND Joël a écrit :

    Je suis un peu flemmard sur les bords. Lorsque j'ai un serveur connecté
    à plusieurs réseaux et des VPN avec un firewall de plusieurs centaines
    de lignes qui est éprouvé, je ne m'amuse pas à le changer pour le fun et la beauté du geste. Par ailleurs, la syntaxe iptables fonctionne
    toujours pour les nftables (raison pour laquelle on se retrouve avec iptables-legacy et iptables). Il n'y a donc aucune raison valable à ce
    que les deux mécanismes cohabitent. À l'extrême limite, ce genre de
    chose est une bidouille interne au noyau et cela devrait être
    transparent du point de vue de l'utilisateur.

    Je ne sais pas comment sont gérées les utilisations conjointes de
    nf_tables et ip_tables. Mais les 2 sont parcourues, le problème est qu'on
    ne sait pas vraiment dans quel ordre. Entre autre je crois qu'il y a des chaines supplémentaires en nf_tables et les priorités ne doivent sans
    doute pas refléter la même chose.

    C'est sûr qu'il y a un risque à migrer de iptables à nftables mais c'est assez rapide à faire : nftables permet de synthétiser pas mal de choses.
    Et le gain de nftables en clarté des règles et aussi de rapidité (du
    moins en utilisant les nouveautés de nftables) est assez important.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jacques@21:1/5 to All on Wed Jun 28 13:40:01 2023
    Bonjour,

    Si j'en crois /usr/share/doc/iptables/README.Debian , il convient de ne
    pas mélanger sur un même système iptables-nft et iptables-legacy sous
    peine d'avoir un comportement imprévisible :-(

    "man iptables-legacy" et man "iprables-nft" fournissent des informations
    sur les différences entre les 2 outils

    Bonne lecture , même si ça ne répond pas directement à la question ;-)

    Cordialement

    Jacques

    Le 27/06/2023 à 18:46, BERTRAND Joël a écrit :
    Bonsoir à tous,

    J'ai toujours écrit mes firewalls à la main. Aujourd'hui, un script charge au démarrage le contenu de /var/lib/iptables/active au travers de iptables (nf_tables).

    Or iptables-legacy est toujours disponible.

    J'avoue avoir un peu de mal à comprendre le lien entre les deux filtres.

    Root rayleigh:[~] > iptables-legacy -L
    Chain INPUT (policy ACCEPT)
    target prot opt source destination

    Chain FORWARD (policy ACCEPT)
    target prot opt source destination

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    Root rayleigh:[~] > Root rayleigh:[~] > iptables -L
    # Warning: iptables-legacy tables present, use iptables-legacy to see them Chain INPUT (policy DROP)
    target prot opt source destination
    f2b-recidive tcp -- anywhere anywhere
    ACCEPT all -- anywhere anywhere
    ACCEPT all -- anywhere anywhere
    ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ACCEPT tcp -- anywhere anywhere tcp dpt:smtp ...
    Chain f2b-recidive (1 references)
    target prot opt source destination
    REJECT all -- subnet.crackbox.io anywhere
    reject-with icmp-port-unreachable
    REJECT all -- 193.56.29.178 anywhere
    reject-with icmp-port-unreachable
    REJECT all -- 147.78.103.120 anywhere
    reject-with icmp-port-unreachable
    RETURN all -- anywhere anywhere
    Root rayleigh:[~] >

    D'après iptables-legacy, tout est ouvert. D'après iptables, tout est fermé sauf ce qui est explicitement ouvert.

    La question est simple. Si je change la règle par défaut iptables-legacy -DINPUT DROP, plus rien ne fonctionne. Les deux systèmes sont-ils en série ? Un paquet traverse-t-il d'abord un système de filtre puis l'autre en séquence ? Je n'ai pas trouvé l'information (je dois chercher au mauvais endroit)...

    Bien cordialement,

    JB


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From didier gaumet@21:1/5 to All on Wed Jun 28 14:20:01 2023
    Le 28/06/2023 à 13:05, Michel Verdier a écrit :
    Le 28 juin 2023 didier gaumet a écrit :
    [...]
    mais de ce que j'avais cru comprendre, il y a des frontends (tables xtables
    ou tables nft) à des backends (netfilter ou nft).
    Le backend nft serait une version révisée du backend netfilter, par la même
    équipe, en s'appuyant sur certaines parties de l'ancien backend netfilter. Si
    on cherche dans /boot/config*, on trouve des chaînes CONFIG_NETFILTER* et >> CONFIG_NFT.

    netfilter c'est le framework de filtrage du kernel, et il est toujours d'actualité. Il supporte nf_tables et/ou xtables (donc ip_tables). nft
    c'est l'outil userspace pour parmétrer nf_tables.

    Merci d'avoir clarifié... vu que j'avais compris de travers :-)

    Donc oui, je croyais -à tort- que la composante nftables en espace noyau était était une évolution de netfilter, s'appuyant dessus mais le remplaçant, alors que, non, comme tu le soulignes, nftables c'est
    simplement le remplaçant de xtables.

    pour ceux, comme moi, pour qui un petit schéma bien visuel et coloré
    favorise une compréhension autrement un peu faible, il y a ça sur
    Wikipedia ;-) https://upload.wikimedia.org/wikipedia/commons/d/dd/Netfilter-components.svg

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)