Slow HTTP – Identificação e proteção
O Slow HTTP é um ataque de negação de serviço (DoS) na camada de
aplicação, e podem, de forma simples, tirar um servidor que possua recursos
limitados do ar.
Devido ao baixo volume e velocidade lenta das requisições, esse
tipo de ataque é difícil de ser identificado e pode causar danos semelhantes à
um DDoS com grande volume de tráfego.
Entendendo o ataque
O protocolo HTTP exige que as requisições sejam completamente
recebidas pelo servidor antes de serem processadas. Caso uma requisição HTTP
não seja concluída ou se a taxa de transferência for muito baixa, o servidor
fica aguardando os dados que ficaram faltando. Se o servidor mantiver muitos
recursos ocupados, isso ocasionará uma negação de serviço.
Na imagem abaixo vemos um relatório de um ataque “slowhttptest”
realizado, onde o domínio fica claramente com o serviço indisponível por
instantes (partes do gráfico que não possuem a cor verde).

Identificando o ataque
Se o seu servidor estiver sob ataque, você verá várias conexões
na porta 80 do IP de origem. O comando netstat pode
mostrar essas informações conforme abaixo:
A informação abaixo mostra, em um
servidor Apache, um número muito baixo de consumo de CPU, vários processos do
Apache e poucas novas requisições.
$ apachectl status
CPU Usage: u3.1
s.2 cu0 cs0 - 1.0% CPU load
.913
requests/sec - 31.1 kB/second - 17.5 kB/request
611 requests
currently being processed, 2 idle workers
O atacante atua fazendo várias
requisições até atingir o limite do Apache’s MaxClients. Se olharmos o log,
será como o abaixo:
$ cat /var/log/httpd/error.log
[mpm_prefork:error]
[pid 1842] AH00161: server reached
MaxRequestWorkers
setting, consider raising the
MaxRequestWorkers setting
Depois podemos identificar o
endereço IP de origem do atacante usando o netstat e bloqueá-lo.
Ficando menos vulnerável ao Slow
HTTP
Para proteger o servidor web contra esse tipo de ataque, é
recomendado:
- Descartar conexões com métodos de requisição HTTP não
suportados.
- Limitar o cabeçalho e o corpo da mensagem.
- Definir limites mais específicos de URL.
- Definir um tempo limite de conexão, sem deixar que conexões
lentas legítimas sejam perdidas.
As alternativas acima são as medidas mais simples e genéricas
para minimizar a ameaça.
O ajuste da configuração do servidor da Web é eficaz até certo
ponto, embora exista sempre um problema entre limitar ataques HTTP lentos e
eliminar solicitações legitimamente lentas. Isso significa que você nunca pode
impedir ataques simplesmente usando as técnicas acima.
Além de configurar o servidor da Web, é possível também implementar
outras camadas de proteção, como balanceadores de carga de software acionados
por eventos, sistemas de detecção / prevenção de intrusão para eliminar
conexões com padrões suspeitos, e é claro que contratar um serviço de proteção
especializada anti-DDoS irá garantir uma segurança a mais para a sua aplicação.
Referências
0 comentários: