У меня Ubuntu 10 в качестве маршрутизатора с WAN(eth0) и LAN(eth1). Как я могу ограничить eth1 для приема только пакетов с определенных MAC-адресов и отбросить остальные? Я также собираюсь настроить DHCP для определенных MAC-адресов, однако, любой может вручную установить IP-адрес. У меня есть 4-6 моих собственных устройств, которые могут использовать сеть.
5 ответов
Как я упоминал в комментариях, я не думаю, что это дает вам какую-то реальную безопасность или даже большую безопасность, чем блокировка на основе IP, но что-то вроде этого должно сделать это:
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
Предполагая, конечно, что вашей политикой по умолчанию является DROP.
Вот начало для вас:
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
, не смогут получить доступ к вашему маршрутизатору или Интернету.
(Я user63709 ; каким-то образом мои логин в Google OpenID и логин в MyOpenID разделились, хотя на самом деле они одинаковы в переполнении стека)
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 для получения дополнительной информации).
Майкл, вы не можете указать более одного источника 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, вот краткое объяснение.
FORWARD применяется только к пакетам, проходящим через ваш маршрутизатор в другие подсети или к интерфейсу внешнего мира (через WAN). INPUT применяется к пакетам, которые предназначены для завершения на самом маршрутизаторе (например, SSH-подключения к самому маршрутизатору /linux box).
Вы можете быть заинтересованы в arptables
.
Это своего рода iptables, но специально для второго уровня. Хотя он также может «заглянуть» в некоторую информацию 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 ...
Всякий раз, когда вы хотите разрешить новый MAC-адрес, просто сделайте arptables -A IN --source-hw <address> -j ACCEPT
. Политика DROP гарантирует, что другие адреса будут отброшены.