Como se defender melhor contra um ataque DOS em slowloris contra um servidor web Apache?

30

Recentemente, um script chamado "slowloris" ganhou atenção. O conceito básico do que o slowloris faz não é um novo ataque, mas dada a recente atenção, tenho visto um pequeno aumento nos ataques contra alguns de nossos sites Apache.

No momento, não parece haver nenhuma defesa de 100% contra isso.

A melhor solução que determinamos (até agora) é aumentar os MaxClients.

Isso, é claro, nada mais faz do que aumentar os requisitos para o computador do invasor e, na verdade, não protege o servidor 100%.

Um outro relatório indica que o uso de um proxy reverso (como o Perlbal) na frente do servidor Apache pode ajudar a evitar o ataque.

Usar o mod_evasive para limitar o número de conexões de um host e usar o mod_security para negar pedidos que parecem ter sido emitidos pelo slowloris parece ser a melhor defesa até agora.

Alguém em ServerFault tem sofrido ataques como esse? Em caso afirmativo, quais medidas você implementou para defendê-lo / preveni-lo?

OBSERVAÇÃO: Esta pergunta é para servidores Apache, pois é do meu conhecimento que os servidores IIS do Windows não são afetados.

    
por KPWINC 26.06.2009 / 20:03

7 respostas

21

Eu experimentei esse ataque ... no meio do meio do verão (23 de junho), onde você deveria estar no campo e beber cerveja: >

Eu coloquei o meu Apache atrás do Verniz , que não apenas protegia do slowloris, mas também acelerava muito os pedidos da web.

Além disso, iptables me ajudou:

iptables -I INPUT -p tcp --dport 80 \
         -m connlimit --connlimit-above 20 --connlimit-mask 40 -j DROP

Esta regra limita um host a 20 conexões à porta 80, o que não deve afetar o usuário não malicioso, mas tornaria o slowlore inutilizável em um host.

    
por 26.06.2009 / 23:18
4

mod_antiloris , simples assim.

    
por 30.06.2009 / 20:00
3

Se todos os seus módulos do Apache são thread-safe, o SlowClor pode ser derrotado simplesmente mudando para MPMs de evento ou de trabalho. ref: aqui

    
por 13.07.2009 / 20:45
0

Neste momento, parece que não há mais nada a fazer que limite o máximo de conexões simultâneas por ip no servidor.

    
por 26.06.2009 / 21:07
0

Há um patch de usuário que você pode experimentar. Ele modifica o tempo limite com base na carga em que o servidor está, mas, considerando seu status, talvez você não queira usá-lo em uma máquina de produção, sem alguns testes sérios. Dê uma olhada aqui.

    
por 26.06.2009 / 21:10
0

O firewall baseado em iptable deve protegê-lo de várias conexões de 1 ip.

    
por 26.06.2009 / 22:16
0

Se isso ajudar alguém, às vezes você pode superar esse problema com o Apache 2.2.15 ou superior com a seguinte configuração:

LoadModule reqtimeout_module modules/mod_reqtimeout.so
RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500

Mais informações aqui: link

    
por 16.10.2015 / 17:44