terça-feira, 30 de dezembro de 2008

Ataques Denial of Service (DoS)

Por mais patético que pareça fiz meu último post de 2008 sobre ataques DoS. Como continuo sendo o mesmo preguiçoso de sempre irei colar mais uma descrição da Wikipedia...
Um ataque de negação de serviço (também conhecido como DoS, um acrônimo em inglês para Denial of Service), é uma tentativa em tornar os recursos de um sistema indisponíveis para seus utilizadores. Alvos típicos são servidores web, e o ataque tenta tornar as páginas hospedadas indisponíveis na WWW. Não se trata de uma invasão do sistema, mas sim da sua invalidação por sobrecarga.
Recentemente tive uma injeção de conhecimento sobre DDoS, pois junto com as sources do DK2 vieram varios inimigos.

UDP Flood:


Primeiro ataque que o meu valente servidor dedicado sofreu foi um flood de UDP. Como meu DC na epoca (Hivelocity) não oferecia nenhum tipo de filtragem contra qualquer forma de DoS a nivel de rede resolvi migar para Sharktech (...além de bandwidth ilimitado, hardware e preço similares).

Ao contrario do TCP onde uma conexão deve ser estabelecida e autenticada (para sabermos que não se trata de um spoof) o sistema quando recebe um packet UDP tenta procurar qual programa tem sock listen na porta desejada. Como normalmente o flood é feito em portas aleatorias e esse protocolo é pouco usado provavelmente não se deve ter nada nessa porta, então além do flood comer a conexão do seu server ainda toma seu poder de processamento.

Até então eu não sabia muito sobre ataques Denial of Service (DoS) e a filtragem da Sharktech funcionou perfeitamente para o UDP flood.

TCP Flood:

Alguns dias depois meu servidor ficou aparentemente offline, entrei em contato com o suporte e eles me disseram que tudo funcionava normalmente quando eles conectaram. Isso porque eles usam KVM (ou qualquer outra ferramenta de administraçao remota por hardware) pois depois de muitas tentativas consegui conectar no SSH .

Descobri milhares de conexões sendo feitas na porta do SSH, Apache, DarkEden (login, game, shared) e etc...

Examinando o log do Apache encontrei a causa do erro:

"Server ran out of threads to serve requests"

Mesmo com syn_cookies ativado eram tantas conexões sendo feitas que faziam conexões verdadeiras serem rejeitadas pois o limite maximo de memoria que o sistema operacional aloca pra isso se esgotava.

Claramente eu estava encomodando tanto essas pessoas que eles se deram o trabalho de criar algum tipo de virus de botnet. No primeiro dia do ataque meu servidor recebia conexões de 170 IP's diferentes, no terceiro dia de ataque já passavam de 3500 bots, todos localizados na China. Não se tratava de um Syn flood pois as conexões eram realmente estabelecidas.

Depois de uma semana e meu iptables com 300 regras (criadas pelo meu amigo bart) conseguimos defender o DDoS.

Esses foram so alguns ataques que o DarkEden Extreme sofreu, gostaria porém não tenho mais saco para esse tema maldito.

Nenhum comentário: