Protección de caché de Neighbor Discovery
RESUMEN La protección de caché NDP le permite proteger el motor de enrutamiento de ciertos tipos de ataques de denegación de servicio (DoS) en escenarios de despliegue de IPv6.
Descripción general de la protección de caché de Neighbor Discovery
Los motores de enrutamiento pueden ser susceptibles a ciertos ataques de denegación de servicio (DoS) en escenarios de despliegue de IPv6. Las subredes IPv6 en general tienden a ser muy grandes; por ejemplo, una /64
subred puede tener un gran número de direcciones sin asignar. El plano de control del motor de enrutamiento realiza la resolución de direcciones para direcciones desconocidas. Un atacante puede abrumar rápidamente el plano de control del motor de enrutamiento generando solicitudes de resolución para este espacio de direcciones no asignado, lo que provoca un desbordamiento de la memoria caché. El atacante se basa tanto en el número de solicitudes generadas como en la velocidad a la que se ponen en cola las solicitudes. Estos escenarios pueden inmovilizar los recursos del enrutador e impedir que el motor de enrutamiento responda a solicitudes válidas de vecinos y mantenga las entradas de caché de vecinos existentes, lo que resulta efectivamente en un ataque DoS para usuarios legítimos.
Las estrategias para mitigar estos ataques DoS son las siguientes:
Filtre el espacio de direcciones no utilizado.
Minimice el tamaño de las subredes.
Configurar rutas de descarte para subredes.
Aplique límites al tamaño y la velocidad de resolución de las entradas en la caché de detección de vecinos.
El impacto de la caché de descubrimiento de vecinos se puede minimizar restringiendo el número de vecinos IPv6 y las nuevas direcciones de próximo salto sin resolver que se pueden agregar a la memoria caché. Puede establecer límites por interfaz mediante las instrucciones de nd6-max-cache
configuración y o nd6-new-hold-limit
en todo el sistema mediante la instrucción de nd-system-cache-limit
configuración.
Para plataformas de tamaño pequeño como ACX, EX22XX, EX3200, EX33XX y SRX, el valor predeterminado es 20.000.
Para plataformas medianas como EX4200, EX45XX, EX4300, EX62XX, QFX y MX, el valor predeterminado es 75.000.
Para el resto de plataformas, el valor predeterminado es 100.000.
Configuración de la protección de caché de Neighbor Discovery
Los motores de enrutamiento pueden ser susceptibles a ciertos tipos de ataques de denegación de servicio (DoS) en escenarios de despliegue de IPv6. Las subredes IPv6 en general tienden a ser muy grandes; Por ejemplo, una /64
subred puede tener un gran número de direcciones sin asignar. El plano de control del motor de enrutamiento realiza la resolución de direcciones para direcciones desconocidas. Un atacante puede abrumar rápidamente el plano de control del motor de enrutamiento generando solicitudes de resolución para este espacio de direcciones no asignado, lo que provoca un desbordamiento de la memoria caché. Un atacante depende tanto del número de solicitudes generadas como de la velocidad a la que se ponen en cola las solicitudes.
El proceso de descubrimiento del vecino es la parte del plano de control que implementa el protocolo de descubrimiento del vecino. Es responsable de realizar la resolución de direcciones y mantener las entradas en la caché vecina. Una forma de mitigar los ataques DoS es imponer límites al tamaño de la caché de detección de vecinos y la tasa de resolución de las nuevas entradas del próximo salto, y priorizar ciertas categorías de tráfico de detección de vecinos. Puede configurar límites para la caché de detección de vecinos por interfaz y en todo el sistema.
Antes de comenzar, asegúrese de que está ejecutando Junos OS versión 15.1 o posterior.
Los límites locales se aplican a interfaces individuales y se definen para las entradas resueltas y no resueltas en la cola de detección de vecinos, mientras que los límites globales se aplican en todo el sistema.
Para configurar la protección de caché de neighbor discovery en una interfaz:
Para comprobar la configuración, ejecute el show interfaces interface-name
comando operativo.
Para configurar la protección de caché de detección de vecinos en todo el sistema:
Configure el límite de todo el sistema para la caché de detección de vecinos.
[edit] user@host# set system nd-system-cache-limit limit
Para verificar los límites configurados para todo el sistema, ejecute el show system statistics icmp6
comando operativo.
Para plataformas de tamaño pequeño como ACX, EX22XX, EX3200, EX33XX y SRX, el valor predeterminado es 20.000.
Para plataformas medianas como EX4200, EX45XX, EX4300, EX62XX, QFX y MX, el valor predeterminado es 75.000.
Para el resto de plataformas, el valor predeterminado es 100.000.
Ejemplo: configuración de la protección de caché de Neighbor Discovery para evitar ataques de denegación de servicio
En este ejemplo se muestra cómo configurar un límite para el número de entradas de vecinos IPv6 que se pueden agregar a la detección de vecinos. La imposición de límites al número de entradas en la memoria caché mitiga los ataques de denegación de servicio (DoS). La función de caché de detección de vecinos admite dos tipos de límites:
Local: los límites locales se configuran por interfaz y se definen para las entradas resueltas y no resueltas en la caché de detección de vecinos.
Global: los límites globales se aplican en todo el sistema. Un límite global se define además por separado para las interfaces públicas y las interfaces de administración, por ejemplo, fxp0. La interfaz de administración tiene un único límite global y ningún límite local. El límite global impone un límite en todo el sistema a las entradas de la caché de detección vecina, incluida la interfaz de circuito cerrado para la instancia de enrutamiento interna, así como las interfaces de administración y las interfaces públicas.
Requisitos
Este ejemplo requiere enrutadores serie MX que ejecuten Junos OS versión 15.1 o posterior.
Visión general
Los motores de enrutamiento pueden ser susceptibles a ciertos tipos de ataques DoS en escenarios de despliegue de IPv6. Las subredes IPv6 en general tienden a ser muy grandes; por ejemplo, una /64
subred puede tener un gran número de direcciones sin asignar, que se pueden usar para realizar ataques DoS. El plano de control del motor de enrutamiento realiza la resolución de direcciones para direcciones desconocidas. Un atacante puede abrumar rápidamente el plano de control del motor de enrutamiento generando solicitudes de resolución para este espacio de direcciones no asignado y desbordar la cola. El atacante se basa tanto en el número de solicitudes generadas como en la velocidad a la que se ponen en cola las solicitudes.
El proceso de descubrimiento del vecino es la parte del plano de control que implementa el protocolo de descubrimiento del vecino. Es responsable de realizar la resolución de direcciones y mantener la caché de vecinos. Una forma de mitigar los ataques DoS es aplicar límites a los límites de la cola de descubrimiento del vecino, lo que se puede hacer restringiendo el tamaño de la cola y la velocidad de resolución, y priorizando ciertas categorías de tráfico de descubrimiento de vecinos.
Configuración
Para configurar la protección de caché de detección de vecinos, realice estas tareas:
- Configuración rápida de CLI
- Configuración de la protección de caché de Neighbor Discovery
- Resultados
Configuración rápida de CLI
Para configurar rápidamente este ejemplo, copie los siguientes comandos, péguelos en un archivo de texto, elimine los saltos de línea, cambie los detalles necesarios para que coincidan con su configuración de red, copie y pegue los comandos en la CLI en el nivel de jerarquía y, a continuación, ingrese commit
desde el [edit]
modo de configuración.
set interfaces ge-0/3/0 unit 5 family inet6 nd6-max-cache 100 set interfaces ge-0/3/0 unit 5 family inet6 nd6-new-hold-limit 100
También puede configurar un límite en todo el sistema para el número de entradas de vecinos IPv6 en la caché de detección de vecinos. Este límite también incluye la interfaz de circuito cerrado, las interfaces de administración y las interfaces públicas.
set system nd-system-cache-limit 100
La distribución límite de la nd-system-cache-limit
instrucción para diferentes tipos de interfaz se realiza de acuerdo con ciertos porcentajes fijos. Cuando nd-system-cache-limit
se define como X y el límite de caché de detección de vecinos de la interfaz de enrutamiento interna es Y (el valor predeterminado es 200), entonces:
Límite máximo de caché pública, Z = 80% de (X- Y)
Límite máximo de caché de la interfaz de administración (por ejemplo, fxp0), M = 20% de (X-Y)
Configuración de la protección de caché de Neighbor Discovery
Procedimiento paso a paso
En el ejemplo siguiente es necesario navegar por varios niveles en la jerarquía de configuración. Para obtener información acerca de cómo navegar por la CLI, consulte Uso del editor de CLI en modo de configuración en la Guía del usuario de CLI.
Para configurar la protección de caché de detección de vecinos por interfaz:
Configure el
nd6-max-cache
comando ynd6-new-hold-limit
.[edit] user@host# set interfaces ge-0/3/0 unit 5 family inet6 nd6-max-cache 100 user@host# set interfaces ge-0/3/0 unit 5 family inet6 nd6-new-hold-limit 100
Resultados
Para confirmar localmente la protección de caché de detección de vecinos, ingrese show interfaces ge-0/3/0
desde el modo de configuración. Si el resultado no muestra la configuración deseada, repita las instrucciones de este ejemplo para corregir la configuración.
[edit] user@host# show interfaces ge-0/3/0 unit 5{ family inet6 { nd6-max-cache 100; nd6-new-hold-limit 100; } }
Verificación
Confirme que la configuración funciona correctamente.
- Verificación global de la protección de caché de Neighbor Discovery
- Verificación local de la protección de caché de detección de vecinos
Verificación global de la protección de caché de Neighbor Discovery
Propósito
Compruebe que el resultado refleja el límite de todo el sistema para la caché de detección de vecinos.
Acción
Desde el modo operativo, ejecute el show system statistics icmp6
comando.
user@host> show system statistics icmp6 icmp6: 79 Calls to icmp_error 0 Errors not generated because old message was icmp error 0 Errors not generated because rate limitation Output histogram: 79 unreach 30 echo 163 multicast listener query 6 multicast listener report 940 neighbor solicitation 694184 neighbor advertisement 0 Messages with bad code fields 0 Messages < minimum length 0 Bad checksums 0 Messages with bad length Input histogram: 10 echo reply 6 multicast listener report 693975 neighbor solicitation Histogram of error messages to be generated: 0 No route 0 Administratively prohibited 0 Beyond scope 79 Address unreachable 0 Port unreachable 0 Time exceed transit 0 Time exceed reassembly 0 Erroneous header field 0 Unrecognized next header 0 Unrecognized option 0 Unknown 0 Message responses generated 0 Messages with too many ND options 100000 Max System ND nh cache limit 79840 Max Public ND nh cache limit 200 Max IRI ND nh cache limit 19960 Max Management intf ND nh cache limit 79840 Current Public ND nexthops present 4 Current IRI ND nexthops present 0 Current Management ND nexthops present 909266 Total ND nexthops creation failed as limit reached 909266 Public ND nexthops creation failed as public limit reached 0 IRI ND nexthops creation failed as iri limit reached 0 Management ND nexthops creation failed as mgt limit reached
Significado
El límite máximo de todo el sistema aplicado a las entradas de caché de detección vecina es 100000.
Management ND nexthops creation failed as mgt limit reached Indica el recuento de bajas de la interfaz de administración cuando se alcanza el límite de todo el sistema. Total ND nexthops creation failed as limit reached indica un error para las interfaces de instancia de enrutamiento de administración, públicas o internas, e Public ND nexthops creation failed as public limit reached indica el recuento de bajas para las interfaces públicas cuando se alcanza el límite de todo el sistema para el número de entradas.
Verificación local de la protección de caché de detección de vecinos
Propósito
Compruebe que el resultado refleja los límites de interfaz configurados.
Acción
Desde el modo operativo, ejecute el show interfaces ge-0/3/0
comando.
user@host> show interfaces ge-0/3/0 Logical interface ge-0/2/0.8 (Index 348) (SNMP ifIndex 690) Flags: Up SNMP-Traps 0x4000 VLAN-Tag [ 0x8100.8 ] Encapsulation: ENET2 Input packets : 181628 Output packets: 79872 Protocol inet6, MTU: 1500 Max nh cache: 100000, New hold nh limit: 100000, Curr nh cnt: 79840, Curr new hold cnt: 0, NH drop cnt: 0 Flags: Is-Primary Addresses, Flags: Is-Preferred Is-Primary Destination: 8001:1::/64, Local: 8001:1::1:1 Addresses, Flags: Is-Preferred Destination: fe80::/64, Local: fe80::56e0:3200:8c6:e0a4 Protocol multiservice, MTU: Unlimited
Significado
El número máximo de entradas totales y el número máximo de entradas para nuevas direcciones de salto siguiente sin resolver que se pueden adjuntar a la interfaz ge-0/3/0 es 100000.
NH drop cnt Hace referencia al número de solicitudes de detección de vecinos que no se han atendido porque se han alcanzado los límites máximos de tamaño de cola de la interfaz.