Preciso impedir que determinados hosts (multi-OS) em nossa LAN obtenham acesso à Internet. Decidi tentar bloquear certos hosts por endereço MAC via iptables, mas não consigo usar o endereço MAC da estação de trabalho, pois ele atravessa um switch L3 e o quadro é reconstruído com a interface mac do switch. Confirmei isso usando o tshark
utilitário wireshark.
Eu sei que posso bloquear por endereço IP, mas não posso controlar se um usuário alterar seu IP e, assim, o bloqueio será contornado. Estou pensando que uma solução poderia ser alcançada com um script que faça o seguinte:
- Atualize a tabela arp usando fping:
fping -c 1 -g 10.10.10.0/24
- Grep na tabela arp para obter IP de uma lista de endereços MAC, digamos em um arquivo:
arp -n | grep "00:11:22:aa:bb:cc" | awk '{print $1}'
- Crie um hash ou array e atualize dinamicamente o iptables com os endereços IP que precisam ser bloqueados. Eu provavelmente usaria um arquivo e faria algo como
iptables-restore < ips_to_deny
. - Execute este script, digamos, a cada 5 minutos ou mais. (Não tenho certeza sobre o tempo)
Então... a questão. Você vê alguma falha neste método? Ou maneiras de torná-lo melhor?
- A falsificação do Mac vem à mente, mas os usuários do host não têm acesso de administrador.
Eu usaria Perl ou Ruby para o script, se isso importasse muito.
Responder1
Tive que lidar com uma situação semelhante ao organizar grandes grupos em LAN (> 500 usuários), onde você não tem controle sobre as estações de trabalho, bastante interessante.
se o seu switch L3 (roteador, tecnicamente) for de qualidade razoavelmente alta, provavelmente será gerenciável por SNMP, e você poderá ler sua tabela ARP para a sub-rede apropriada (aquela que se conecta diretamente às estações), para recuperar o mac/ip efetivo mapeamentos.
No entanto, se você tem medo de que a máquina mude de IP sem o seu consentimento, provavelmente também deve se preocupar com a mudança de MAC da máquina. Se você confia que a máquina não mudará de MAC, outra opção que usamos foi analisar os logs do servidor DHCP. Como bônus, você também pode correlacionar os logs DHCP e as tabelas ARP para detectar spoofers.
Se seus switches suportarem, você também poderá usar a autenticação 802.1x. Neste modo, uma máquina deve autenticar-se no switch através do Radius antes de realmente começar a comutar pacotes e, para cada autenticação, o servidor Radius recebe a identidade, a localização física e o MAC da estação.
Responder2
Tudo isso me parece excessivamente complicado e sujeito a se tornar uma daquelas soluções "customizadas" que tendem a se tornar um problema no futuro (ou seja, "fulano de tal configurou isso há muito tempo, antes de sair da empresa e ninguém sabe como fazer isso". mude"). Então, eu pessoalmente olharia para algo um pouco mais baseado em padrões.
A menos que você precise que dispositivos com acesso à Internet e sem acesso à Internet estejam no mesmo segmento de rede L2, eu implementaria o bypass de autenticação mac (MAB) 802.1X. Você pode fazer isso para que os dispositivos autenticados recebam uma VLAN e os dispositivos que não conseguem autenticar sejam colocados em uma segunda VLAN.
Se os seus switches não suportarem apenas MAB (ou seja, o MAB só entrará em vigor quando a autenticação IEEE 802.1X falhar), você poderá reduzir os valores de nova tentativa e tempo limite da autenticação IEEE para seus valores mínimos. Como você não se importa com a autenticação IEEE e ela falhará rapidamente, você não será obrigado a configurar nenhum tipo de suplicante, a menos que opte por fazê-lo.
Para ser mais seguro, você configuraria os endereços MAC para todos os dispositivos que deveriam ter acesso à Internet, permitindo que apenas esses dispositivos se autenticassem e fossem colocados na VLAN que fornece acesso à Internet. No entanto, se você quiser restringir apenas determinados dispositivos (e permitir que novos dispositivos se conectem automaticamente à Internet), poderá configurá-lo para que as autenticações com falha sejam colocadas na VLAN com acesso à Internet, enquanto as autenticações bem-sucedidas sejam colocadas na VLAN sem acesso.
Você não fornece os motivos pelos quais deseja fazer isso, mas isso também forneceria a oportunidade de restringir facilmente o acesso entre os dois conjuntos de hosts, se houvesse algum motivo para fazê-lo.