Script de inspeção de pacotes HTTP

0

Eu tenho um aplicativo HTTP em execução em um servidor. Não consigo modificar o aplicativo, mas gostaria de acionar um evento quando uma solicitação POST específica é enviada ao aplicativo.

Eu gostaria de executar um script bash e passar argumentos como o IP do cliente que faz a solicitação e os cabeçalhos da solicitação HTTP.

Quais ferramentas posso usar para conseguir isso? Eu gostaria que fosse o mais leve possível e que precisasse rodar em uma máquina sem cabeça.

    
por Magnus 11.02.2013 / 05:32

3 respostas

0

Na minha opinião, uma boa opção para esses cenários é usar httpry (no Github ). É direcionado ao tráfego HTTP. A saída é bastante simples de analisar e você não precisa se preocupar com as regras de filtragem, como seria necessário para tcpdump . httpry é baseado em libpcap como a maioria das outras ferramentas relacionadas.

Construí-lo foi o habitual make que o usuário está acostumado a usar em outras ferramentas somente de fonte (sem ./configure da última vez que tentei).

    
por 19.02.2013 / 02:24
0

Uma maneira de fazer isso (supondo que você esteja usando o servidor web Apache, que não é declarado, mas implica que você está usando o bash), seria modificar o apache para registrar dados post usando mod_security ou mod_dumpio. (Veja link e link ).

Em seguida, use algo para monitorar a saída e alimentar isso para bash. (No topo da minha cabeça, o fail2ban pode ser configurado para fazer isso, mas eu não tentei). Alternativamente, você poderia tentar analisar o fluxo de logs através do bash e escolher o que você precisa, ou pode haver outras ferramentas para fazer isso. Uma abordagem simples, porém fácil, dependendo de quão apertados são os seus prazos, seria rotacionar regularmente o arquivo de log (digamos, a cada minuto) com um script bash como parte da rotação do log.

    
por 11.02.2013 / 07:18
0

Eu encontrei uma maneira de fazer isso usando node.js e o módulo node_pcap.

Você pode instalá-lo como descrito aqui.

Ele vem com um exemplo de um ouvinte http que pode ser chamado assim.
sudo node_modules/pcap/examples/http_trace -f "tcp port 80"

Ele gera uma saída como

12:11:53.131 undefined:35748 -> 127.0.0.1:80 #2 HTTP 1.1 request: GET /example/css.css
12:11:53.131 127.0.0.1:80 -> undefined:35748 #2 HTTP 1.1 response: 304 Not Modified
12:11:53.131 127.0.0.1:80 -> undefined:35748 #2 HTTP 1.1 response complete 6.08KB

Este exemplo foi suficiente para meus propósitos. Ele fornece o método, URL e endereço IP.

    
por 19.02.2013 / 02:20