Como uma CDN mitiga ataques DDoS?

Ataques DDoS são uma das maiores dores de cabeça para quem administra uma infraestrutura ou aplicações web hoje em dia. O termo é uma abreviatura para Distributed Denial of Service, o que em português significa Ataque Distribuído de Negação de Serviço. O objetivo de quem está por trás deste tipo de ameaça é tirar do ar o servidor de uma aplicação específica, por meio do congestionamento de sua rede ou pela sobrecarga de seus servidores. Ele faz isso usando uma rede de computadores escravos que enviam simultaneamente uma grande quantidade de requisições e pacotes de rede, em um nível que a infraestrutura da vítima não suporta, ou pelo menos tenha sua performance degradada.

A natureza distribuída do DDoS é o que torna sua mitigação um desafio. No caso de um ataque DoS simples (de apenas uma máquina), o comportamento é mais fácil de detectar, pois destoa dos demais, e um simples bloqueio do IP do atacante pode resolver o problema. Mas, mesmo neste cenário, ainda desestabiliza a equipe de operações de uma empresa que não possui nenhum tipo proteção, pois pode ocorrer a qualquer hora e não deixa avisos.

Neste contexto as CDNs surgiram como alternativa de proteção contra essa ameaça. Por estarem na linha de frente em termos de rede e por possuírem grande capacidade de tráfego e processamento, se tornaram soluções ideais para tratar e resolver estes casos. Nos próximos tópicos vamos mostrar o procedimento adotado pela CDN GoCache na mitigação de DDoS, mas antes vamos dar uma visão geral sobre as 3 principais categorias de ataques.

Categorias de ataques DDoS

Ataques de Negação de Serviço podem ser classificados em 3 categorias: Ataques Volumétricos (Volumetric Attacks), Ataques por Exploração de Protocolos (Protocol Attacks) e Ataques na Camada de Aplicação (Application Layer Attacks).

Ataques volumétricos têm o objetivo de saturar banda do aplicação alvo, ou seja, buscam congestionar o tráfego dela. Alguns exemplos  são UDP floods e ICMP floods. Ataques por exploração de protocolos almejam esgotar toda a capacidade de equipamentos de rede e transporte (conhecidas como camadas 3 e 4) através da exploração de vulnerabilidades nos protocolos de comunicação, como em ataques SYN flood, e Ping of Death. Já os ataques a camada de aplicação (ou camada 7) exaurem os servidores que geram e enviam os conteúdos que os visitantes veem, ao enviarem inúmeras requisições HTTP/HTTPS, que podem ser em seções que oneram bastante o servidor. HTTP flood é um tipo deste ataque.

Camadas do modelo OSI

Tolerância ao aumento de tráfego trazido por ataques

A mitigação de DDoS reside na filtragem do tráfego, permitindo apenas tráfego legítimo o tanto quanto possível. Porém, quem realiza essa filtragem precisa ter a disposição uma grande largura de banda e uma grande capacidade de processamento, sob pena de ter os recursos esgotados antes de responder à ameaça devidamente. Fazer isso em uma CDN é uma proposta muito mais eficiente, uma vez que, por processar milhares de sites simultaneamente, ela possui capacidade ociosa muito maior do que a de um site isolado, seja em termos de banda de internet ou de capacidade de processamento e memória.

Dentro deste mesmo aspecto, a rede Anycast da GoCache também auxilia neste papel. Anycast é um método de roteamento no qual um IP pode fazer referência a diferentes destinos, no caso, algum de nossos 8 pontos de presença (PoPs) em data centers. Em situações normais, o IP aponta para o ponto de presença mais próximo, mas em situações de ataque, o método pode distribuir sua carga entre todos os PoPs de nossa rede, o que potencializa o uso de toda nossa capacidade no processo de mitigação e minimiza o risco de falhas pontuais.

Mitigação nas camadas de rede e transporte

Um ataque que nossos clientes recebem é um ataque que nós recebemos diretamente. Por mais que abusos nas camadas 3 e 4 não são repassados aos servidores de nossos clientes, pois não possuem nenhum conteúdo que faça sentido para a aplicação, precisamos tratá-los para não desperdiçar recursos e correr o risco de degradar nossa própria performance.

Exemplo de padrão de ataque na camada 4 (SYN Flood)

Para isso, lançamos mão tanto de recursos automatizados, quanto de nossa equipe de SREs. Separar o joio do trigo é uma tarefa árdua, principalmente em ataques bem distribuídos, mas algumas pistas sempre são deixadas. Tamanho dos pacotes, conteúdo dos cabeçalhos, tipo são alguns dos fatores analisados para entender se uma tentativa de conexão é maliciosa ou não. Além disso, alguns endereços de IP são conhecidos por participar de ataques (os chamados botnets) tornando a tarefa mais fácil.

Mitigação na camada de aplicação

Ataques à camada de aplicação são mais desafiadores, pois podem parecer mais como tentativas de acessos normais. Por padrão, quando um ataque que gera uma carga perceptível na camada de aplicação, nossa equipe de SREs o mitigam para resguardar nossa infraestrutura. Porém, dependendo do quanto a infraestrutura de um site seja enxuta, um ataque muito pequeno na camada de aplicação pode derrubá-lo. Mesmo assim, alguns recursos de nossa plataforma auxiliam nessa situação

Cache de conteúdo dinâmico

O cache de conteúdo dinâmico nada mais é que fazer cache de conteúdos que exigem processamento, como HTML ou respostas de APIs, na CDN. Com isso, as respostas dessas partes da aplicação são entregues direto pela CDN, sem precisar de consultas à infraestrutura de origem que podem consumir CPU, memória, ou banco de dados. Porém, o uso deste recurso tem suas limitações. Essa estratégia não funciona com conteúdos que variam de usuários para usuário. Para ser efetiva, as respostas devem ser iguais para mais de um usuário (por exemplo, uma homepage que varia de estado para estado e não contenha dados pessoais de quem visita).

Mitigação Avançada de DDoS

A mitigação avançada de DDoS é um recurso que oferecemos para clientes a partir do plano Business no qual nossa equipe monitora proativamente sinais da aplicação como taxa de erros, tempo de resposta e taxa de requisições, para reagir imediatamente em casos suspeitos, inclusive, podendo trabalhar conjunto com a equipe do cliente atacado para resolver o problema.

Web Application Firewall

O Web Application Firewall ou WAF é um recurso de nossa plataforma que avalia características de uma requisição, e a bloqueia caso ela siga o padrão de alguma ameaça conhecida. Esse Firewall também permite que o usuário crie suas próprias regras de acordo com o conhecimento que tem sobre sua aplicação. O WAF não é um recurso feito para lidar diretamente com ataques DDoS, mas pode ajudar, pois muitos ataques possuem características em comum, como cabeçalhos de requisição incorretos e serem provenientes de outros países.

Rate Limiting

Por fim, o Rate Limiting é um recurso que limita a velocidade com que um usuário acessa determinada aplicação. Usuários legítimos normalmente levam algum tempo entre a execução de duas ações. Se um usuário acessa uma quantidade de páginas muito grande em um tempo muito pequeno, isso pode ser considerado suspeito, principalmente se for feito em uma seção específica de um site. Se um usuário conhece bem o padrão de acessos em sua aplicação, ele pode aplicar regras que bloqueiam visitantes que excedam uma taxa de requisições considerada normal, tendo controle inclusive para configurar diferentes limites em diferentes áreas e liberar agentes conhecidos, como bots de mecanismos de busca.

Conclusão

Usar uma plataforma de CDN para mitigar DDoS é uma das estratégias mais efetivas hoje. Ela atua como um escudo que permite que o máximo de requisições legítimas e o mínimo de requisições maliciosas atinjam o servidor onde aplicação hospedada. E ela faz isso usando uma capacidade que seria muito cara para ser adquirida dono de um site individual.