Negação de serviço do Tomcat

3

Nos últimos dois dias, nosso servidor web Tomcat 5.5 baseado em Linux foi dividido em poucos minutos, iniciando milhares de downloads e parando-os. Alguns caminhos de solicitação no log de acesso terminam com uma parte parecida com "? Jfkdsjkfsdk". Existe uma vulnerabilidade conhecida dos sistemas Tomcat para tais ataques?

Atualização: No momento, estamos executando o Tomcat puro, não o Apache.

    
por Mike L. 30.09.2011 / 14:54

4 respostas

3

Conectar milhares de vezes é uma "vulnerabilidade" conhecida de qualquer servidor com uma configuração maxconnections (ou que usa muitos recursos por conexão). Como um DDOS, o mais provável é que eles não "parem" o download, eles estão apenas cortando a conexão sem um pacote RST, então a conexão fica suspensa até expirar ou usar algo como trickle para reconhecer apenas um poucos bytes de cada vez para manter a conexão fora do tempo limite.

Qualquer coisa que você faça para mitigar isso dependerá de toda a sua configuração. Supondo que você esteja usando atualmente o apache + mod_jk + tomcat, então, além do fail2ban do Bart, eu procuraria no mod_security para detectar as possíveis solicitações maliciosas e recusar. Outra idéia é se você está realmente usando o tomcat para enviar dados estáticos, movendo os dados estáticos para serem servidos diretamente do apache (ou um servidor leve como lighttpd ou nginix) usando um domínio static.example.com . Ou, se você precisar que seu código decida qual arquivo enviar, considere usar mod_xsendfile no apache para exibir arquivos estáticos "apontados" por seu aplicativo, que permitiria que o tomcat concluísse a solicitação e continuasse enquanto o apache lidava com o arquivo (em vez de manter o apache e o tomcat ocupado enviando o arquivo).

    
por 30.09.2011 / 15:33
3

Com base nas 206 respostas, seu servidor Tomcat está sendo atacado com um ataque de intervalo sobreposto, conforme descrito contra o Apache no CVE-2011-3192.

Quando este foi um tema quente no mês passado, pareceu-me que o servlet padrão do Tomcat parecia vulnerável - veja aqui .

As melhores maneiras de impedir isso seria parar de permitir que esses arquivos estáticos sejam atendidos pelo servlet padrão ou remover o cabeçalho Range: dos pedidos recebidos.

    
por 30.09.2011 / 20:35
2

Você está fazendo proxy para o Tomcat do Apache? Se não, você pode ficar facilmente vulnerável a ataques como Slowloris . É uma má ideia expor publicamente o Tomcat.

Mesmo se você estiver usando o Apache, você precisa ter cuidado para proteger contra ataques do tipo Slowloris usando o mod_antiloris, ou melhor ainda usar o nginx para o seu proxy frontend, um servidor que se mostra invulnerável ao ataque do Slowloris.

Shane Madden tem uma resposta melhor, siga seu conselho primeiro.

    
por 30.09.2011 / 15:56
1

Eu não sei de um, mas não significa que não haja um. Use algo como o fail2ban para procurar logs para essas solicitações e banir os IPs automaticamente.

Você também pode trabalhar na implementação de limites de recurso / cota para limitar solicitações de download, proxy / armazenamento em cache para atenuar a carga e alertas para notificá-lo sobre quando isso está acontecendo. Além de limitar nossos pedidos de saída, porque mesmo que você não esteja usando o DDoS, não deseja que solicitações legítimas sobrecarreguem sua largura de banda disponível.

A maioria das vulnerabilidades seria "possuir" seu servidor; crashing / ddos'ing é contraproducente a esse respeito. A única razão para matar o servidor, na verdade, é se alguém tem um machado para atacar sua empresa.

    
por 30.09.2011 / 14:59