![Rede doméstica para aceitar apenas determinados endereços MAC da LAN](https://rvso.com/image/1267885/Rede%20dom%C3%A9stica%20para%20aceitar%20apenas%20determinados%20endere%C3%A7os%20MAC%20da%20LAN.png)
Tenho Ubuntu 10 como roteador com WAN(eth0) e LAN(eth1). Como posso restringir a eth1 para aceitar apenas pacotes de determinados endereços MAC e descartar o restante? Também estou prestes a configurar o DHCP para determinados endereços MAC; no entanto, qualquer pessoa pode definir manualmente o endereço IP. Tenho cerca de 4 a 6 dispositivos próprios que podem usar a rede.
Responder1
Como mencionei nos comentários, não acho que isso proporcione segurança real, ou mesmo mais segurança do que o bloqueio baseado em IP, mas algo como isto deve bastar:
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
Supondo, é claro, que sua política padrão seja DROP.
Responder2
Aqui está um começo para você:
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
Todos os endereços MAC, exceto XX:XX:XX:XX:XX:XX
e, XX:XX:XX:XX:XX:BB
não poderão acessar seu roteador ou a Internet.
Responder3
( Eu souusuário63709; de alguma forma, meu login do Google OpenID e do MyOpenID foram divididos, quando na verdade são iguais no Stack Overflow)
arptables
tem sua própria política. Fazernãoconfunda-o com iptables
a política de.
Como você deseja "restringir [sic] eth1 para aceitar apenas pacotes de determinados endereços MAC e descartar o resto", você iráquereruma política DROP padrão.
(Aliás, cometi um pequeno erro nas regras do arptables acima. Elas deveriam ser :)
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 ...
(Observe novamente queIN
é uma cadeia embutidaespecificamenteencontrado apenas em arptables. LerPágina de manual do arptablesPara maiores informações).
Responder4
Michael, você não pode especificar mais de uma fonte mac por regra, então precisará de um conjunto de regras como o seguinte (se for usar 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
Observe que eles estão na cadeia FORWARD enãoa cadeia INPUT. Ao ter essas regras na cadeia FORWARD, seu roteador Linux não permitirá que nenhum Mac, exceto os permitidos, envie ou receba qualquer tráfego através do roteador. Eles ainda poderão se comunicar com máquinas na mesma sub-rede que as suas (porque isso não exige que passem pelo roteador).
Você também pode controlar quem pode se conectar ao seu roteador duplicando as regras acima para a cadeia de entrada.
#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
Lendo seu comentário sobre uma das outras respostas mais curtas sobre quais casos FORWARD e INPUT funcionam, aqui está uma breve explicação.
AVANÇARaplica-se apenas a pacotes que vãoatravésseu roteador para outras sub-redes ou para a interface do mundo externo (através da WAN).ENTRADAaplica-se a pacotes destinados a terminar no próprio roteador (por exemplo, conexões SSH com o próprio roteador/caixa Linux).