Como encontrar a contagem de funcionários do Apache em um determinado ponto para IPs compartilhados?

1

Pode-se encontrar o número de funcionários do Apache que um endereço IP está consumindo em um momento instantâneo executando:

netstat -pantu | grep :80 |sort | uniq -c |grep <IP_HERE, eg: 192.168> | wc -l

Isso é útil durante um ataque DDoS, por exemplo. A partir disso, é possível determinar se as medidas preventivas estão sendo efetivas na redução do número de trabalhadores Apache sendo gerados para lidar com muito tráfego, etc.

Recentemente, deparei-me com uma situação em que houve um ataque a um endereço IP compartilhado e não consegui descobrir qual usuário estava consumindo a maioria dos funcionários do Apache. Como se pode determinar tal valor?

Foi sugerido que eu observei o tráfego por usuário, mas isso não parece realmente dar a resposta que estou procurando quando há um grande número de funcionários sendo gerados que estão criando um impasse e, por isso, cheguei ao ponto em que estou tentando isolar a propriedade do trabalhador por usuário.

    
por ylluminate 25.05.2014 / 15:08

2 respostas

3

você pode analisar o mod_status com ExtendedStatus On output. Este é o estado em tempo real de todos os trabalhadores / segmentos / filhos. mais SSL.

Cuidado, isso dificulta o rastreamento das contagens reais de solicitações se o servidor estiver respondendo rapidamente (você não vê o que acontece entre os recarregamentos de status - somente a solicitação mais recente de um trabalhador). / p>
curl 'http://localhost/server-status' | perl -ne 'print "$1\n" if m~<td nowrap>(.*?)</td>.*</td></tr>~ ' | sort | uniq -c | sort -n

ou indo para o hardcore grep para os cabeçalhos 'Host:' no tcpdump sniff - isso não dá uma contagem de trabalhadores em tempo real, mas mostra o fluxo do servidor ao vivo - então você tem que fazer sua própria amostragem ( sort|uniq|sort ) rápido - mas você consegue ver TODAS as solicitações exibidas feitas . Tome cuidado, mas não é um analisador seguro (cabeçalhos / pacotes podem ser confundidos etc)

tcpdump -qlnpA dst port 80 | egrep '^Host:'

você pode se interessar por esse tcpdump, como

tcpdump -qlnpA dst port 80 | egrep -e '^Host:' -e '(GET|POST)\s.*HTTP'
    
por 18.06.2014 / 23:00
0

se você não for grep para o IP do servidor, poderá ver apenas olhando para a saída. Caso contrário, você pode usar sed para obter apenas o IP do cliente e, em seguida, usar sort e uniq -c para obter contagens, mas será mais fácil manter um script.

    
por 26.05.2014 / 01:25