Forum Linux.redhat Problème iptables / firewalld

Posté par . Licence CC by-sa
1
19
oct.
2016

Bonjour à tous,
J'ai déjà posté cette question sur HFR, mais j'imagine qu'on trouve plus d'experts GNU/Linux ici!

Voici donc mon problème:
Je cherche actuellement à configurer une machine de manière à recopier certains flux vers une autre machine à des fins d'analyse.
Pour cela j'utilise donc la fonctionnalité TEE de netfilter.

Je travaille sous Centos 7 (release 1511), la configuration du pare-feu passe par le biais de firewalld, il faut donc que j'utilise l'interface DIRECT afin de pouvoir définir les règles qui m'intéressent.

Je commence par un fichier assez simple:
<direct>
<rule ipv="ipv4" table="mangle" chain="PREROUTING" priority="0">! -s IP_A_FILTRER -i eno1 -j TEE --gateway IP_ANALYSEUR</rule>
<rule ipv="ipv4" table="mangle" chain="POSTROUTING" priority="0">! -d IP_A_FILTRER -j TEE --gateway IP_ANALYSEUR</rule>
</direct>

Avec cette règle tout fonctionne bien.
J'envoie bien mes flux vers IP_ANALYSEUR sauf les flux concernant IP_A_FILTRER.

La ou cela se corse, c'est si je veux filtrer plusieurs adresses.
J'ai essayé deux méthodes:

  • séparer les adresses par des virgules:

<rule ipv="ipv4" table="mangle" chain="PREROUTING" priority="0">! -s IP_A_FILTRER,IP_A_FILTRER_2 -i eno1 -j TEE --gateway IP_ANALYSEUR</rule>

  • ajout de lignes de règles complètes:

<rule ipv="ipv4" table="mangle" chain="PREROUTING" priority="0">! -s IP_A_FILTRER -i eno1 -j TEE --gateway IP_ANALYSEUR</rule>
<rule ipv="ipv4" table="mangle" chain="PREROUTING" priority="0">! -s IP_A_FILTRER_2 -i eno1 -j TEE --gateway IP_ANALYSEUR</rule>

Dans le premier cas je ne reçois plus de flux du tout sur mon analyseur.
Dans le deuxième cas je reçois des flux sur mon analyseur, mais sans filtrage sur les IP "indésirables".

Je suis loin de maitriser ce pare-feu, avez vous une idée?

Merci par avance pour votre aide!

  • # ipset

    Posté par . Évalué à 2.

    Tu peux essayer d'utiliser IPSet.

  • # Je n'ai pas d'idée de titre

    Posté par (page perso) . Évalué à 4.

    Le premier cas devrait donner le même résultat que le second, car l'utilisation de plusieurs adresses pour « -s » résulte en la création d'une règle pour chaque.

    Dans le second cas il te faut garder à l'esprit que tes 2 lignes sont évaluées. Donc une ip indésirable va forcer fonctionner avec une ligne et pas l'autre.

    solution 1 : inverser la condition

    iptables --table filter --append INPUT --in-interface eno1 --source IP_A_FILTER  --jump ACCEPT
    iptables --table filter --append INPUT --in-interface eno1 --source IP_A_FILTER2 --jump ACCEPT
    iptables --table filter --append INPUT --jump TEE --gateway IP_ANALYSEUR
    

    .

    solution 2 : créer une chaîne additionnelle, et y entrer selon une condition

    iptables --table filter --new-chain TOTO
    iptables --table filter --append TOTO xxxxxxxx    # tu ajoutes les traitements que tu veux
    iptables --table filter --append TOTO yyyyyyyy
    iptables --table filter --append TOTO --jump ACCEPT/DROP/etc    # stopper les traitements
    
    iptables --table filter --append INPUT --in-interface eno1 --source IP_A_FILTER --jump TOTO
    iptables --table filter --append INPUT --in-interface eno1 --source IP_A_FILTER --jump TOTO
    iptables etc etc
    iptables --table filter --append INPUT --jump ACCEPT/DROP/etc   # optionnel
    

    .

    note : je viens de voir que je n'ai pas repris ton exemple avec mangle et PREROUTING. Tu feras la traduction :-)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.