У меня Ubuntu 10 в качестве маршрутизатора с WAN(eth0) и LAN(eth1). Как мне ограничить eth1, чтобы он принимал только пакеты с определенных MAC-адресов и отбрасывал остальные? Я также собираюсь настроить DHCP на определенные MAC-адреса, однако любой может вручную задать IP-адрес. У меня есть около 4-6 собственных устройств, которые могут использовать сеть.
решение1
Как я уже упоминал в комментариях, я не думаю, что это даст вам реальную безопасность или даже большую безопасность, чем блокировка по IP, но что-то вроде этого должно помочь:
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
Конечно, если ваша политика по умолчанию — DROP.
решение2
Вот вам начало:
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
Все MAC-адреса, отличные от XX:XX:XX:XX:XX:XX
и , XX:XX:XX:XX:XX:BB
не смогут получить доступ к вашему маршрутизатору или Интернету.
решение3
( Япользователь63709; каким-то образом мой логин Google OpenID и логин MyOpenID разделились, хотя на самом деле в Stack Overflow это одно и то же)
arptables
имеет свою собственную политику.нетпутайте это с iptables
политикой.
Поскольку вы хотите «ограничить [так в оригинале] eth1 принимать пакеты только с определенных MAC-адресов и отбрасывать остальные", выхотетьполитика DROP по умолчанию.
(Кстати, я допустил небольшую ошибку в правилах arptables выше. Они должны быть такими:)
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 ...
(Еще раз обратите внимание, чтоIN
это встроенная цепьконкретнонайдено только в arptables. ЧитатьСтраница руководства arptablesЧтобы получить больше информации).
решение4
Майкл, вы не можете указать более одного источника mac на правило, поэтому вам понадобится набор правил, подобных следующему (если вы собираетесь использовать 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
Обратите внимание, что они находятся в цепочке FORWARD инетцепочка INPUT. Имея эти правила в цепочке FORWARD, ваш маршрутизатор Linux не позволит никаким компьютерам Mac, кроме разрешенных вами, отправлять или получать трафик через маршрутизатор. Они по-прежнему смогут общаться с машинами в той же подсети, что и их собственная (потому что это не требует от них прохождения через маршрутизатор).
Вы также можете контролировать, кто может подключаться к вашему маршрутизатору, продублировав приведенные выше правила для входной цепочки.
#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
Читая ваш комментарий к одному из более коротких ответов о том, в каких случаях работают FORWARD и INPUT, вот краткое объяснение.
ВПЕРЕДприменяется только к пакетам, идущимчерезвашего маршрутизатора к другим подсетям или к внешнему миру (через интерфейс WAN).ВХОДприменяется к пакетам, которые предназначены для завершения на самом маршрутизаторе (например, SSH-подключения к самому маршрутизатору/Linux-компьютеру).