Forum Linux.général Filtrage d'adresses MAC

Posté par  .
Étiquettes : aucune
0
31
mar.
2008
Je bute sur un bête problème. J'ai besoin de filtrer les adresses MAC qui sortent d'une machine Linux.

Je souhaite que eth0 ne laisse passer que les paquets qui contiennent sa propre adresse MAC. J'ai des cartes virtuelles internent qui débordent un peu sur le réseau physique et je veux éviter ça.

Si il y a une option dans /proc alors je ne l'ai pas trouvé.

J'ai essayé avec iptables mais l'option --mac-source est refusée (alors qu'elle est documenté dans la page man).

iptables --table filter --append FORWARD --mac-source ! 00:0B:DB:45:55:45 --jump DROP
iptables v1.3.6: Unknown arg `--mac-source'

J'ai fini par simplifier exagérément ma commande, mais ça ne veut rien savoir:
# iptables -A INPUT --mac-source 00:0B:DB:45:55:45 -j DROP
iptables v1.3.6: Unknown arg `--mac-source'

C'est sur une Etch.

Quelqu'un sait pourquoi ça n'en veut pas ?
Et surtout, comment je peux faire :-)
  • # alors...

    Posté par  . Évalué à 4.

    neox@ubuntu64bits:~ $ iptables -v
    iptables v1.3.6:

    neox@ubuntu64bits:~ $ man iptables
    MATCH EXTENSIONS
    iptables can use extended packet matching modules. These are loaded in two ways: implicitly, when -p or --protocol is specified, or with the -m or --match options, followed by the matching module name;

    After these, various extra command line options become available, depending on the specific module. You can specify multiple extended match modules in one line, and you can use the -h or --help options after the module has been specified to receive help specific to that module. The following are included in the base package, and most of these can be preceded by a ! to invert the sense of the match.
    [...]
    mac
    --mac-source [!] address
    Match source MAC address. It must be of the form XX:XX:XX:XX:XX:XX. Note that this only makes sense for packets coming from an Ethernet device and entering the PREROUTING, FORWARD or INPUT chains.



    ta commande devrait donc contenir
    -m mac --macsource xx:yy:zz:tt:uu
    pour que cela fonctionne
    • [^] # Cha marche beaucoup mieux comme ça

      Posté par  . Évalué à 3.

      En utilisant la bonne syntaxe, ça fonctionne tout de suite mieux. Je me suis bloqué l'accès à ma machine dès la validation de ma ligne. Ahhh, voilà une erreur qui a le mérite de me remplir de joie (pas plus haut que le bord, on sait).

      Ne trouvant pas tout de suite la bonne syntaxe, j'ai simplement demandé à google. Les exemples trouvés n'utilisaient pas "--match mac" ou "-m mac". Pourquoi certains n'en ont pas besoin, question sans réponse pour moi. Où c'était des exemples non testés, genre tutoriels écrits vite-fait. Pas de bol :-)

      Cela dit, une fois la bonne commande mise en place, je constate que des paquets avec la mauvaise MAC sortent toujours.

      J'ai un Linux Debian Etch qui fait tourner vmware. Ce vmware fait tourner des machines virtuelles. Jusqu'ici pas de problème.
      Chaque carte réseau virtuelle a sa propre adresse MAC. Normal. En mode 'bridge', tous les paquets venant des cartes virtuelles sont transmis via eth0. C'est justement ce que je souhaite éviter.
      Netfilter ne semble pas en mesure de filtrer certains paquets. Par exemple il est possible que ce qui touche à ARP ne passe pas par netfilter. Je ne sais pas trop, je vais tenter de trouver de la doc sur le site de netfilter.
      • [^] # Re: Cha marche beaucoup mieux comme ça

        Posté par  . Évalué à 1.

        Les exemples trouvés n'utilisaient pas "--match mac" ou "-m mac". Pourquoi certains n'en ont pas besoin, question sans réponse pour moi.

        parce que tu peux aussi utiliser le --mac-source avec le flag -p (comme indiqué dans mes indications plus haut)
        • [^] # Re: Cha marche beaucoup mieux comme ça

          Posté par  . Évalué à 2.

          parce que tu peux aussi utiliser le --mac-source avec le flag -p

          Justement, non.

          # iptables --table filter --append INPUT --protocol all --match mac --mac-source 00:11:22:33:44:55 --jump DROP
          --> ok

          # iptables --table filter --append INPUT --protocol all --mac-source 00:11:22:33:44:55 --jump DROP
          --> iptables v1.3.6: Unknown arg `--mac-source'

          La bonne blague. La page man n'est pas exacte.

          Et les exemples que j'ai trouvé n'avaient de toutes manières pas '-p'?. Je pense de plus en plus que c'était des exemples non testés. Par exemple la première page retournée par google pour iptables "--mac-source" donne un exemple qui ne fonctionne pas. Ou du moins qui ne fonctionne pas sur MA machine.
  • # Si tu veux filter en entrée et en sortie au niveau mac, utilise

    Posté par  . Évalué à 2.

    arptables

    Les sources sont disponibles à l'adresse :
    http://sourceforge.net/project/showfiles.php?group_id=39571


    Voir la page de man.
    • [^] # Re: Si tu veux filter en entrée et en sortie au niveau mac, utilise

      Posté par  . Évalué à 2.

      J'avais déjà essayé. J'ai omis d'en parler, mais ça ne fonctionne pas non plus pour mon problème. Décidément, je crois que certains paquets DOIVENT passer :-)

      En fait je crois qu'arptables est simplement un programme simplifié par rapport à iptables. Ce qui expliquerait pourquoi ça ne fonctionne dans aucun des deux cas.

      Je vais paramétrer les vmware autrement, mais ça me fait vraiment chxxx.
  • # ebtables

    Posté par  . Évalué à 2.

    J'ai résolu mon problème tout seul avec "ebtables".
    Contrairement à arptables qui filtre au niveau 3, ebtables s'occupe du niveau 2, exactement ce qu'il me fallait.

Suivre le flux des commentaires

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