Rede doméstica para aceitar apenas determinados endereços MAC da LAN

3

Eu tenho o Ubuntu 10 como roteador com WAN (eth0) e LAN (eth1). Como posso restringir a eth1 para aceitar apenas pacotes de certos endereços MAC e descartar o resto? Eu também estou prestes a configurar o DHCP para determinados endereços MAC, no entanto, qualquer um pode definir manualmente o endereço IP. Eu tenho como 4-6 meus próprios dispositivos que podem usar a rede.

    
por Pablo 08.03.2011 / 05:23

5 respostas

2

Como mencionei nos comentários, não acho que isso lhe dê qualquer segurança real, ou mesmo mais segurança do que o bloqueio com base em IP, mas algo como isso deve ser feito:

/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 é DROP.

    
por 08.03.2011 / 05:39
2

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 diferentes de XX:XX:XX:XX:XX:XX e XX:XX:XX:XX:XX:BB não poderão acessar seu roteador ou a Internet.

    
por 08.03.2011 / 05:42
1

(Eu sou user63709 ; de alguma forma meu login do OpenID do Google e login do MyOpenID foram divididos, quando na verdade é o mesmo no Stack Overflow)

arptables tem sua própria política. Não não confunda com a política de iptables .

Como você deseja "restringir [ sic ] eth1 para aceitar somente pacotes de certos endereços MAC e soltar o resto", você desejará uma política DROP padrão.

(BTW, cometi um pequeno erro nas regras de arptables acima. Elas devem 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 ...

(Note novamente que IN é uma cadeia interna especificamente encontrada somente em arptables. página man do arptables para mais informações).

    
por 08.03.2011 / 11:16
0

Você pode estar interessado em arptables .

É uma espécie de iptables, mas especificamente para a camada 2. Embora também possa 'espiar' algumas informações 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 ...

Sempre que houver um novo endereço MAC que você queira permitir, basta fazer arptables -A IN --source-hw <address> -j ACCEPT . A política DROP garante que outros endereços sejam descartados.

    
por 08.03.2011 / 09:47
0

Michael, você não pode especificar mais de uma fonte mac por regra, então você precisará de um conjunto de regras como as seguintes (se você for usar o 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 e não na cadeia INPUT. Ao ter essas regras na cadeia FORWARD, seu roteador linux não permitirá que nenhum Mac, exceto os permitidos, envie ou receba 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 elas 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 trabalham, aqui está uma breve explicação.

FORWARD só se aplica a pacotes que vão através de seu roteador para outras sub-redes ou para o mundo externo (através da WAN). INPUT aplica-se a pacotes que são destinados a terminar no próprio roteador (por exemplo, conexões SSH à própria caixa do roteador / linux).

    
por 10.03.2011 / 16:10