Como verificar se uma interface de rede está em modo promíscuo no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se uma interface de rede no Linux está operando em modo promiscuous (promíscuo). O modo promiscuous permite que uma interface de rede capture todo o tráfego de rede que recebe, independentemente do endereço de destino, o que é essencial para monitoramento e análise de rede.

Você explorará três métodos diferentes para determinar o status do modo promiscuous: usando o comando ip link show para inspecionar as flags da interface, utilizando o comando tcpdump para observar o comportamento de captura de pacotes e examinando a configuração da interface dentro do sistema de arquivos /sys/class/net. Ao concluir estas etapas, você obterá habilidades práticas na verificação das configurações da interface de rede em um ambiente Linux.

Nesta etapa, você aprenderá como verificar o status do modo promíscuo de uma interface de rede usando o comando ip link show. O modo promíscuo é uma configuração para um controlador de interface de rede (NIC) que permite que ele passe todo o tráfego que recebe para a unidade central de processamento (CPU), em vez de apenas os frames aos quais o controlador é especificamente endereçado. Isso é frequentemente usado para monitoramento e análise de rede.

Primeiro, abra o terminal, se ainda não o fez. Você pode fazer isso clicando no ícone Xfce Terminal no lado esquerdo da área de trabalho.

Agora, vamos usar o comando ip link show para visualizar o status das suas interfaces de rede. Digite o seguinte comando e pressione Enter:

ip link show

Você verá uma saída semelhante a esta:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

Procure a linha correspondente à sua interface de rede primária, que normalmente é chamada de eth0 neste ambiente. Examine as flags dentro dos colchetes angulares (<>). Se PROMISC estiver presente nessas flags, a interface está em modo promíscuo. Na saída de exemplo acima, PROMISC não está presente, indicando que eth0 não está em modo promíscuo.

O comando ip link show é uma ferramenta fundamental para inspecionar as configurações da interface de rede no Linux. Compreender sua saída, incluindo as várias flags e estados, é crucial para a solução de problemas e administração de rede.

Clique em Continuar para prosseguir para a próxima etapa.

Verificação com tcpdump -i

Nesta etapa, você usará o comando tcpdump para verificar o status do modo promíscuo de uma interface de rede. tcpdump é um poderoso analisador de pacotes de linha de comando. Ele pode capturar e exibir pacotes sendo transmitidos ou recebidos por uma rede. Quando uma interface está em modo promíscuo, tcpdump pode capturar todos os pacotes no segmento de rede, independentemente do seu endereço de destino.

Primeiro, você precisa instalar o tcpdump. Use o comando sudo apt install, semelhante a como você instalou o htop no laboratório anterior.

sudo apt update
sudo apt install tcpdump -y

A flag -y responde automaticamente sim a quaisquer prompts durante a instalação.

Agora, vamos usar tcpdump para ouvir na interface eth0. Usaremos a opção -i para especificar a interface e a opção -n para evitar pesquisas DNS, o que torna a saída mais limpa.

sudo tcpdump -i eth0 -n

Você verá uma saída indicando que o tcpdump está ouvindo em eth0.

tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type ETHERNET (100Mbps), snapshot length 262144 bytes

Se a interface estiver em modo promíscuo, tcpdump capturará todo o tráfego que vê. Se não estiver em modo promíscuo, ele só capturará o tráfego direcionado ao seu endereço MAC ou tráfego de broadcast/multicast.

Para gerar algum tráfego, você pode abrir outra janela de terminal (ou uma nova aba no seu terminal atual) e tentar pingar um site, por exemplo:

ping -c 4 google.com

Observe a saída no terminal tcpdump. Você deve ver pacotes sendo capturados.

Importante: Para parar o tcpdump, pressione Ctrl + C no terminal onde o tcpdump está sendo executado.

Embora o tcpdump em si não declare explicitamente "modo promíscuo" em sua saída inicial, sua capacidade de capturar tráfego não especificamente endereçado à interface é uma maneira prática de confirmar se o modo promíscuo está ativo. Se você vir tráfego que não está relacionado à comunicação do seu próprio sistema (como solicitações ARP de outros dispositivos no segmento de rede), é um forte indicador do modo promíscuo.

Clique em Continuar para prosseguir.

Inspecionar interface em /sys/class/net

Nesta etapa, você explorará o sistema de arquivos /sys para encontrar informações sobre suas interfaces de rede, incluindo o status do modo promíscuo. O sistema de arquivos /sys é um sistema de arquivos virtual no Linux que fornece uma maneira de interagir com o kernel e os drivers de dispositivo. Ele expõe informações sobre dispositivos de hardware e sua configuração.

Navegue até o diretório das interfaces de rede dentro de /sys. Use o comando cd para alterar seu diretório atual:

cd /sys/class/net/

Agora, liste o conteúdo deste diretório usando o comando ls:

ls

Você verá uma lista de suas interfaces de rede, semelhante à saída de ip link show. Você deve ver eth0 e lo.

eth0  lo

Cada diretório aqui corresponde a uma interface de rede. Vamos olhar dentro do diretório para eth0:

cd eth0

Agora, liste os arquivos dentro do diretório eth0:

ls

Você verá muitos arquivos e diretórios contendo informações sobre a interface eth0. Estamos interessados no arquivo que indica o status do modo promíscuo. Essa informação é frequentemente encontrada em um arquivo relacionado a flags ou estado do dispositivo.

Embora o nome exato do arquivo possa variar ligeiramente dependendo da versão do kernel, um lugar comum para encontrar essa informação é examinando o conteúdo de arquivos que podem conter flags ou informações de estado.

Vamos tentar ler o conteúdo de um arquivo que pode indicar o estado ou as flags. Use o comando cat para exibir o conteúdo de um arquivo. Por exemplo, você pode procurar arquivos chamados flags ou similares.

cat flags

A saída do comando cat flags será um número hexadecimal. Este número representa uma máscara de bits de várias flags da interface. Para interpretar isso, você normalmente precisaria consultar a documentação do kernel para as flags específicas e seus valores de bit correspondentes. No entanto, para verificar o modo promíscuo especificamente, geralmente há uma maneira mais direta dentro de /sys.

Uma maneira mais confiável de verificar o modo promíscuo dentro de /sys é procurar um arquivo que indique explicitamente a contagem da flag promíscua. Este arquivo geralmente é chamado flags ou similar, e seu conteúdo, quando interpretado corretamente, mostrará se a flag promíscua está definida.

Vamos voltar para o diretório /sys/class/net/eth0 se você ainda não estiver lá:

cd /sys/class/net/eth0

Agora, vamos examinar o arquivo flags novamente. O valor hexadecimal no arquivo flags representa vários estados da interface. Embora a interpretação direta do valor hexadecimal exija conhecimento das flags do kernel, a presença da flag PROMISC na saída de ip link show (da Etapa 1) é uma maneira mais amigável de confirmar o modo promíscuo. O sistema de arquivos /sys fornece os dados brutos do kernel que ferramentas como ip usam.

Para uma verificação direta dentro de /sys, você normalmente procuraria um arquivo que indique especificamente a contagem ou o estado promíscuo. No entanto, neste ambiente, a maneira mais direta de confirmar o modo promíscuo usando ferramentas padrão é através de ip link show, conforme demonstrado na Etapa 1. O sistema de arquivos /sys fornece os dados subjacentes, mas interpretá-los pode ser mais complexo sem documentação específica do kernel.

Esta etapa demonstra como o sistema de arquivos /sys fornece acesso de baixo nível às informações do dispositivo. Embora a verificação direta do modo promíscuo por meio de um único arquivo em /sys possa ser complexa, a compreensão deste sistema de arquivos é valiosa para a análise avançada do sistema Linux.

Clique em Continuar para concluir esta etapa.

Resumo

Neste laboratório, você aprendeu como verificar se uma interface de rede está em modo promíscuo no Linux usando o comando ip link show. Este comando exibe as configurações da interface de rede, e a presença da flag PROMISC indica o modo promíscuo. Você também começou a explorar o uso do comando tcpdump como outro método para verificar o status do modo promíscuo, capturando o tráfego de rede.