3

У меня Ubuntu 10 в качестве маршрутизатора с WAN(eth0) и LAN(eth1). Как я могу ограничить eth1 для приема только пакетов с определенных MAC-адресов и отбросить остальные? Я также собираюсь настроить DHCP для определенных MAC-адресов, однако, любой может вручную установить IP-адрес. У меня есть 4-6 моих собственных устройств, которые могут использовать сеть.

5 ответов5

2

Как я упоминал в комментариях, я не думаю, что это дает вам какую-то реальную безопасность или даже большую безопасность, чем блокировка на основе 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 , не смогут получить доступ к вашему маршрутизатору или Интернету.

1

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 для получения дополнительной информации).

0

Майкл, вы не можете указать более одного источника 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).

0

Вы можете быть заинтересованы в 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 гарантирует, что другие адреса будут отброшены.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .