Neighbor Discovery Cache-Schutz
ZUSAMMENFASSUNG Mit dem NDP-Cache-Schutz können Sie die Routing-Engine vor bestimmten Arten von Denial-of-Service-Angriffen (DoS) in IPv6-Bereitstellungsszenarien schützen.
Neighbor Discovery Cache Protection – Übersicht
Routing-Engines können in IPv6-Bereitstellungsszenarien anfällig für bestimmte Denial-of-Service-Angriffe (DoS) sein. IPv6-Subnets sind im Allgemeinen tendenziell sehr groß– zum Beispiel kann ein /64
Subnetz eine hohe Anzahl nicht zugewiesener Adressen haben. Die Steuerungsebene der Routing-Engine führt die Adressauflösung für unbekannte Adressen aus. Ein Angreifer kann schnell die Steuerungsebene der Routing-Engine überwältigen, indem er Lösungsanforderungen für diesen nicht zugewiesenen Adressraum generiert, was zu einem Cache-Überlauf führt. Der Angreifer verlässt sich sowohl auf die Anzahl der generierten Anforderungen als auch auf die Geschwindigkeit, mit der Anfragen in die Warteschlangen gestellt werden. Solche Szenarien können Routerressourcen binden und die Routing-Engine daran hindern, gültige Nachbarschaftsanfragen zu beantworten und vorhandene Neighbor-Cache-Einträge aufrechtzuerhalten, was zu einem DoS-Angriff für legitime Benutzer führt.
Die Strategien zur Abwehr solcher DoS-Angriffe sind wie folgt:
Filtern Sie ungenutzten Adressraum.
Minimieren Sie die Größe von Subnetzen.
Konfigurieren Sie Verwerfensrouten für Subnetzen.
Erzwingen Sie Beschränkungen der Größe und Auflösungsrate für Einträge im Neighbor Discovery-Cache.
Die Auswirkungen auf den Cache der Neighbor Discovery können minimiert werden, indem die Anzahl der IPv6-Nachbarn und neuer nicht gelöster Next-Hop-Adressen eingeschränkt wird, die dem Cache hinzugefügt werden können. Sie können Grenzwerte pro Schnittstelle festlegen, indem Sie die nd6-max-cache
Konfigurationsanweisungen und die nd6-new-hold-limit
Konfigurationsanweisungen verwenden oder systemweit mithilfe der nd-system-cache-limit
Konfigurationsanweisungen.
Für kleine Plattformen wie ACX, EX22XX, EX3200, EX33XX und SRX ist der Standard 20.000.
Für mittelgroße Plattformen wie EX4200, EX45XX, EX4300, EX62XX, QFX und MX ist der Standard 75.000.
Für andere Plattformen ist der Standard 100.000.
Konfigurieren des Neighbor Discovery Cache-Schutzes
Routing-Engines können in IPv6-Bereitstellungsszenarien anfällig für bestimmte Arten von Denial-of-Service-Angriffen (DoS) sein. IPv6-Subnets sind im Allgemeinen meist sehr groß; zum Beispiel kann ein /64
Subnetz eine hohe Anzahl nicht zugewiesener Adressen haben. Die Steuerungsebene der Routing-Engine führt die Adressauflösung für unbekannte Adressen aus. Ein Angreifer kann schnell die Steuerungsebene der Routing-Engine überwältigen, indem er Lösungsanforderungen für diesen nicht zugewiesenen Adressraum generiert, was zu einem Cache-Überlauf führt. Ein Angreifer verlässt sich sowohl auf die Anzahl der generierten Anforderungen als auch auf die Geschwindigkeit, mit der Anfragen in die Warteschlangen gestellt werden.
Der Neighbor Discovery-Prozess ist der Teil der Steuerungsebene, der das Neighbor Discovery Protocol implementiert. Er ist für die Adressauflösung und die Pflege der Einträge im Nachbarn-Cache verantwortlich. Eine Möglichkeit, doS-Angriffe abzuwehren, besteht darin, die Größe des Neighbor Discovery-Caches und die Auflösungsrate neuer Next-Hop-Einträge zu begrenzen und bestimmte Kategorien von Neighbor Discovery-Datenverkehr zu priorisieren. Sie können Grenzen für den Neighbor Discovery-Cache pro Schnittstelle und systemweit konfigurieren.
Stellen Sie vor dem Start sicher, dass Sie Junos OS Version 15.1 oder höher ausführen.
Lokale Grenzwerte gelten für einzelne Schnittstellen und werden für aufgelöste und nicht gelöste Einträge in der Neighbor Discovery-Warteschlange definiert, während globale Grenzen systemweit gelten.
So konfigurieren Sie den Cache-Schutz für die Neighbor Discovery auf einer Schnittstelle:
Führen Sie den Betriebsbefehl aus, um die show interfaces interface-name
Konfiguration zu überprüfen.
So konfigurieren Sie den Cache-Schutz für die Nachbarnerkennung systemweit:
Konfigurieren Sie die systemweite Begrenzung für den Neighbor Discovery-Cache.
[edit] user@host# set system nd-system-cache-limit limit
Führen Sie den Betriebsbefehl aus, um die show system statistics icmp6
konfigurierten systemweiten Grenzwerte zu überprüfen.
Für kleine Plattformen wie ACX, EX22XX, EX3200, EX33XX und SRX ist der Standard 20.000.
Für mittelgroße Plattformen wie EX4200, EX45XX, EX4300, EX62XX, QFX und MX ist der Standard 75.000.
Für andere Plattformen ist der Standard 100.000.
Beispiel: Konfigurieren des Neighbor Discovery Cache-Schutzes zur Verhinderung von Denial-of-Service-Angriffen
Dieses Beispiel zeigt, wie Sie eine Begrenzung auf die Anzahl der IPv6-Nachbarneinträge konfigurieren, die zur Neighbor Discovery hinzugefügt werden können. Durch die Durchsetzung von Beschränkungen für die Anzahl der Einträge im Cache werden DoS-Angriffe (Denial of Service) abgewehrt. Die Neighbor Discovery-Cache-Funktion unterstützt zwei Arten von Einschränkungen:
Lokal: Lokale Grenzwerte werden pro Schnittstelle konfiguriert und für aufgelöste und nicht gelöste Einträge im Neighbor Discovery-Cache definiert.
Global: Globale Grenzen gelten systemweit. Ein globales Limit wird weiter separat für die öffentlichen Schnittstellen und Verwaltungsschnittstellen definiert, z. B. fxp0. Die Verwaltungsschnittstelle hat eine einzige globale Grenze und keine lokale Begrenzung. Die globale Begrenzung erzwingt eine systemweite Obergrenze für Einträge für den Neighbor Discovery-Cache, einschließlich für die Loopback-Schnittstelle für die interne Routing-Instanz, sowie für Verwaltungsschnittstellen und die öffentlichen Schnittstellen.
Anforderungen
In diesem Beispiel sind Router der MX-Serie erforderlich, auf denen Junos OS Version 15.1 oder höher ausgeführt wird.
Übersicht
Routing-Engines können in IPv6-Bereitstellungsszenarien anfällig für bestimmte Arten von DoS-Angriffen sein. IPv6-Subnets im Allgemeinen sind im Allgemeinen sehr groß– beispielsweise kann ein /64
Subnetz eine hohe Anzahl nicht zugewiesener Adressen haben, die für die Durchführung von DoS-Angriffen verwendet werden können. Die Steuerungsebene der Routing-Engine führt die Adressauflösung für unbekannte Adressen aus. Ein Angreifer kann schnell die Steuerungsebene der Routing-Engine überwältigen, indem er Lösungsanforderungen für diesen nicht zugewiesenen Adressraum generiert und die Warteschlange überläuft. Der Angreifer verlässt sich sowohl auf die Anzahl der generierten Anforderungen als auch auf die Geschwindigkeit, mit der Anfragen in die Warteschlangen gestellt werden.
Der Neighbor Discovery-Prozess ist der Teil der Steuerungsebene, der das Neighbor Discovery Protocol implementiert. Er ist für die Adressauflösung und die Wartung des Nachbarn-Cache verantwortlich. Eine Möglichkeit, DoS-Angriffe abzuwehren, besteht darin, Einschränkungen der Warteschlangenbeschränkungen für die Neighbor Discovery durchzusetzen, was durch die Einschränkung der Warteschlangengröße und der Auflösungsrate sowie durch die Priorisierung bestimmter Kategorien von Neighbor Discovery-Datenverkehr erreicht werden kann.
Konfiguration
Führen Sie die folgenden Aufgaben aus, um den Cache-Schutz für die Neighbor Discovery zu konfigurieren:
CLI-Schnellkonfiguration
Um dieses Beispiel schnell zu konfigurieren, kopieren Sie die folgenden Befehle, fügen sie in eine Textdatei ein, entfernen Sie alle Zeilenumbrüche, ändern alle erforderlichen Details, um mit Ihrer Netzwerkkonfiguration zu übereinstimmen, kopieren Sie die Befehle, fügen Sie sie auf Hierarchieebene in die [edit]
CLI ein, und geben Sie commit
dann aus dem Konfigurationsmodus ein.
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
Sie können auch eine systemweite Begrenzung auf die Anzahl der IPv6-Nachbarneinträge im Neighbor Discovery-Cache konfigurieren. Diese Begrenzung umfasst auch die Loopback-Schnittstelle, Verwaltungsschnittstellen und die öffentlichen Schnittstellen.
set system nd-system-cache-limit 100
Die Begrenzungsverteilung aus der nd-system-cache-limit
Anweisung für verschiedene Schnittstellentypen wird nach bestimmten festen Prozentsätzen durchgeführt. Bei nd-system-cache-limit
der Definition als X und die Begrenzung der internen Routing-Schnittstelle für die Neighbor Discovery ist Y (Standard ist 200), dann:
Maximale Öffentliche Cache-Begrenzung, Z = 80 % von (X- Y)
Maximale Cache-Begrenzung der Verwaltungsschnittstelle (z. B. fxp0), M = 20 % von (X-Y)
Konfigurieren des Neighbor Discovery Cache-Schutzes
Schritt-für-Schritt-Verfahren
Im folgenden Beispiel müssen Sie auf verschiedenen Ebenen in der Konfigurationshierarchie navigieren. Informationen zum Navigieren in der CLI finden Sie unter Verwenden des CLI-Editors im Konfigurationsmodus im CLI-Benutzerhandbuch.
So konfigurieren Sie den Cache-Schutz der Neighbor Discovery pro Schnittstelle:
Konfigurieren Sie die
nd6-max-cache
undnd6-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
Ergebnisse
Um den Cache-Schutz der Nachbarnerkennung lokal zu bestätigen, geben Sie im Konfigurationsmodus ein show interfaces ge-0/3/0
. Wenn die gewünschte Konfiguration in der Ausgabe nicht angezeigt wird, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.
[edit] user@host# show interfaces ge-0/3/0 unit 5{ family inet6 { nd6-max-cache 100; nd6-new-hold-limit 100; } }
Überprüfung
Bestätigen Sie, dass die Konfiguration ordnungsgemäß funktioniert.
- Globale Überprüfung des Cache-Schutzes von Neighbor Discovery
- Lokale Überprüfung des Cache-Schutzes der Neighbor Discovery
Globale Überprüfung des Cache-Schutzes von Neighbor Discovery
Zweck
Stellen Sie sicher, dass die Ausgabe den systemweiten Limit für den Neighbor Discovery-Cache widerspiegelt.
Aktion
Führen Sie den Befehl im show system statistics icmp6
Betriebsmodus aus.
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
Bedeutung
Die systemweite Obergrenze für die Cache-Einträge der Nachbarnerkennung ist 100000.
Management ND nexthops creation failed as mgt limit reached gibt die Drop-Anzahl der Verwaltungsschnittstelle an, wenn die systemweite Grenze erreicht wird. Total ND nexthops creation failed as limit reached zeigt Fehler für Verwaltungs-, öffentliche oder interne Routing-Instanzschnittstellen an und Public ND nexthops creation failed as public limit reached gibt die Drop-Anzahl für öffentliche Schnittstellen an, wenn die systemweite Begrenzung für die Anzahl der Einträge erreicht wird.
Lokale Überprüfung des Cache-Schutzes der Neighbor Discovery
Zweck
Stellen Sie sicher, dass die Ausgabe die konfigurierten Schnittstellengrenzen widerspiegelt.
Aktion
Führen Sie den Befehl im show interfaces ge-0/3/0
Betriebsmodus aus.
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
Bedeutung
Die maximale Anzahl der Gesamteinträge und die maximale Anzahl von Einträgen für neue, nicht gelöste Next-Hop-Adressen, die an die Schnittstelle ge-0/3/0 angefügt werden können, ist 100000.
NH drop cnt bezieht sich auf die Anzahl der Neighbor Discovery-Anforderungen, die nicht bedient wurden, weil die maximale Warteschlangengröße der Schnittstelle erreicht wurde.