Uno de mis clientes de tránsito de BGP me ha pedido una solución para que le resulte más fácil bloquear el tráfico dentro de nuestra red cuando sufre ataques DDoS. Por lo general, el ennegrecimiento de BGP se realiza al ennegrecer el objetivo , sin embargo, mi cliente está buscando una solución para el agujero negro basado en la dirección de origen para que el objetivo del ataque no se desconecte.
Construir una solución de agujero negro basada en la dirección del objetivo no es tan difícil: solo haga que el cliente anuncie el objetivo como una ruta más específica a través de una sesión BGP separada o haga que lo etiquete con una comunidad específica, luego use una política de enrutamiento para establecer el siguiente salto a alguna interfaz de descarte.
La construcción de una solución de agujero negro donde las fuentes del ataque (que no están dentro del espacio IP del cliente) están bloqueadas parece ser un poco más difícil. Si usara la misma solución que para filtrar destinos, mi problema es que solo quiero descartar el tráfico de fuentes específicas hacia este cliente específico, por lo que insertar rutas de descarte en mi tabla de enrutamiento ya no es aceptable ya que afectaría a otros clientes como bien. Así que necesito alguna forma de crear un filtro que solo se aplique a este cliente específico.
La primera solución en la que estaba pensando era usar BGPFlowspec. Desafortunadamente, esto no funcionará para este cliente específico ya que su equipo no lo admite.
Entonces, lo que he estado buscando es una forma de crear un filtro de firewall dinámico basado en alguna propiedad de enrutamiento, muy probablemente una comunidad establecida por nuestro cliente o por nosotros cuando recibimos una ruta específica a través de una sesión de agujero negro BGP dedicada. Este filtro se puede aplicar en las interfaces del cliente para bloquear el tráfico no deseado. Desafortunadamente, no he encontrado una manera fácil de crear un filtro de firewall (o lista de prefijos) de esta manera.
Encontré http://thomas.mangin.com/posts/bgp-firewall.html , que 'usa mal' la SCU / DCU para lograr más o menos lo que estoy buscando, pero suena como un truco .
Una de las otras soluciones que puedo pensar es crear un filtro estático en nuestras rutas y crear una interfaz que permita a nuestro cliente modificar la lista de prefijos utilizada por este filtro. Sin embargo, empujar los cambios de configuración en mis enrutadores cada vez que el cliente desea agregar un agujero negro no es realmente lo que quiero. Se preferiría alguna solución con BGP.
Por nuestro lado, el enrutamiento se realiza en Juniper, para una solución, preferiría tener algo que se pueda usar en una variedad de plataformas, por lo que básicamente debería usar BGP a través de una sesión separada o etiquetar rutas a través de una comunidad específica. De esta manera, también puedo usarlo para otros clientes.
Estoy realmente interesado si alguien tiene una buena solución para esto (aparte de la SCU / DCU).
fuente
Respuestas:
GRNET (la red griega de Investigación y Educación) ha desarrollado una aplicación web para que los clientes hagan esto con Flowspec. El portal web tiene un backend BGP Flowspec que inyecta flowpec en su red. Altamente configurable y en uso en el backbone GEANT paneuropeo de 500-1,000 Gbps: https://www.noc.grnet.gr/en/fod
fuente
Para (finalmente) responder mi propia pregunta:
Esta no es la forma en que quiero implementar esto con las versiones actualmente compatibles de JunOS. Sí, hay otras formas de alcanzar el objetivo, como se mencionó en la otra respuesta y en los comentarios, pero mi pregunta específica era poder señalar el blackholing mediante una sesión de BGP.
fuente
La creación dinámica de reglas de firewall no es solo para redirigir el tráfico para un blachole sino también para permitir que el tráfico entre centros de datos, entre empresas e intranet se distribuya geográficamente, para tener políticas de firewall definidas con abstracción de IP, utilizando algunas etiquetas en el enrutamiento dinámico para poblar cortafuegos y luego permitir el control del tráfico. Hace unos años busqué una solución como esa con Juniper, pero no recibí ningún comentario. Hay algunas secuencias de comandos en Junos que pueden ayudar en el tema, pero luego la población de objetos no se realizó por completo en respuesta a los eventos de intercambio de enrutamiento. Tampoco había posibilidad de etiquetar rutas directas para clasificarlas según las necesidades:
FlowSpec podría ser una ayuda y un firewall que podría conectarse directamente al núcleo de mpls como PE también sería una ayuda. ¿Alguien sabe acerca de tal solución?
fuente