Neighbor Discovery Cache Protection
RÉSUMÉ NDP Cache Protection vous permet de protéger le moteur de routage contre certains types d’attaques par déni de service (DoS) dans les scénarios de déploiement IPv6.
Vue d’ensemble de la protection du cache Neighbor Discovery
Les moteurs de routage peuvent être sensibles à certaines attaques par déni de service (DoS) dans les scénarios de déploiement IPv6. En général, les sous-réseaux IPv6 sont généralement très volumineux. Par exemple, un /64
sous-réseau peut avoir un grand nombre d’adresses non attribuées. Le plan de contrôle du moteur de routage effectue la résolution d’adresses pour les adresses inconnues. Un attaquant peut rapidement submerger le plan de contrôle du moteur de routage en générant des demandes de résolution pour cet espace d’adressage non attribué, ce qui entraîne un dépassement de cache. L’attaquant s’appuie à la fois sur le nombre de requêtes générées et sur la vitesse à laquelle les requêtes sont mises en file d’attente. De tels scénarios peuvent lier les ressources du routeur et empêcher le moteur de routage de répondre aux sollicitations valides des voisins et de maintenir les entrées de cache de voisins existantes, ce qui entraîne une attaque DoS pour les utilisateurs légitimes.
Les stratégies d’atténuation de ces attaques DoS sont les suivantes :
Filtrez l’espace d’adressage inutilisé.
Réduisez la taille des sous-réseaux.
Configurez des routes de rejet pour les sous-réseaux.
Appliquez des limites à la taille et au taux de résolution des entrées dans le cache de détection des voisins.
L’impact du cache de découverte des voisins peut être minimisé en limitant le nombre de voisins IPv6 et les nouvelles adresses non résolues du saut suivant qui peuvent être ajoutées au cache. Vous pouvez définir des limites par interface à l’aide des nd6-max-cache
déclarations de configuration et ou à l’aide nd6-new-hold-limit
de l’instruction de configuration à l’échelle du nd-system-cache-limit
système.
Pour les plates-formes de petite taille telles que ACX, EX22XX, EX3200, EX33XX et SRX, la valeur par défaut est de 20 000.
Pour les plates-formes de taille moyenne telles que EX4200, EX45XX, EX4300, EX62XX, QFX et MX, la valeur par défaut est de 75 000.
Pour les autres plates-formes, la valeur par défaut est de 100 000.
Configuration de la protection du cache Neighbor Discovery
Les moteurs de routage peuvent être sensibles à certains types d’attaques par déni de service (DoS) dans les scénarios de déploiement IPv6. En général, les sous-réseaux IPv6 sont très vastes ; par exemple, un /64
sous-réseau peut avoir un grand nombre d’adresses non attribuées. Le plan de contrôle du moteur de routage effectue la résolution d’adresses pour les adresses inconnues. Un attaquant peut rapidement submerger le plan de contrôle du moteur de routage en générant des demandes de résolution pour cet espace d’adressage non attribué, ce qui entraîne un dépassement de cache. Un attaquant s’appuie à la fois sur le nombre de requêtes générées et sur la vitesse à laquelle les requêtes sont mises en file d’attente.
Le processus de détection des voisins est la partie du plan de contrôle qui implémente le protocole Neighbor Discovery Protocol. Il est responsable de la résolution des adresses et de la maintenance des entrées dans le cache voisin. L’un des moyens d’atténuer les attaques DoS est d’appliquer des limites à la taille du cache de découverte des voisins et au taux de résolution des nouvelles entrées de sauts suivants, et en hiérarchisant certaines catégories de trafic voisin. Vous pouvez configurer les limites du cache de découverte des voisins par interface et à l’échelle du système.
Avant de commencer, assurez-vous que vous exécutez Junos OS version 15.1 ou ultérieure.
Les limites locales s’appliquent aux interfaces individuelles et sont définies pour les entrées résolues et non résolues dans la file d’attente de détection des voisins, tandis que les limites globales s’appliquent à l’ensemble du système.
Pour configurer la protection du cache de découverte des voisins sur une interface :
Pour vérifier la configuration, exécutez la show interfaces interface-name
commande opérationnelle.
Pour configurer la protection du cache de découverte des voisins à l’échelle du système :
Configurez la limite à l’échelle du système pour le cache de découverte des voisins.
[edit] user@host# set system nd-system-cache-limit limit
Pour vérifier les limites configurées à l’échelle du système, exécutez la show system statistics icmp6
commande opérationnelle.
Pour les plates-formes de petite taille telles que ACX, EX22XX, EX3200, EX33XX et SRX, la valeur par défaut est de 20 000.
Pour les plates-formes de taille moyenne telles que EX4200, EX45XX, EX4300, EX62XX, QFX et MX, la valeur par défaut est de 75 000.
Pour les autres plates-formes, la valeur par défaut est de 100 000.
Exemple : configuration de la protection du cache Neighbor Discovery pour prévenir les attaques par déni de service
Cet exemple montre comment configurer une limite au nombre d’entrées de voisins IPv6 pouvant être ajoutées à la détection des voisins. L’application de limites au nombre d’entrées dans le cache atténue les attaques par déni de service (DoS). La fonctionnalité de cache de découverte des voisins prend en charge deux types de limites :
Local : les limites locales sont configurées par interface et sont définies pour les entrées résolues et non résolues dans le cache de découverte des voisins.
Global : les limites globales s’appliquent à l’ensemble du système. Une limite globale est définie séparément pour les interfaces publiques et les interfaces de gestion, par exemple fxp0. L’interface de gestion a une seule limite globale et aucune limite locale. La limite globale applique un plafond d’entrées à l’échelle du système pour le cache de découverte voisin, y compris pour l’interface de bouclage pour l’instance de routage interne, ainsi que pour les interfaces de gestion et les interfaces publiques.
Exigences
Cet exemple nécessite des routeurs MX Series exécutant Junos OS version 15.1 ou ultérieure.
Aperçu
Les moteurs de routage peuvent être sensibles à certains types d’attaques DoS dans les scénarios de déploiement IPv6. En général, les sous-réseaux IPv6 sont généralement très volumineux. Par exemple, un /64
sous-réseau peut avoir un grand nombre d’adresses non attribuées, qui peuvent être utilisées pour effectuer des attaques DoS. Le plan de contrôle du moteur de routage effectue la résolution d’adresses pour les adresses inconnues. Un attaquant peut rapidement submerger le plan de contrôle du moteur de routage en générant des demandes de résolution pour cet espace d’adresse non attribué et en débordant la file d’attente. L’attaquant s’appuie à la fois sur le nombre de requêtes générées et sur la vitesse à laquelle les requêtes sont mises en file d’attente.
Le processus de détection des voisins est la partie du plan de contrôle qui implémente le protocole Neighbor Discovery Protocol. Il est responsable de la résolution des adresses et de la maintenance du cache voisin. L’un des moyens d’atténuer les attaques DoS consiste à appliquer des limites aux limites de file d’attente de détection des voisins, ce qui peut être fait en limitant la taille de la file d’attente et le taux de résolution, et en hiérarchisant certaines catégories de trafic de découverte de voisins.
Configuration
Pour configurer la protection du cache de détection des voisins, effectuez les tâches suivantes :
Configuration rapide cli
Pour configurer rapidement cet exemple, copiez les commandes suivantes, collez-les dans un fichier texte, supprimez les sauts de ligne, modifiez tous les détails nécessaires pour correspondre à la configuration de votre réseau, puis copiez-collez les commandes dans la CLI au niveau de la [edit]
hiérarchie, puis entrez commit
à partir du mode de configuration.
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
Vous pouvez également configurer une limite à l’échelle du système au nombre d’entrées de voisins IPv6 dans le cache de découverte des voisins. Cette limite inclut également l’interface de bouclage, les interfaces de gestion et les interfaces publiques.
set system nd-system-cache-limit 100
La distribution des limites de l’instruction nd-system-cache-limit
pour différents types d’interface est effectuée en fonction de certains pourcentages fixes. Lorsque nd-system-cache-limit
la limite de cache de découverte des voisins de l’interface de routage interne est Y définie (Xpar défaut est de 200), alors :
Limite de cache publique maximale, Z = 80 % de (X- Y)
Limite maximale de cache de l’interface de gestion (par exemple, fxp0), M = 20 % de (X-Y)
Configuration de la protection du cache Neighbor Discovery
Procédure étape par étape
Dans l’exemple suivant, vous devez parcourir différents niveaux de la hiérarchie de configuration. Pour plus d’informations sur la navigation sur l’interface cli, consultez Utilisation de l’éditeur CLI en mode de configuration dans le guide de l’utilisateur CLI.
Pour configurer la protection du cache de découverte des voisins par interface :
Configurez le
nd6-max-cache
etnd6-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
Résultats
Pour confirmer la protection du cache de découverte des voisins localement, saisissez show interfaces ge-0/3/0
à partir du mode de configuration. Si la sortie n’affiche pas la configuration prévue, répétez les instructions de cet exemple pour corriger la configuration.
[edit] user@host# show interfaces ge-0/3/0 unit 5{ family inet6 { nd6-max-cache 100; nd6-new-hold-limit 100; } }
Vérification
Vérifiez que la configuration fonctionne correctement.
- Vérifier la protection du cache de découverte des voisins à l’échelle mondiale
- Vérifier localement la protection du cache de découverte des voisins
Vérifier la protection du cache de découverte des voisins à l’échelle mondiale
But
Vérifiez que la sortie reflète la limite à l’échelle du système pour le cache de découverte des voisins.
Action
À partir du mode opérationnel, exécutez la show system statistics icmp6
commande.
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
Sens
La limite à l’échelle du système appliquée aux entrées du cache de découverte des voisins est 100000.
Management ND nexthops creation failed as mgt limit reached indique le nombre de chutes pour l’interface de gestion lorsque la limite à l’échelle du système est atteinte. Total ND nexthops creation failed as limit reached indique une défaillance pour les interfaces d’instance de gestion, publiques ou de routage interne, et Public ND nexthops creation failed as public limit reached indique le nombre de chutes pour les interfaces publiques lorsque la limite du nombre d’entrées à l’échelle du système est atteinte.
Vérifier localement la protection du cache de découverte des voisins
But
Vérifiez que la sortie reflète les limites de l’interface configurées.
Action
À partir du mode opérationnel, exécutez la show interfaces ge-0/3/0
commande.
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
Sens
Le nombre maximal d’entrées et le nombre maximal d’entrées pour les nouvelles adresses de saut suivant non résolues pouvant être rattachées à l’interface ge-0/3/0 est 100000.
NH drop cnt fait référence au nombre de requêtes de détection de voisins qui n’ont pas été traitées parce que les limites de taille de file d’attente maximales de l’interface ont été atteintes.