script de bloqueio de iptables usando pesquisa de tabela arp

script de bloqueio de iptables usando pesquisa de tabela arp

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 tsharkutilitá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:

  1. Atualize a tabela arp usando fping:fping -c 1 -g 10.10.10.0/24
  2. 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}'
  3. 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.
  4. 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.

informação relacionada