Capturando pacotes via l7filter

1

Como parte do meu estudo de Ph.D, eu compilo o kernel linux-2.6.28 para suportar capacidades de filtragem l7 no kernel.

Estou adicionando uma regra única ao iptables com o seguinte:

iptables -t mangle -A PREROUTING -m layer7 --l7proto http -j NFQUEUE

Eu escrevi um programa de captura padrão usando o libipq para ler pacotes da fila.

Para o teste, estou enviando uma única sessão http composta por 18 pacotes, que incluem duas solicitações HTTP e dados de resposta de outra máquina.

O problema é que meu programa de captura recebe apenas dois pacotes, os primeiros pacotes de respostas HTTP (que são correspondidos pelo filtro.) enquanto espero receber todos os 18 pacotes.

O que eu preciso é ser capaz de ler todos os pacotes (não apenas os pacotes correspondentes) de uma sessão correspondente.

Por exemplo, se eu quiser capturar e analisar as Sessões de Mensagens de Email do Yahoo somente entre todas as sessões HTTP, posso usar o l7filter para transmitir apenas pacotes de sessões relevantes (Yahoo Email Message Session)?

Obrigado.

    
por Abdullah 14.03.2013 / 16:40

1 resposta

0

Se tudo o que você está tentando fazer é filtrar a captura de pacotes para ver apenas o tráfego HTTP para um determinado host, provavelmente você poderá fazer isso apenas observando a porta e o host. Use tcpdump ou tshark com filtros. Algo como:

tcpdump -i eth0 tcp port 80 or 443

Deve fornecer apenas o tráfego HTTP (nas portas padrão).

Se quiser reduzi-lo a determinados IPs / redes, adicione-os ao filtro também:

tcpdump -i eth0 '(tcp port 80 or 443) and net 123.123.123.123/24'

    
por 14.03.2013 / 17:00