Protegendo contra negação de serviço de manutenção de estado morto

8

Eu pensei que meu servidor estava seguro com http-guardian, mas aparentemente não. Um espertinho continua batendo no meu servidor com 'Keep-Dead' e causando o travamento.

Examinei os logs, mas não consigo ver de qualquer maneira para diferenciar as solicitações de um visitante comum cujo navegador está carregando rapidamente todos os componentes em uma página ocupada.

Qualquer conselho seria apreciado.

Tom O'Connor
fonte
1
Oh, desculpe, eu deveria ter dito. A única informação que consegui encontrar no Keep-Dead até agora está em esrun.co.uk/blog/keep-alive-dos-script . Mas não contém dicas sobre como bloqueá-lo!
2
Nota Pedante: Você nunca está seguro. Se alguém quiser ruim o suficiente, sempre será capaz de entrar. Ponto final.
precisa saber é o seguinte

Respostas:

6

Desative o HTTP keep-alive ou instale um servidor que não seja afetado por isso como proxy na frente do Apache. Nginx seria uma boa escolha aqui.

Esse ataque parece ser semelhante ao ataque do Slowloris, na medida em que explora um recurso específico do Apache. É bastante trivial se defender.

Nota: Se você instalar o nginx, desative o keep-alive no apache e mantenha-o ativado no nginx.

devicenull
fonte
3
Manter vivo não é um recurso muito importante? Eu conseguia entender desativá-lo temporariamente, mas permanentemente?
TheLQ
1
Isso pode resultar em tempos de carregamento um pouco mais longos, mas não é provável que o site não seja carregado para as pessoas. Instalar o nginx na frente é uma solução muito melhor.
Devicenull 11/05
1
@devicenull Isso significa que o cliente se beneficiará da conexão keepalive, embora o apache (ou servidor de aplicativos upstream) tenha desativado o keepalive? Então, basicamente, não há necessidade de servidor de aplicativos e servidor proxy para ativar o keepalive? Obrigado!
haxpor
@haxpor Essa é uma pergunta interessante, desejo que alguém responda a isso.
Manuel
1

O Keep-Dead funciona enviando solicitações HEAD enquanto mantém a conexão TCP ativa (Keep-Alive, portanto, o nome do script). Provavelmente, isso é bem diferente das solicitações legítimas para o servidor da web, que provavelmente seriam principalmente POST / GET. Peça ao seu IDS / IPS para detectar inúmeras solicitações HEAD em um curto espaço de tempo e fazer o que for apropriado.

cateter
fonte