Visión general:
BGP FlowSpec (Border Gateway Protocol Flow Specification) es una extensión del protocolo BGP que se utiliza para definir reglas de filtrado de tráfico en los routers. A diferencia del BGP convencional, que enruta basándose en IPv4/IPv6 e información de prefijos, BGP FlowSpec permite a los administradores de red especificar criterios más granulares para el reenvío de paquetes, incluida información de capa 4 (puertos TCP/UDP) e incluso patrones de paquetes.
Flowspec simplifica a los administradores de red la creación dinámica de reglas de cortafuegos a través de anuncios BGP, utilizando criterios de capa 4 como puertos de protocolo y aplicación y aplicando acciones como descartar tráfico o sólo aplicar control de ancho de banda.
Si quiere saber más sobre cómo funciona FlowSpec, consulte este artículo en el que se explica qué es FlowSpec.
Operación:
BGP FlowSpec funciona añadiendo nuevos tipos de atributos a BGP, lo que permite a los administradores de red especificar reglas detalladas de filtrado (o cortafuegos dinámico). Estas normas pueden incluir criterios como:
- Direcciones de origen y destino IPv4/IPv6
- Puertos TCP/UDP
- Tipo ICMP
- Protocolos
- Máscaras de bits
- Valores de los campos del paquete
Se pueden realizar las siguientes acciones con BGP FlowSpec:
- deny: Bloquea el tráfico correspondiente a la regla.
- rate-limit: Limita la tasa de tráfico correspondiente a la regla.
- redirect: Redirige el tráfico correspondiente a la regla.
- sample: Crea muestras del tráfico correspondiente a la regla.
- mark: Marca los paquetes que coinciden con la regla con una marca específica.
- redirect-to-ip: Redirige el tráfico correspondiente a la regla a una dirección IP específica.
- traffic-rate: Limita la tasa de tráfico correspondiente a la regla a un valor específico.
- traffic-action: Define la acción para el tráfico correspondiente, como aceptar, descartar o reenviar.
- redirect-to-blackhole: Descarta silenciosamente todo el tráfico correspondiente a la regla.
Cuando estas reglas se propagan a través de la red BGP, los routers pueden utilizar esta información para filtrar o manipular el tráfico de acuerdo con las políticas definidas,
Funcionamiento – Más detalles:
En el contexto de BGP FlowSpec, las acciones se especifican como parte de las reglas de filtrado. Cada regla de filtrado contiene tres partes principales:
- Campos de coincidencia: Especifique los criterios de Campos, como direcciones IPv4/IPv6 de origen y destino, puertos TCP/UDP, protocolos, tipo ICMP, máscaras de bits y valores de campo de paquete.
- Campos de Acción: Especifique las acciones que se tomarán para el tráfico que corresponde a la regla.
- Campos de Protocolo: Especifique el protocolo que debe aplicar la regla de filtrado.
Las acciones en BGP FlowSpec se codifican utilizando comunidades BGP. Cada acción se asigna a una comunidad BGP específica:
- La acción de denegación puede estar representada por una comunidad BGP específica, como 65535:666.
- La acción de limitación de velocidad puede estar representada por otra comunidad BGP específica, como 65535:777.
- La acción de redirección puede estar representada por una comunidad BGP diferente, como 65535:888.
Cuando se crea una regla BGP FlowSpec, se especifican los campos coincidentes, la acción deseada y, opcionalmente, los campos de protocolo. A continuación, esta regla se codifica como una comunidad BGP y se incluye en un mensaje de actualización BGP que se envía a los routers vecinos. Los routers que reciben esta regla aplican las acciones especificadas a los paquetes que cumplen los criterios de coincidencia.
Tenga en cuenta que las comunidades BGP específicas para cada acción pueden variar dependiendo de la implementación de BGP FlowSpec en su router. Le recomiendo que consulte la documentación de su equipo para obtener información detallada sobre las comunidades BGP asociadas a cada acción en BGP FlowSpec.
Casos prácticos:
- Mitigación de ataques DDoS:
BGP FlowSpec puede utilizarse para bloquear o redirigir tráfico malicioso durante ataques de denegación de servicio distribuidos (DDoS). Se pueden aplicar reglas precisas para filtrar el tráfico no deseado y mantener los servicios en línea.
- Políticas de calidad de servicio (QoS):
Los administradores de red pueden utilizar BGP FlowSpec para garantizar la calidad del servicio priorizando determinados tipos de tráfico en función de puertos o protocolos específicos.
- Aplicación de políticas de seguridad:
BGP FlowSpec puede utilizarse para aplicar políticas de seguridad granulares, bloqueando el tráfico asociado a malware o actividades sospechosas.
Ejemplos de configuración:
Ahora que ya sabes lo que es FlowSpec y lo que puede hacer, vamos a mostrarte cómo configurar FlowSpec en los routers de Huawei. Esta configuración se aplica a Huawei NE20, Huawei NE40, Huawei NE8000-M4, Huawei NE8000-M8, Huawei NE8000-M12, Huawei NE8000-F1A o cualquier Huawei que utilice el sistema operativo VRP de Huawei.
Ejemplo de configuración de la especificación dinámica de flujo BGP:
Si se desconocen las características del tráfico de ataques DoS o DDoS, un servidor de análisis de tráfico, como Made4Flow con Anti-DDoS, puede ayudar a implementar la especificación de flujo BGP para garantizar la seguridad de la red.
#Requisitos de red:
Como se muestra en la Topología de abajo, el Dispositivo A pertenece al AS 100, mientras que el Dispositivo B, el Dispositivo C y el Servidor pertenecen al AS 200. El dispositivo B es una entrada del AS 200. El AS 200 se comunica con el AS 100 a través del dispositivo B.
El origen del ataque en el AS 100 puede fluir hacia el AS 200 a través del Dispositivo B, lo que supone una amenaza para el AS 200. En esta situación, configure la especificación dinámica de flujo BGP para garantizar la seguridad de la red. El proceso operativo es el siguiente:
- Despliegue un servidor de análisis de tráfico como Made4Flow con Anti-DDoS;
- y establecer una sesión FlowSpec BGP entre el Servidor de Análisis de Tráfico Made4Flow y el dispositivo B.
- El dispositivo B recoge muestras de tráfico periódicamente y envía la muestra de tráfico al Made4Flow.
- O Made4Flow genera una ruta BGP FlowSpec basada en las características del tráfico de ataque muestreado;
- y envía la ruta al dispositivo B.
- El dispositivo B convierte la ruta en una política de tráfico (como una regla de cortafuegos) para filtrar y controlar el tráfico de ataque, asegurando la correcta transición de los servicios en el AS 200.
Nota: Las interfaces 1 a 3 en este ejemplo representan GE 1/0/0, GE 2/0/0 y GE 3/0/0 respectivamente.
El script de configuración es el siguiente:
- Configure una dirección IP para cada interfaz.
- Establecer una sesión BGP FlowSpec entre el dispositivo B y Made4Flow para permitir que las rutas BGP FlowSpec generadas se envíen al dispositivo B. A continuación, se genera una política de tráfico.
Preparación de datos:
Para completar la configuración, necesita los siguientes datos:
- ID de router del dispositivo A (1.1.1.1) e ID de router del dispositivo B (2.2.2.2).
- Número de AS del Dispositivo A (100) y número de AS del Dispositivo B, Dispositivo C y Made4Flow (Servidor) (200).
Procedimiento:
- Configure una dirección IP para cada interfaz.
- Para obtener información detallada, consulte los archivos de configuración de este ejemplo (más abajo).
- Configurar un peer BGP Flowspec y desactivar la autenticación de rutas.
Vamos a demostrar los comandos utilizados, en nuestro laboratorio estamos utilizando un simulador como PNETLAB/EVE-NG.
#Configurael dispositivo B:
[~DeviceB] bgp 200
[*DeviceB-bgp] peer 10.2.1.2 as-number 200
[*DeviceB-bgp] ipv4-family flow
[*DeviceB-bgp-af-ipv4-flow] peer 10.2.1.2 enable
[*DeviceB-bgp-af-ipv4-flow] peer 10.2.1.2 validation-disable
[*DeviceB-bgp-af-ipv4-flow] commit
[~DeviceB-bgp-af-ipv4-flow] quit
[~DeviceB-bgp] quit
#Compruebael estado de la conexión peer de la sesión FlowSpec en el dispositivo B, si la sesión tiene el estado «Establecida» la sesión es correcta y funcional.
<DeviceB> display bgp flow peer
BGP local router ID : 2.2.2.2
Local AS number : 200
Total number of peers : 1 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
10.2.1.2 4 200 9 10 0 00:00:35 Established 1
#Compruebalas rutas recibidas vía BGP Flowspec por el dispositivo B:
<DeviceB> display bgp flow routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped, x - best external, a - add path,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V - valid, I - invalid, N - not-found
Total Number of Routes: 1
* > ReIndex : 97
Dissemination Rules:
FragmentType : match (Don't fragment)
MED : 0 PrefVal : 0
LocalPref: 100
Path/Ogn : i
#Compruebela política de tráfico (regla de cortafuegos dinámica) en cada ruta BGP Flowspec basándose en el ReIndex mostrado en la salida anterior:
<DeviceB> display bgp flow routing-table 97
BGP local router ID : 2.2.2.2
Local AS number : 200
ReIndex : 97
Order : 2147483647
Dissemination Rules :
FragmentType : match (Don't fragment)
BGP flow-ipv4 routing table entry information of 97:
Match action :
apply deny
From: 10.2.1.2 (10.2.1.2)
Route Duration: 0d00h02m26s
AS-path Nil, origin igp, MED 0, localpref 100, pref-val 0, internal, pre 255
Not advertised to any peers yet
Archivos de configuración de escenarios completos:
Archivo de configuración del dispositivo A:
#
sysname DeviceA
#
interface GigabitEthernet0/1/0
undo shutdown
ip address 10.10.1.1 255.255.255.0
#
bgp 100
peer 10.10.1.2 as-number 200
#
ipv4-family unicast
undo synchronization
peer 10.10.1.2 enable
#
return
Archivo de configuración del dispositivo B:
#
sysname DeviceB
#
interface GigabitEthernet0/1/0
undo shutdown
ip address 10.10.1.2 255.255.255.0
#
interface GigabitEthernet0/2/0
undo shutdown
ip address 10.2.1.1 255.255.255.0
#
interface GigabitEthernet0/3/0
undo shutdown
ip address 10.1.1.1 255.255.255.0
#
interface LoopBack1
ip address 2.2.2.2 255.255.255.255
#
bgp 200
peer 10.2.1.2 as-number 200
peer 10.10.1.1 as-number 100
#
ipv4-family unicast
undo synchronization
peer 10.2.1.2 enable
peer 10.10.1.1 enable
#
ipv4-family flow
peer 10.2.1.2 enable
peer 10.2.1.2 validation-disable
#
return
- - -
A continuación se muestra otro ejemplo básico de una regla BGP FlowSpec para bloquear el tráfico de un puerto en particular:
Validar las rutas BGP Flowspec recibidas:
display bgp flow routing-table
Validar los detalles de la ruta recibida:
display bgp flow routing-table 532481
Para comprobar que las rutas BGP Flowspec son efectivas, puede utilizar los siguientes comandos:
Validar estadísticas de ruta:
display flowspec statistics $REINDEX
system-view
diagnose
display fe slot 9 fe-id 0 table flowspec action $REINDEX
Más comandos para las validaciones:
system-view
diagnose
display fe slot 9 fe-id 1 table flowspec action $REINDEX
display fe slot 9 fe-id 1 table flowspec relation $REINDEX
display fe slot 9 fe-id 1 table flowspec rule $REINDEX
Ejemplo de ruta Flowspec con límite de velocidad:
RFC:
Para obtener información detallada sobre BGP FlowSpec, consulte las siguientes RFC:
- RFC Editor
El RFC Editor es el recurso oficial para los RFCs (Request for Comments) que definen los estándares de Internet, incluyendo BGP FlowSpec. - RFC 8955: Dissemination of Flow SpecificationRules
Esta RFC describe las reglas de especificación de flujo en el contexto de BGP FlowSpec. - RFC 8956: Difusión dereglas de especificaciónde flujo para IPv6
Esta RFC amplía el soporte de BGP FlowSpec a IPv6, permitiendo la especificación de reglas de flujo para tráfico IPv6.
Asegúrese de consultar estas RFC para obtener información detallada sobre BGP FlowSpec y sus extensiones.
¿Sabía usted que Made4Flow ahora tiene automatizado BGP Flowspec en sus configuraciones y usted puede proteger su red y sus clientes utilizando esta tecnología?
Puede automatizar los anuncios BGP FlowSpec con reglas de descarte, límite de velocidad y flexibles.