Resumen
El 14 de octubre de 2020, entre las 02:41 y las 02:52 UTC, todas las instancias en AMS-01 fueron inalcanzables. Un ataque volumétrico dirigido a una única dirección de cliente alcanzó un pico de 340 Gbit/s y saturó los uplinks del sitio. Lo resolvimos pidiendo al upstream que descartara todo el tráfico hacia la dirección objetivo, lo que restauró el sitio y dejó a ese único cliente sin conexión durante otros cincuenta minutos. No se perdieron datos y ninguna instancia resultó dañada. El sitio no disponía de capacidad de limpieza en ese momento, y esa fue una decisión de compra, no un accidente.
Cronología
Todas las horas en UTC, 14 de octubre de 2020.
| Hora | Evento |
|---|---|
| 02:41:04 | El tráfico hacia una única dirección de cliente sube de unos 200 Mbit/s a 90 Gbit/s en menos de veinte segundos. |
| 02:41:30 | Ambos uplinks del sitio se saturan. La pérdida de paquetes se vuelve total en todos los prefijos del sitio, no solo en el objetivo. |
| 02:42 | Las alertas automáticas se activan por falta de alcance desde tres sondas externas. |
| 02:44 | El ingeniero de guardia se conecta. El ataque es visible en las gráficas de puertos y en ningún otro lugar, porque nuestro muestreo de flujos estaba configurado a una tasa que no podía seguir el ritmo. |
| 02:46 | Pico medido de 340 Gbit/s. La composición es UDP reflejado, principalmente DNS y NTP, desde decenas de miles de fuentes. |
| 02:47 | Se toma la decisión de solicitar al upstream el descarte de todo el tráfico hacia la dirección objetivo. Esta era la única herramienta disponible para nosotros. |
| 02:49 | El descarte se propaga en el primer upstream. |
| 02:51 | El segundo upstream lo aplica. La utilización del uplink cae por debajo de la capacidad. |
| 02:52:10 | El sitio es totalmente alcanzable. Interrupción total visible para el cliente: once minutos y seis segundos. |
| 03:20 | Se contacta al cliente afectado y se le ofrece una nueva dirección. |
| 03:42 | El cliente se traslada a una nueva dirección; su servicio se restablece. |
Causa raíz
La causa inmediata fue un ataque que no pudimos absorber. Lo que realmente lo causó es que vendimos alojamiento en una ciudad donde los ataques de este tamaño eran habituales, con doscientos gigabits de uplink y sin ningún tipo de filtrado, y tratamos un acuerdo de descarte del upstream como un plan.
Eso no es mala suerte. Fue una decisión, tomada en 2019 a favor de gastar el dinero en hardware, y fue errónea.
Dos fallos secundarios lo empeoraron. Nuestro muestreo de flujos estaba configurado a una tasa que no nos daba detalles útiles durante un evento real, por lo que los primeros cuatro minutos se dedicaron a leer los contadores de interfaz. Y el descarte era manual, requería que un humano estuviera despierto, autenticado y seguro, que son tres requisitos de más a las tres de la madrugada.
Lo que esto costó al cliente
Siendo francos: arreglamos nuestro problema apagando su servicio. Una ruta de descarte es la decisión de que un cliente sea inalcanzable para que los demás no lo sean. Fue la llamada correcta con las herramientas que teníamos; sigue siendo su interrupción, no la nuestra, y no habían comprado ningún producto que prometiera otra cosa.
Se quedaron. No les cobramos octubre.
Lo que cambiamos
- Limpieza siempre activa en el borde, comprada en tres semanas, a partir de 1,2 Tbit/s de capacidad. El filtrado reside permanentemente en la ruta, por lo que no hay retraso de detección ni botón que nadie tenga que pulsar a las 02:47. Esto es ahora estándar en todos los sitios, hasta 12 Tbit/s en los más grandes.
- Uplink en AMS-01 aumentado, primero a 200 Gbit/s de capacidad adicional y más tarde a los 400 Gbit/s que el sitio tiene hoy.
- Telemetría de flujos sin muestreo en cada borde del sitio, retenida con fines operativos durante siete días. Esto es metadatos de tráfico de nuestros propios puertos; no es tráfico de instancias ni el contenido de nada.
- La ruta de descarte se automatizó, con un umbral documentado, una política anunciada y un correo al cliente afectado en menos de sesenta segundos en lugar de treinta y nueve minutos.
- Los ataques se publican en la página de estado, con tamaño y duración, tanto si alguien se da cuenta como si no.
Lo que no cambiamos y por qué
No empezamos a cobrar por el filtrado. La limpieza base está incluida en todos los planes de todos los sitios y siempre lo ha estado desde el día que la compramos. Un ataque no es un servicio que la víctima haya solicitado. El filtrado de capa 7 con reglas personalizadas existe como complemento porque requiere un humano de nuestro lado, y eso es algo diferente de una inundación volumétrica.
No eliminamos la ruta de descarte. Doce terabits por segundo es un número, no infinito, y fingir que nunca más necesitaremos el instrumento contundente sería deshonesto. Lo que cambió es que ahora es el último recurso documentado en lugar del único paso.
No impusimos techos de tráfico por cliente. Limitar la velocidad de cada cliente a una fracción segura del uplink habría evitado esto y también limitaría cada pico legítimo. El filtrado pertenece al borde, al ataque, no al cliente.
No movimos al cliente a un producto diferente. Estaban ejecutando lo que habían pagado, en el plan que les convenía, y no fue su culpa que alguien les apuntara un botnet.