Community de Blackhole

La utilización de la comunity de blackhole en BGP es una técnica que proporciona la capacidad de descartar el tráfico no deseado antes de que entre en la red protegida.

Conceptualmente es algo maravilloso. La idea es proteger nuestra red haciendo que el tráfico que no queremos ni siquiera llegue a nuestra red.

En el audio de hoy voy a contaros las aplicaciones de los blackholes, cómo desplegarlo y cómo puede ayudarnos para mitigar ataques de denegación de servicio DDoS.

Lo primero indicar que cuando hablamos de Blackholes normalmente estamos simplificando muchísimo y realmente nos estamos refiriendo a “Remotely Triggered Black Hole Filtering” que vendría a ser un “filtrado de blackhole disparado a distancia”, esta es una traducción muy libre, pero creo que la idea queda clara y no es otra más que crear un filtro en un dispositivo remoto.

Esta técnica no es algo dependiente de ningún fabricante, sino una forma de proceder basándonos en las posibilidades que nos da BGP para transmitir información mediante Communities y en las capacidades de filtrado de cualquier router de hoy en día.

Además el filtrar el tráfico antes de que entre en nuestra red es una necesidad porque los ataques distribuidos pueden llegar a tener un tamaño mayor que la capacidad de nuestros tránsitos. Es decir, podemos llenar todo el ancho de banda disponible con el tráfico del DDoS dejando toda la red fuera, así que es muy importante que ese tráfico no llegue a entrar.

Pensad que si hubiera un DDoS que llenara el ancho de banda completo de la red podría incluso llegar a dejar fuera a las personas encargadas de trabajar con la red para mitigar el problema.

El procedimiento para crear un blackhole sería el siguiente:

  1. Generar un anuncio de iBGP con una community dada, podría ser la 666 por ejemplo y anunciar el prefijo a bloquear a los routers frontera.
  2. Estos routers frontera recibirían y al comprobar que la community es la de blackhole anunciaría ese mismo prefijo a sus tránsitos. Cada tránsito es posible que use diferentes communities de blackhole, con lo que habrá que hacer adaptaciones.
  3. Cuando llega al proveedor de tránsito este seguirá propagando el blackhole e incluirá una ruta a una IP/32 asignada a null0 para ese prefijo recibido.
  4. Al llegar trafico a nuestros tránsitos al prefijo que está en blackhole el tráfico no será enviado a nosotros sino enviado a esa IP/32 y descartado porque el rango de blackhole será normalmente más pequeño por lo tanto preferido.

Bueno, vamos a tratar de explicar esto un poco más despacio porque aquí hay cosas que pueden sonar un poco raras.

La configuración tiene varias partes y queremos que haga lo siguiente

  1. Match una etiqueta con valor 666.
  2. Cambiamos el next-hop a 192.0.2.1
  3. Cambiamos la local-preference a 200.
  4. Cambiamos el origin a igp.
  5. Marcamos la community no-export.

Y para lanzar el blackhole haríamos lo siguiente:

ip route 198.51.100.1 255.255.255.255 Null0 tag 666

La configuración que haría esto es la siguiente:

interface loopback0 
ip address 192.168.1.1 255.255.255.255 
interface Null0 
no ip unreachables 
router bgp 64555 
no synchronization 
no bgp client-to-client reflection 
bgp log-neighbor-changes 
redistribute static route-map black-hole-trigger 
neighbor black-hole peer-group 
neighbor black-hole remote-as 64555 
neighbor black-hole update-source loopback0 
neighbor black-hole route-reflector-client 
neighbor x.x.x.x peer-group black-hole 
route-map black-hole-trigger 
permit 10 match tag 666 
set ip next-hop 192.0.2.1 
set local-preference 200 
set origin igp 
set community no-export 
route-map black-hole-trigger deny 20

Tener en cuenta si buscáis por ahí ejemplos para copiar y pegar, como el que os pongo en las notas del programa, que los ejemplos se suelen hacer con los rangos 192.0.2.0/24 (TEST-NET-1), 198.51.100.0/24 (TEST-NET-2), y 203.0.113.0/24 (TEST-NET-3) que son bloques reservados para documentación y no pueden ser usados en Internet.

Con esto ya podemos anunciar a nuestros peers.

Ya tenemos un sistema para meter en blackhole rutas que metamos a mano, pero el problema es que tenemos que ser muy rápidos. Como ya he dicho es importante que tengamos en cuenta que si tenemos un DDoS muy grande puede llegar a llenarse los tránsitos y eso ¿sabéis lo que significará?

Que nuestras actualizaciones de BGP con los prefijos blackholeados no llegarán a nuestros tránsitos y el blackhole no será efectivo.

Para solucionar eso hay algún operador de tránsito, Cogent para ser más concretos que te da una sesión multihop y podrías anunciar el blackhole aunque su sesión BGP esté caída. Es decir, tendremos una sesión BGP sólo para el blackhole.

Para implementar blackhole podemos hacerlo a mano (y ser muy raṕidos) o bien automatizarlo, pero claro, eso requiere que tengamos cuidado cuando lanzar el blackhole, si lo hacemos demasiado pronto podremos dejar a clientes sin conectividad sólo por un pico de tráfico legitimo y si es demasiado tarde a lo mejor el blackhole ya no vale para nada, así que para ello lo mejor es que esto os lo monte alguien con la suficiente experiencia en este tipo de soluciones.

En Tecnocrática damos este servicio a nuestros clientes de gestión de red, es decir, a los clientes que les gestionamos la red les montamos varias cosas y una de ellas es esto, la automatización de blackholes en función de su perfil de tráfico y necesitadas específicas, porque cada red es un Mundo.

También deciros que aquí os he puesto un ejemplo en Cisco porque creo que es lo más extendido y común, pero obviamente esto se podrá hacer con cualquier otra fabricante, lo que pasa es que en algunos tendremos que innovar un poco porque por ejemplo con Mikrotik en BGP no podemos hacer un set next-hop, así que bueno, hay que ser más imaginativo.

Al final lo que importa es encontrar una solución para este tipo de problemas y enviar una actualización de BGP a nuestros tránsitos, cada uno con su community de blackhole.

Denegación de Servicio

Lo primero que habría que definir es ¿qué es una denegación de servicio?, ¿a qué afecta?

Nuestra perspectiva en la cadena de servicio va a ser la que nos haga definir qué es. No es lo mismo si nos centramos en una web, en un servicio, en un hoster o en una empresa.

En el audio de hoy hablo un poco sobre las distintas perspectivas de la denegación de servicio.

Ataques de DDoS y Blackhole

Los DDoS (ataques de denegación de servicio) son cada día más grandes y baratos de hacer y las opciones para defenderse de ellos no son del todo efectivas.

Un ataque de DDoS no consiste en algo más complejo que mandar mucho tráfico hacia un destino más o menos concreto, puede ser una IP o un grupo de las mismas y lo peor es que es relativamente fácil hacerlo, contratarlo mejor dicho.

Existen servicios online, llamados pruebas de estrés, que te permiten contratar una gran avalancha de tráfico para poder probar el comportamiento de tu red ante ese tipo de situaciones, lo que pasa es que nadie te pregunta si el ataque la prueba de estrés que estás contratando es contra tu red o contra la de un tercero.

El ataque puede ser de muchos tipos, pero al final lo más habitual consiste en llenar los tránsitos (conexiones a Internet) de los ISPs de basura y muchos ISPs lamentablemente no saben defenderse ante eso y mueren, al menos durante un rato.

La solución mágica pasa por tener uno o varios equipos que supuestamente sirven para eso y lo que hacen es limpiar el tráfico, pero tienen un pequeño problema, el tránsito ya te lo han llenado con lo que por mucho tráfico que limpien ya no va a quedar hueco para que el tráfico bueno pase. Este tipo de soluciones sirven para aquellos que tienen redes enormes.

Otra opción es que los tránsitos te ofrezcan el servicio de mitigación, lo que pasa es que las soluciones que ofrecen pasan por entregarte el tráfico mitigado a través de un túnel GRE, en fin, prefiero no opinar sobre una solución en la que te entregan el tráfico encapsulado en un túnel GRE. Por supuesto el tráfico mitigado tendrá un coste totalmente inasumible para la mayoría de ISPs.

Y luego está la opción del Blackhole, que es la más simple, barata y efectiva, sólo tiene un pequeño problema, que consiste en que el atacado es sacado de Internet, por decirlo de otra manera se borra la existencia del atacado de Internet entonces ya no le pueden atacar, pero claro, tampoco puede prestar servicio.

El proceso de blackhole consiste en utilizar la propiedad transistiva del atributo opcional community de BGP. De esta manera lo que hacemos es anunciar a nuestros tránsitos un prefijo /32 a la IP atacada con una community que defina esa IP como blackhole y nuestro transito pondrá dentro de su red una ruta a null, o lo que estime, de forma que esa IP no será accesible desde Internet.

Ahora la gracia, desde que empieza el ataque hasta que los tránsitos están llenos el tiempo que tenemos para reaccionar es muy poquito y va desde unos pocos segundos hasta dos o tres minutos, pero normalmente no va más allá, así que hay que ser muy rápido en detectar y aplicar el blackhole.

Podríamos automatizarlo, pero tendríamos que tener muy claro que no estamos incurriendo en un falso positivo, recordemos que el proceso de blackhole tiene el efecto de tirar a nuestro cliente y eso no se puede hacer a la ligera, tenemos que tener muy claro que no estamos incurriendo en falsos positivos.

También podríamos hacerlo de forma manual, pero claro, eso implica que alguien tiene que estar pendiente el tráfico constantemente y como hemos dicho el tiempo de reacción es realmente bajo.

Por supuesto ni que decir tiene que si uno es un ISP pequeñito y no tiene gente siempre dentro de la red si le atacan, como le saturarán los tránsitos, no podrá entrar para poner medidas a no ser que tenga algún sistema un tanto original porque la típica VPN para acceder por nuestra red no sirve, claro, la red está saturada.

Y ahora la segunda parte, has conseguido meter el blackhole y has parado el ataque, pero claro, tienes el cliente tirado, ¿cómo sabes si el ataque ya ha parado?, pues no, no lo sabes, así que con muchísimo cuidado tienes que probar levantar el blackhole y esperar a ver qué pasa, por supuesto teniendo preparado todo para volver a meter el blackhole de nuevo. Por supuesto se puede hacer de forma automática o no.

Por supuesto existen otras soluciones, a veces más imaginativas, a veces abocadas a un fracaso estrepitoso, pero que no sea por falta de ganas.