Protection du cache de découverte voisine
La protection de cache NDP 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 ont tendance à être 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’adresse 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 affecté, ce qui entraîne un débordement du 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 immobiliser les ressources du routeur et empêcher le moteur de routage de répondre aux sollicitations de voisinage valides et de conserver les entrées de cache de voisinage existantes, ce qui entraîne une attaque par déni de service 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 les routes d’abandon pour les sous-réseaux.
Appliquez des limites à la taille et au taux de résolution des entrées dans le cache de découverte voisin.
L’impact du cache de découverte des voisins peut être réduit en limitant le nombre de voisins IPv6 et de nouvelles adresses de saut suivant non résolues pouvant être ajoutées au cache. Vous pouvez définir des limites par interface à l’aide des instructions de nd6-max-cache configuration et nd6-new-hold-limit ou à l’échelle du système à l’aide de l’instruction de nd-system-cache-limit configuration.
Pour les plates-formes de petite taille telles que ACX, EX22XX, EX3200, EX33XX et SRX, la valeur par défaut est 20 000.
Pour les plates-formes de taille moyenne telles que EX4200, EX45XX, EX4300, EX62XX, QFX et MX, la valeur par défaut est 75 000.
Pour les autres plates-formes, la valeur par défaut est 100 000.
Configuration de la protection du cache Neighbor Discovery
Les moteurs de routage peuvent être vulnérables à 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 ont tendance à être très volumineux. Par exemple, un /64 sous-réseau peut avoir un nombre élevé d’adresses non attribuées. Le plan de contrôle du moteur de routage effectue la résolution d’adresse 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 affecté, ce qui entraîne un débordement du 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écouverte de voisinage est la partie du plan de contrôle qui implémente le protocole de découverte de voisinage. Il est responsable de la résolution des adresses et de la maintenance des entrées dans le cache voisin. Une façon d’atténuer les attaques par déni de service consiste à appliquer des limites à la taille du cache de découverte voisin et au taux de résolution des nouvelles entrées de saut suivant, et à donner la priorité à certaines catégories de trafic de découverte de voisinage. Vous pouvez configurer des limites au cache de découverte de voisinage par interface et à l’échelle du système.
Avant de commencer, assurez-vous que vous utilisez 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écouverte des voisins, tandis que les limites globales s’appliquent à l’ensemble du système.
Pour configurer la protection du cache de découverte de voisinage 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 de voisinage à 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 20 000.
Pour les plates-formes de taille moyenne telles que EX4200, EX45XX, EX4300, EX62XX, QFX et MX, la valeur par défaut est 75 000.
Pour les autres plates-formes, la valeur par défaut est 100 000.
Exemple : Configuration de la protection du cache Neighbor Discovery pour empêcher les attaques par déni de service
Cet exemple montre comment configurer une limite au nombre d’entrées de voisinage IPv6 qui peuvent être ajoutées à la découverte de voisinage. Appliquer des 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 voisine prend en charge deux types de limites :
Local (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 (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 n’a qu’une seule limite globale et aucune limite locale. La limite globale applique une limite à l’échelle du système sur les entrées 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 vulnérables à certains types d’attaques DoS dans les scénarios de déploiement IPv6. En général, les sous-réseaux IPv6 ont tendance à être 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’adresse 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é et faire déborder 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écouverte de voisinage est la partie du plan de contrôle qui implémente le protocole de découverte de voisinage. Il est responsable de la résolution des adresses et de la maintenance du cache voisin. Une façon d’atténuer les attaques par déni de service consiste à appliquer des limites aux limites de la file d’attente de découverte voisine, 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 voisine.
Configuration
Pour configurer la protection du cache de découverte de voisinage, effectuez les tâches suivantes :
Configuration rapide de la 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 qu’ils correspondent à votre configuration réseau, copiez et collez les commandes dans l’interface de ligne de commande au niveau de la [edit] hiérarchie, puis passez commit en 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 voisinage 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 les différents types d’interfaces est effectuée selon certains pourcentages fixes. Lorsque nd-system-cache-limit est défini comme X et que la limite du cache de découverte de voisin de l’interface de routage interne est (la valeur par défaut est Y 200), alors :
Limite de cache maximale publique, 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
L’exemple suivant vous oblige à naviguer à différents niveaux dans la hiérarchie de configuration. Pour plus d’informations sur la navigation dans l’interface de ligne de commande, reportez-vous à la section Utilisation de l’éditeur CLI en mode de configuration dans le Guide de l’utilisateur de l’interface de ligne de commande.
Pour configurer la protection du cache de découverte de voisinage par interface :
Configurez les et
nd6-new-hold-limit.nd6-max-cache[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 localement la protection du cache de découverte de voisinage, passez show interfaces ge-0/3/0 en 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érification globale de la protection du cache Neighbor Discovery
- Vérification locale de la protection du cache Neighbor Discovery
Vérification globale de la protection du cache Neighbor Discovery
But
Vérifiez que la sortie reflète la limite à l’échelle du système pour le cache de découverte du voisin.
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
Signification
La limite à l’échelle du système appliquée aux entrées du cache de découverte voisine est 100000.
Management ND nexthops creation failed as mgt limit reached Indique le nombre d’abandons pour l’interface de gestion lorsque la limite à l’échelle du système est atteinte. Total ND nexthops creation failed as limit reached indique l’échec des interfaces de gestion, publiques ou d’instance de routage interne, et Public ND nexthops creation failed as public limit reached indique le nombre d’abandons pour les interfaces publiques lorsque la limite du nombre d’entrées à l’échelle du système est atteinte.
Vérification locale de la protection du cache Neighbor Discovery
But
Vérifiez que la sortie reflète les limites de l’interface configurée.
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
Signification
Le nombre maximal d’entrées totales et le nombre maximal d’entrées pour les nouvelles adresses de saut suivant non résolues qui peuvent être attachées à l’interface ge-0/3/0 est 100000.
NH drop cnt fait référence au nombre de demandes de découverte de voisinage qui ne sont pas traitées parce que les limites de taille maximale de file d’attente de l’interface ont été atteintes.