У меня есть Ubuntu 10 как маршрутизатор с WAN (eth0) и LAN (eth1). Как может я restric eth1, чтобы принять только пакеты от определенных MAC-адресов и отбросить остальных? Я также собираюсь установить DHCP к определенным MAC-адресам, однако, любой может вручную установить IP-адрес. Я имею как 4-6 своих собственных устройств, которые могут использовать сеть.
Как я упомянул в комментариях, я не думаю, что это покупает Вас любая реальная безопасность или даже больше безопасность, чем блокирование на основе IP, но что-то вроде этого должно сделать это:
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
Предположение, конечно, что политика по умолчанию является ОТБРАСЫВАНИЕМ.
Вот запуск для Вас:
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
политика.
Так как Вы хотите к "restric [так] eth1 принять только пакеты от определенных MAC-адресов и отбросить остальных", Вы захотите политику ОТБРАСЫВАНИЯ по умолчанию.
(BTW, я сделал небольшую ошибку в правилах 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. Прочитайте страницу справочника arptable для получения дополнительной информации).
Вы могли бы интересоваться arptables
.
Это - вид iptables, но специально для уровня 2. Хотя это может также 'посмотреть' в некоторую информацию 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
. Политика ОТБРАСЫВАНИЯ гарантирует, что другие адреса будут, мм, отброшены.
Michael, Вы не можете указать больше чем один источник 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
Обратите внимание, что они находятся во ВПЕРЕД цепочка а не ВХОДНАЯ цепочка. При наличии этих правил во ВПЕРЕД объединяют Ваш маршрутизатор 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
Чтение комментария к одному из других более коротких ответов, о которых случаях ВПЕРЕД и ВХОДНОЙ работе с, вот короткое объяснение.
ВПЕРЕД только относится к пакетам, проходящим Ваш маршрутизатор к другим подсетям или к внешнему миру (через WAN) интерфейс. ВХОД относится к пакетам, которые предназначены для завершения на самом маршрутизаторе (например, соединения SSH к самому полю маршрутизатора/Linux).