Ich habe Ubuntu 10 als Router mit WAN (eth0) und LAN (eth1). Wie kann ich eth1 so einschränken, dass nur Pakete von bestimmten MAC-Adressen akzeptiert werden und der Rest verworfen wird? Ich bin auch dabei, DHCP für bestimmte MAC-Adressen einzurichten, aber jeder kann die IP-Adresse manuell festlegen. Ich habe etwa 4-6 eigene Geräte, die das Netzwerk nutzen können.
Antwort1
Wie ich in den Kommentaren erwähnt habe, glaube ich nicht, dass Sie dadurch wirkliche Sicherheit erhalten, und auch nicht mehr Sicherheit als durch eine IP-basierte Blockierung, aber so etwas wie das Folgende sollte genügen:
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
Vorausgesetzt natürlich, Ihre Standardrichtlinie ist DROP.
Antwort2
Hier ist ein Anfang für Sie:
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
Alle anderen Mac-Adressen außer XX:XX:XX:XX:XX:XX
und XX:XX:XX:XX:XX:BB
können nicht auf Ihren Router oder das Internet zugreifen.
Antwort3
( Ich binBenutzer63709; irgendwie wurden meine Google OpenID-Anmeldung und meine MyOpenID-Anmeldung getrennt, obwohl sie bei Stack Overflow eigentlich gleich sind)
arptables
hat seine eigene Politik.nichtverwechseln Sie es mit iptables
der Politik von .
Da Sie [so] eth1 nur Pakete von bestimmten MAC-Adressen zu akzeptieren und den Rest zu verwerfen", werden Siewolleneine Standard-DROP-Richtlinie.
(Übrigens ist mir in den obigen Arptables-Regeln ein kleiner Fehler unterlaufen. Das sollten sie sein:)
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 ...
(Beachten Sie noch einmal, dassIN
ist eine eingebaute Kettespeziellnur in Arptables zu finden. LesenManpage von arptablesfür mehr Informationen).
Antwort4
Michael, Sie können nicht mehr als eine Mac-Quelle pro Regel angeben, daher benötigen Sie einen Satz Regeln wie den folgenden (wenn Sie iptables verwenden möchten)
#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
Beachten Sie, dass diese in der FORWARD-Kette sind undnichtdie INPUT-Kette. Wenn Sie diese Regeln in der FORWARD-Kette haben, lässt Ihr Linux-Router keinen Mac außer den von Ihnen zugelassenen Daten über den Router senden oder empfangen. Sie können weiterhin mit Maschinen im selben Subnetz wie ihrem eigenen kommunizieren (da sie dazu nicht den Router passieren müssen).
Sie können auch steuern, wer eine Verbindung zu Ihrem Router herstellen kann, indem Sie die oben genannten Regeln für die Eingabekette duplizieren.
#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
Nachdem ich Ihren Kommentar zu einer der anderen kürzeren Antworten darüber gelesen habe, mit welchen Fällen FORWARD und INPUT funktionieren, folgt hier eine kurze Erklärung.
NACH VORNEgilt nur für Pakete, diedurchIhren Router mit anderen Subnetzen oder mit der Außenwelt (über das WAN).EINGANGgilt für Pakete, die am Router selbst enden sollen (z. B. SSH-Verbindungen zum Router/Linux-Box selbst).