Capture um pacote na camada MAC

1

Eu quero implementar uma solução de segurança semelhante ao MACsec que capture um pacote em sua totalidade (incluindo o cabeçalho MAC) em um nó de rede intermediário (por exemplo, comutador baseado em Linux), realize algum processamento no pacote e envie-o o nó intermediário.

Você poderia me indicar recursos adequados que possam me ajudar a fazer isso? No momento, estou procurando soluções que exigem modificação do driver da NIC. Existe alguma outra solução mais simples do que isso? Como os outros implementam o MACsec?

Por favor note que eu não estou olhando para simplesmente capturar um pacote usando pcap e métodos similares. O que estou procurando é poder capturar um pacote antes que ele passe por um nó intermediário, mexer nele e enviá-lo ao destinatário pretendido.

Obrigado

    
por cdev 24.11.2014 / 12:39

2 respostas

2

Se você quiser analisar o pacote como o kernel do Linux o recebe, você terá que escrever um driver de kernel, possivelmente indo tão longe quanto modificar o próprio kernel. Quando a interface recebe dados, o processamento começa imediatamente. Qualquer coisa que esteja registrada para receber a próxima camada terá seu manipulador chamado. Como o cabeçalho MAC não exige muito processamento, o manipulador de camada IP é o primeiro que começa a executar muito do processamento.

Se você quiser manipular o cabeçalho MAC e fazer sua própria coisa, terá que se inserir logo após o recebimento do cabeçalho MAC e antes do processamento IP. Ou você pode escrever um driver para ser um NIC virtual. Dessa forma, você poderia processar os dados como quiser. O NIC virtual veria todos os dados exatamente como o NIC real faz. Esta provavelmente seria sua melhor aposta, já que você não quer começar a mexer com o kernel e reconstruí-lo apenas para o seu próprio projeto.

Minha resposta aqui fornece vários bons links para aprender sobre redes de kernel do Linux. Eu também sugiro pegar o Linux Kernel Networking: Implementação e Teoria por Rami Rosen. Ótimo recurso para uma visão detalhada da pilha de rede.

O MACSec em algum momento será implementado no kernel. O IPSec, por exemplo, mantém suas políticas de segurança no kernel enquanto um daemon userland mantém o controle das conexões do túnel. Então infelizmente eu acredito que você terá que escrever algum nível de código do kernel para realizar as ações que você quer.

    
por 24.11.2014 / 13:53
0

Há um tempo, eu queria jogar um pouco com pacotes de dados como camada 2, camada 3 ou camadas superiores. Eu encontrei uma ferramenta legal, baseada em python para fazer isso. Esta ferramenta chama Scapy .
Você pode capturar e manipular pacotes. Ou você pode criar um filtro baseado em pacotes para sua necessidade.

    
por 25.11.2014 / 12:21