Iptables ip/mac filtrage

Bonjour,

Je cherche à autoriser uniquement l’accès au réseau a des machines via le couple IP/MAC.

Les PC ont des adresses en 192.168.1.XXX, le routeur de “filtrage” aura l’adresse 192.168.1.2 et le routeur pour “internet” aura l’adresse 192.168.1.1 (risque de changer dans un second temps, pour un autre réseau).

Je vais configurer l’interface réseau :
Exemple du PC1 :
IP : 192.168.1.11
MASK : 255.255.255.0
GATEWAY : 192.168.1.2 => routeur filtrage
DNS : 8.8.8.8
Exemple du PC2 :
IP : 192.168.1.12
MASK : 255.255.255.0
GATEWAY : 192.168.1.2 => routeur filtrage
DNS : 8.8.8.8

Afin d’éviter que les utilisateurs changent d’IP à tout va, j’ai pensé rajouter une règle pour chaque IP avec la MAC sur le routeur 192.168.1.2 afin d’autoriser ou non le trafic local/internet.

Si je ne me trompe pas la règle de filtrage une IP = une MAC dans iptables :

[quote]
iptables -A INPUT -s 192.168.1.11 -i eth0 -m mac ! --mac-source 00:1A:92:CB:E1:80 -j DROP[/quote]

Par contre est-ce que cette règle est la bonne est doit être placée en INPUT ?

Merci.

Non. Pour le trafic routé, le filtrage doit plutôt être dans la chaîne FORWARD.
Par ailleurs, cette règle n’interdit pas à la machine qui a cette adresse MAC d’utiliser une autre adresse IP, elle interdit à une autre machine qui a une autre adresse MAC d’utiliser cette adresse IP. Et bien entendu, tout filtrage effectué sur le routeur n’a aucun effet sur le trafic local entre machines du même LAN puisque ce trafic ne passe pas par le routeur.

PS : avec les droits root, ce n’est pas difficile de changer l’adresse MAC.

[quote=“PascalHambourg”]Non. Pour le trafic routé, le filtrage doit plutôt être dans la chaîne FORWARD.
[/quote]
J’avais un doute, merci !

Je ne veux pas que le PC1 utilise l’adresse du PC2 et inversement (même si l’utilisateur peu faire la modif), donc la règle ci-dessus en post1 permet de refuser tout trafic qui ne match pas avec IP/MAC, que se soit pour le LAN ou pour internet non ?
[/quote]

Chut ! Faut pas trop le dire :030

Non. Seule, elle ne permet que de refuser que le trafic émis par une autre machine que A avec l’adresse IP de A, mais pas de refuser le trafic émis par A avec autre adresse IP que la sienne. Si tu ajoutes une règle similaire pour B alors A ne pourra pas utiliser l’adresse IP de B et vice versa, mais les deux pourront utiliser n’importe quelle autre adresse IP.

Je répète : le trafic entre machines du LAN ne passe pas par le routeur et ne peut être filtré que par le switch ou les machines destinataires elles-mêmes.

Oui, je suis d’accord, il faut que je configure iptables avec toutes les IP/Mac des machines afin d’éviter une usurpation :

iptables -A INPUT -s 192.168.1.11 -i eth0 -m mac ! --mac-source 00:1A:92:CB:E1:80 -j DROP
iptables -A INPUT -s 192.168.1.12 -i eth0 -m mac ! --mac-source 00:2B:34:A4:11:BB -j DROP

Sauf… Si je me sert du routeur comme switch, la je pense que cela sera nickel !
En gros faire du bonding sur les interfaces du routeur, puis connecter chaque machine sur le routeur.

En faisant ainsi tu n’empêcheras que l’usurpation des adresse IP déclarées, et non l’utilisation d’adresses IP non déclarées. A moins de déclarer toutes les adresses du sous-réseau, ça va faire beaucoup de règles…

[quote=“seb”]Si je me sert du routeur comme switch, la je pense que cela sera nickel !
En gros faire du bonding sur les interfaces du routeur, puis connecter chaque machine sur le routeur.[/quote]
Il te faut donc une interface par machine à connecter sur le routeur ! Qu’utilises-tu comme routeur filtrant ?
Et je ne vois pas ce que le bonding (agrégation de liens) va t’apporter.