Cómo redujimos el downtime de Taringa! cambiando el enfoque del problema
Taringa! es una plataforma de generación de contenido de forma distribuida apetecible para los ataques y “experimentaciones” de los usuarios. Hasta hace un par de años, cuando surgía el tema de seguridad o denegación de servicios cualquiera de estos asuntos casi siempre la respuesta era “no hay nada que podamos hacer”. Pero como creemos que es una mala respuesta, empezamos un camino en búsqueda de una mejor resolución del problema abriendo nuevos caminos de comunicación con los usuarios. En este post voy a compartir lo que aprendimos evitando que Taringa! sea perjudicado por acciones agresivas.
Cuando hablamos de seguridad nos referimos a todos aquellos bugs que pueden ser explotados para obtener acceso no autorizado a información o privilegios. Cuando hablamos de DOS, se trata de ataques de denegación de servicio (Denial of Service), que suelen tomar formas muy distintas. Finalmente, los ataques DDOS (Distributed DOS) son aquellos que realizan de forma distribuida. Si bien seguridad, DOS y DDOS son tres temas diferentes tienen un punto en común y es que afectan a la experiencia del usuario dentro del sitio.
Sin duda lo que marcó el camino hacia mejorar esa respuesta fue hacernos más preguntas sobre los motivos de los ataques: ¿Qué hacen? ¿Quién son? ¿Cómo lo hacen? ¿Por qué la gente ataca el sitio? ¿Cómo hacen para dejarnos fuera de línea? ¿Qué quieren conseguir? ¿Cómo podemos establecer canales de comunicación con la comunidad para valernos de la inteligencia colectiva?
Hemos recibido ataques donde con apenas un usuario ingresaba a una sección del sitio su avatar cambiaba por uno elegido por el atacante. Otro caso fue un script que generaba posts que incluían insultos, malas palabras e imágenes con contenido adulto usando las credenciales de la víctima. También vimos cómo una computadora desde China pedía repetidamente una misma página, más de 100 veces por segundo. También nos pasó que nuestro proveedor de conectividad desactive todo el tráfico que llegaba a nuestro servidor ya que el ataque que sufríamos estaba afectando a otros clientes dentro de la misma red.
Dos años atrás, nuestras herramientas de monitoreo no nos permitían ver con claridad el alcance de los problemas. No teníamos detalle sobre lo que realmente sucedía dentro de cada servicio. Nos enterábamos de problemas que afectaban a miles de usuarios recién cuando alguna persona lo reportaba. El promedio de tiempo de respuesta para empezar a resolver problemas lo medíamos en horas. Sabíamos que habíamos sufrido un ataque simplemente por ver un pico de consumo en el ancho de banda al día siguiente.
La mejor respuesta a los problemas de seguridad en el código del sitio la encontramos dentro del programa whitehat, abriendo un canal fluido para recibir los bugs y compensar a los usuarios monetariamente, una iniciativa que surgió dentro del equipo para cambiar la perspectiva. Comenzamos en noviembre 2014 y llevamos reportados y resueltos más de 50 bugs dentro del programa. Si esos bugs hubiesen sido explotados se traducirían en muchos problemas para los usuarios y en muchas noches de salir corriendo a parchear cosas. Puedes conocer más sobre el programa en este link http://tarin.ga/kZi.
Para mitigar los ataques de denegación de servicio, el primer paso fue mejorar el monitoreo. Saber qué está pasando y qué pasa habitualmente en cada uno de los servicios es clave para entender los cambios de comportamiento. Revisar las métricas en el momento del ataque sirve para entender cuál es el recurso a proteger. Transformar logs en gráficos es la mejor forma para entender lo que pasa en servidores con más de 15.000 request por minuto.
Finalmente encaramos los ataques DDOS, los más aterradores y complejos de todos. Los ataques DDOS son un problema demasiado grande para nosotros, para nuestro proveedor de conectividad actual e incluso para la mayoría de los data centers en Argentina. La solución para esto la encontramos de la mano de Cloudflare, que simplemente agrega una capa de protección entre Taringa! y el mundo filtrando el tráfico malicioso. La clave de su solución es que al tener presencia alrededor del mundo pueden bloquear el ataque incluso antes de que salga del país de origen, entonces en vez de bloquear un ataque gigante bloquean muchos ataques pequeños. Se puede ver el caso analizado por Cloudflare aquí.
En conclusión, gracias al programa whitehat en estos 18 meses encontramos y arreglamos más de 50 problemas de seguridad. Redujimos los incidentes de downtime de más de 400 durante 2014 a menos de 200 en 2015. Nuestros usuarios están más felices y nosotros dormimos tranquilos por las noches.
No tenemos todas las respuestas, pero seguro estamos mucho mejor que antes. Hay una comunidad que nos cuida el sueño.