J'ai Ubuntu 10 comme routeur avec WAN(eth0) et LAN(eth1). Comment puis-je restreindre eth1 pour qu'il n'accepte que les paquets provenant de certaines adresses MAC et qu'il laisse tomber le reste ? Je suis également sur le point de configurer DHCP à certaines adresses MAC, cependant, tout le monde peut définir manuellement l'adresse IP. J'ai environ 4 à 6 appareils personnels qui peuvent utiliser le réseau.
Réponses
Trop de publicités?Comme je l'ai mentionné dans les commentaires, je ne pense pas que cela vous apporte une réelle sécurité, ou même plus de sécurité que le blocage basé sur l'IP, mais quelque chose comme cela devrait le faire :
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
En supposant, bien sûr, que votre politique par défaut est DROP.
Voici un début pour vous :
iptables -P FORWARD DROP
iptables -I FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
iptables -I FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:BB -j ACCEPT
iptables -P INPUT DROP
iptables -I INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
iptables -I INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:BB -j ACCEPT
Toutes les adresses mac autres que XX:XX:XX:XX:XX:XX
y XX:XX:XX:XX:XX:BB
ne sera pas en mesure d'accéder à votre routeur ou à l'Internet.
( Je suis utilisateur63709 ; en quelque sorte, mon identifiant Google OpenID et mon identifiant MyOpenID ont été séparés, alors que c'est la même chose dans Stack Overflow)
arptables
a sa propre politique. Faites pas le confondre avec iptables
La politique de l'UE.
Puisque vous voulez "restreindre [ sic eth1 pour accepter uniquement les paquets provenant de certaines adresses MAC et rejeter le reste", vous allez veulent une politique DROP par défaut.
(BTW, j'ai fait une légère erreur dans les règles d'arptables ci-dessus. Elles devraient être :)
arptables -P IN DROP
arptables -A IN -i eth1 --source-mac <allowed_mac_address> -j ACCEPT
arptables -A IN -i eth1 --source-mac <allowed_mac_address> -j ACCEPT
... and so on ...
(Notez encore une fois que IN
est une chaîne intégrée spécifiquement que l'on ne trouve que dans les arptables. Lire Page de manuel "arptables pour plus d'informations).
Vous pourriez être intéressé par arptables
.
C'est un peu comme iptables, mais spécifiquement pour la couche 2. Bien qu'il puisse également "jeter un coup d'œil" à certaines informations L3.
arptables -P IN DROP
arptables -A IN --source-hw <allowed_mac_address> -j ACCEPT
arptables -A IN --source-hw <allowed_mac_address> -j ACCEPT
... and so on ...
Chaque fois qu'il y a une nouvelle adresse MAC que vous voulez autoriser, il suffit de faire arptables -A IN --source-hw <address> -j ACCEPT
. La politique DROP garantit que les autres adresses seront, euh, abandonnées.
Michael, vous ne pouvez pas spécifier plus d'une source de mac par règle. Vous aurez donc besoin d'un ensemble de règles comme les suivantes (si vous utilisez iptables)
#Rules for allowing your mac addresses
/sbin/iptables -A FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:11 -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:22 -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:33 -j ACCEPT
#One final rule to drop all packets which do not match one of the rules above (are not from one of your allowed macs)
/sbin/iptables -A FORWARD -i eth1 -j DROP
Notez que ces derniers sont dans la chaîne FORWARD et pas la chaîne INPUT. En ayant ces règles dans la chaîne FORWARD, votre routeur linux ne laissera aucun mac, sauf ceux qui sont autorisés, envoyer ou recevoir du trafic à travers le routeur. Ils pourront toujours communiquer avec des machines situées sur le même sous-réseau que le leur (car cela ne nécessite pas de passer par le routeur).
Vous pouvez également contrôler qui peut se connecter à votre routeur en reproduisant les règles ci-dessus pour la chaîne d'entrée.
#Rules for allowing your mac addresses
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:11 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:22 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:33 -j ACCEPT
#One final rule to drop all packets which do not match one of the rules above (are not from one of your allowed macs)
/sbin/iptables -A INPUT -i eth1 -j DROP
En lisant votre commentaire sur l'une des autres réponses plus courtes concernant les cas avec lesquels FORWARD et INPUT fonctionnent, voici une courte explication.
FORWARD s'applique uniquement aux paquets allant par le biais de votre routeur vers d'autres sous-réseaux ou vers le monde extérieur (via l'interface WAN). INPUT s'applique aux paquets qui sont destinés à se terminer sur le routeur lui-même (par exemple, les connexions SSH au routeur/boîte Linux lui-même).