DDoS (Distributed Deny of Service) é uma forma de ataque que geralmente impedem que usuários legítimos acessem um determinado serviço ou rede. Ele é chamado de distribuído, pois os ataques são simultâneos e de origens diferentes. Essas características é o que dificulta a defesa, pois praticamente não existe um padrão no ataque para tentar bloqueá-lo. Nakamura e Geus (2007, p. 116) evidenciam que um ataque DDoS é extremamente eficiente, pois a vítima nem ao menos consegue descobrir a origem dos ataques. No caso de um ataque onde o IP de origem é sempre o mesmo, bastaria bloquear todos os datagramas originados daquele IP. Mas o problema está se os IPs de origem são milhares, piorando ainda mais a defesa com o uso de ferramentas que podem modificar aleatória e automaticamente, não só o endereço IP de origem, mas também a porta de origem, dando a impressão que o ataque é proveniente de milhares equipamentos.
Os ataques de DDoS geralmente tentam esgotar os recursos tanto da rede, quanto dos servidores. Alguns exemplos deste recursos são: memória, processador, capacidade do link, limite de tentativas conexão, disco (logs). Esse recursos podem ser explorados por inundação de segmentos TCP-SYN (SYN Flooding), spams, pacotes ICMP etc. No caso desse ataque de TCP-SYN Flooding, Nakamura e Geus (2007, p. 105) a caracteriza por um grade números de requisições de conexão (pacotes SYN) onde o servidor não é capaz de responder a todas. Então ao alcançar esse limite, os servidor para de responder as novas, as quais geralmente são canceladas pelos cliente por timeout, ou seja, o servidor não respondeu em tempo hábil com um TCP SYN/ACK.
Além desse tipo de ataque que tenta esgotar os recursos computacionais de equipamentos, também exitem outros como Teardrop Attacks (envio de datagramas IP fragmentados fora do padrão com o payload acima do esperado), Peer-to-Peer attacks (instrui clientes de arquivos compartilhados por Peer-to-Peer para se conectar com uma vítima), Unintentional Attack (ocorre quando não há a intenção, ex: sistema telefonico no natal ou ano novo) etc.
Muitas vezes se pensa que aumentar a capacidade dos equipamentos poderia resolver o problema, mas na verdade não em todos os casos. Imagine um cliente acessando um site da Internet em um servidor que está sob um ataque SYN Flooding. Caso fosse acrescentado mais memória no servidor, o ataque não pararia, no máximo que poderia acontecer é o servidor não esgotar a quantidade de memória pelo ataque. Mas outro recurso poderia ser esgotados como o processador. Isso deixaria todas as respostas do servidor mais lentas, por que, apesar dele conseguir acomodar os segmentos que estão chegando na memória, não conseguiria processá-los em tempo satisfatório. Sendo que a situação pioraria se esse tempo fosse muito grande, pois os hosts finais pensariam que os segmentos foram descartados (mas não foram, estão no buffer do servidor). Então por timeout de conexão, os hosts reenviariam os mesmos segmentos. Com isso, haveria segmentos duplicados na rede, agravando ainda mais o problema.
Conforme a figura a seguir um ataque de DDoS é caracterizado quando um atacante invade vários computadores, geralmente em redes comprometidas. Em um ataque de DDoS de quatro níveis, esses computadores são chamados de Atacante, Master(s), Slave(s), Vítima. A partir do(s) Master(s), são escravizadas várias outras, as quais são chamados de slave(s) (escravos). Depois, é só executar um comando específico nos master(s) para que todos os slaves comecem, simultaneamente, a atacar a vítima. Essa investida pode tanto deixar a vítima mais lenta para responde as requisições, quanto esgotar seus recursos como memória, limite de tentativas de conexões, processador etc.
Figura1: Hierarquia de um ataque DDoS
*A seguir um link mostrando como colocar em prática um ferramenta DDoS
DDoS com ICMPDOR