Como usar uma interface de rede somente leitura?

Como usar uma interface de rede somente leitura?

Tenho um switch em meu laboratório doméstico com o qual quero realizar alguns experimentos, especialmente em relação a VLANs e alguns outros protocolos que quero entender melhor. Agora, esta opção (umSwitch TP-Link de 5 portas um tanto gerenciado) permite o espelhamento de porta.

Quero analisar esse tráfego espelhado em meu computador com o mínimo possível de tráfego "novo" introduzido pela máquina de monitoramento. Como posso conseguir isso?

Eu já sei que você precisa colocar a NIC em modo promíscuo para receber pacotes não destinados originalmente ao meu PC. Como isso geralmente é feito pelo próprio Wireshark, não preciso me preocupar com isso.

No entanto, eu queria ter certeza de introduzir o mínimo de "ruído" possível na porta, para realmente observar o tráfego gerado nas outras portas. eu já encontreiesta respostaisso sugere desabilitar todos os serviços em execução (como DHCP e outros), o que faz sentido. Mas embora isso reduza muito o ruído, provavelmente não será capaz de impedir a resolução ARP ou outras interações de rede baseadas em kernel.

Também aprendi que existem protocolos destinados especificamente para esse fim (comoSPAN da Cisco), mas meu switch não tem essa capacidade.

Então, minha pergunta é: como posso usar minha interface de rede da maneira mais somente leitura possível?

Responder1

A maneira mais fácil de tornar uma interface “somente leitura” no Linux é aplicar uma saídatcfiltre nele que cai tudo.

Para aplicar um filtro, umqdisc cheio de classedeve estar no lugar. Oprimeiroqdisc é o qdisc classful mais simples, usado apenas para poder usar filtros na interface, e não para seus próprios recursos.

No final, para definir a interfaceeth1"somente leitura":

tc qdisc add dev eth1 root prio
tc filter add dev eth1 matchall action drop

Isso bloqueia o tráfego de saída nesta interface. Ele até bloqueia soquetes RAW (que de outra forma não são afetados por firewalls), bloqueando um cliente DHCP IPv4 (que, de outra forma, pode obter um endereço apesar de um firewall). Ainda existem maneiras de contornar isso, mas isso só pode ser muito deliberado. Aqui estão dois que eu conheço:

Para retornar a interface ao estado original, basta remover o qdisc:

tc qdisc del dev eth1 root

Notas:

  1. Eu diria que um switch com uma porta configurada no modo de espelhamento provavelmente já definiu essa porta no modo somente leitura.

    Isso é algo para testar. E se for verdade, usar o filtro acima ou o marcador 2. abaixo torna-se discutível.

  2. uma interface que está UP e na qual nenhuma configuração adicional é aplicada ainda pode trocar tráfego

    Sem o filtro anterior, mesmo tendo uma interface desconfigurada mas UP pode deixar tráfego. Existem pelo menos estes dois casos:

    • Configuração automática IPv6

      usarsysctl -w net.ipv6.conf.eth1.disable_ipv6=1

    • Se o ARP não estiver desabilitado (com ip link set eth1 arp off)

      Este caso é o mesmo que o caso de vazamento de informações mais geral, onde um sistema em uma LAN pode testar para verificar se alguns sistemas também estão usando outras redes (incluindo virtuais) com endereços bem conhecidos: por padrão no Linux, uma interface responderá às solicitações ARP paraqualqueroutro endereço emqualqueroutra interface.Isso é papeldos fracosModelo hospedeiro.

      Então, por exemplo, se o sistema do OP estiver executando livbirt QEMU/KVM com configurações padrão, 192.168.122.1/24 será atribuído avirbr0, então um outro sistema Linux conectado apenas a uma interface UP não configurada ainda obterá respostas ARP por meio dela durante a execução:

      arping -I eth0 192.168.122.1
      

      Não importa se o sistema de investigação tem uma rota para 192.168.122.1. É sobre ARP (e um comando que não se preocupa com rotas). O mesmo acontece com LXC e 10.0.3.1 etc.

informação relacionada