Resumo
Em 14 de outubro de 2020, entre 02:41 e 02:52 UTC, todas as instâncias em AMS-01 ficaram inacessíveis. Um ataque volumétrico direcionado a um único endereço de cliente atingiu o pico de 340 Gbit/s e saturou os uplinks do site. Resolvemos pedindo ao upstream que descartasse todo o tráfego para o endereço-alvo, o que restaurou o site e deixou esse único cliente offline por mais cinquenta minutos. Nenhum dado foi perdido e nenhuma instância foi danificada. O site não tinha capacidade de scrubbing na época, e isso foi uma decisão de compra, não um acidente.
Linha do tempo
Todos os horários em UTC, 14 de outubro de 2020.
| Horário | Evento |
|---|---|
| 02:41:04 | O tráfego para um único endereço de cliente sobe de cerca de 200 Mbit/s para 90 Gbit/s em menos de vinte segundos. |
| 02:41:30 | Ambos os uplinks do site saturam. A perda de pacotes torna-se total em todos os prefixos do site, não apenas no alvo. |
| 02:42 | O alerta automatizado dispara sobre a alcance de três sondas externas. |
| 02:44 | O engenheiro de plantão fica online. O ataque é visível nos gráficos de porta e em nenhum outro lugar, porque nossa coleta de fluxo foi amostrada a uma taxa que não conseguia acompanhar. |
| 02:46 | Pico medido em 340 Gbit/s. Composição é UDP refletido, principalmente DNS e NTP, de dezenas de milhares de fontes. |
| 02:47 | Decisão tomada de solicitar um descarte upstream de todo o tráfego para o endereço-alvo. Esta era a única ferramenta disponível para nós. |
| 02:49 | O descarte propaga no primeiro upstream. |
| 02:51 | O segundo upstream aplica. A utilização do uplink cai abaixo da capacidade. |
| 02:52:10 | Site totalmente alcançável. Indisponibilidade total visível ao cliente, onze minutos e seis segundos. |
| 03:20 | Cliente afetado contatado e oferecido um novo endereço. |
| 03:42 | Cliente mudou para um novo endereço; seu serviço retorna. |
Causa raiz
A causa imediata foi um ataque que não pudemos absorver. O que realmente o causou é que vendemos hospedagem em uma cidade onde ataques desse tamanho eram rotina, com duzentos gigabits de uplink e nenhuma filtragem, e tratamos um acordo de descarte upstream como um plano.
Isso não é azar. Foi uma decisão, tomada em 2019 a favor de gastar o dinheiro em hardware, e estava errada.
Duas falhas secundárias pioraram a situação. Nossa coleta de fluxo amostrava a uma taxa que não nos dava detalhes úteis durante um evento real, então os primeiros quatro minutos foram gastos lendo contadores de interface. E o descarte era manual, exigindo um humano acordado, autenticado e confiante, três requisitos demais às três da manhã.
O que isso custou ao cliente
Sendo franco: resolvemos nosso problema desligando o serviço deles. Uma rota de descarte é uma decisão de que um cliente ficará inacessível para que todos os outros não fiquem. Foi a decisão correta com as ferramentas que tínhamos, ainda foi uma indisponibilidade deles, não nossa, e eles não haviam comprado nenhum produto nosso que prometesse o contrário.
Eles ficaram. Não cobramos deles pelo mês de outubro.
O que mudamos
- Scrubbing sempre ativo na borda, comprado em três semanas, começando com 1,2 Tbit/s de capacidade. A filtragem fica permanentemente no caminho, então não há atraso de detecção nem botão para alguém apertar às 02:47. Isso agora é padrão em todos os sites, até 12 Tbit/s no maior.
- Uplink em AMS-01 elevado, primeiro para 200 Gbit/s de capacidade adicional e depois para os 400 Gbit/s que o site opera hoje.
- Telemetria de fluxo sem amostragem em cada borda de site, retida por sete dias para fins operacionais. Isso é metadados de tráfego para nossas próprias portas; não é tráfego de instância nem conteúdo de nada.
- A rota de descarte tornou-se automática, com limite documentado, política anunciada e e-mail ao cliente afetado em sessenta segundos, em vez de trinta e nove minutos.
- Ataques são publicados na página de status, com tamanho e duração, quer alguém tenha notado ou não.
O que não mudamos, e por quê
Não começamos a cobrar por filtragem. O scrubbing básico está incluído em todos os planos em todos os sites e sempre esteve desde o dia em que o compramos. Um ataque não é um serviço que a vítima pediu. A filtragem de camada 7 com regras personalizadas existe como complemento porque precisa de um humano do nosso lado, e isso é diferente de uma inundação volumétrica.
Não removemos a rota de descarte. Doze terabits por segundo é um número, não infinito, e fingir que nunca mais precisaremos do instrumento contundente seria desonesto. O que mudou é que agora é o último recurso documentado, em vez do único passo.
Não impusemos tetos de tráfego por cliente. Limitar a taxa de todos os clientes a uma fração segura do uplink teria evitado isso e também sufocaria todos os picos legítimos. A filtragem pertence à borda, no ataque, não no cliente.
Não movemos o cliente para um produto diferente. Eles estavam executando o que haviam pago, no plano que lhes convinha, e não era culpa deles que alguém apontou um botnet para eles.