BGP-Routenauthentifizierung
Grundlegendes zur Routerauthentifizierung für BGP
Die Verwendung von Router- und Routenauthentifizierung und Routenintegrität verringert das Risiko, von einem Computer oder Router angegriffen zu werden, der so konfiguriert wurde, dass er falsche Routing-Informationen an einen anderen Router weitergibt, erheblich. Bei dieser Art von Angriff kann der angegriffene Router dazu verleitet werden, eine Routing-Schleife zu erstellen, oder die Routing-Tabelle des angegriffenen Routers kann stark vergrößert werden, wodurch die Leistung beeinträchtigt wird, oder Routing-Informationen können an einen Ort im Netzwerk umgeleitet werden, damit der Angreifer sie analysieren kann. Gefälschte Routenwerbung kann für ein Segment versendet werden. Diese Aktualisierungen können in die Routing-Tabellen benachbarter Router übernommen werden, es sei denn, es ist ein Authentifizierungsmechanismus vorhanden, um die Quelle der Routen zu überprüfen.
Die Router- und Routenauthentifizierung ermöglicht es Routern, Informationen nur dann auszutauschen, wenn sie anhand eines Kennworts (Schlüssels) nachweisen können, dass sie mit einer vertrauenswürdigen Quelle kommunizieren. Bei dieser Methode wird ein gehashter Schlüssel zusammen mit der Route an einen anderen Router gesendet. Der empfangende Router vergleicht den gesendeten Schlüssel mit seinem eigenen konfigurierten Schlüssel. Wenn sie identisch sind, akzeptiert es die Route. Durch die Verwendung eines Hashing-Algorithmus wird der Schlüssel nicht im Klartext über die Leitung gesendet. Stattdessen wird ein Hash anhand des konfigurierten Schlüssels berechnet. Die Routing-Aktualisierung wird zusammen mit dem Schlüssel als Eingabetext in die Hashing-Funktion verwendet. Dieser Hash wird zusammen mit der Routenaktualisierung an den empfangenden Router gesendet. Der empfangende Router vergleicht den empfangenen Hash mit einem Hash, den er bei der Routenaktualisierung generiert, indem er den darauf konfigurierten vorinstallierten Schlüssel verwendet. Wenn die beiden Hashes identisch sind, wird davon ausgegangen, dass die Route aus einer vertrauenswürdigen Quelle stammt. Der Schlüssel ist nur dem sendenden und dem empfangenden Router bekannt.
Um die Sicherheit weiter zu erhöhen, können Sie eine Reihe von Authentifizierungsschlüsseln (einen Schlüsselbund) konfigurieren. Jeder Schlüssel hat eine eindeutige Startzeit innerhalb des Schlüsselbunds. Mit der Schlüsselbundauthentifizierung können Sie die Kennwortinformationen regelmäßig ändern, ohne die Peering-Sitzungen zu unterbrechen. Diese Schlüsselbund-Authentifizierungsmethode wird als " hitless" bezeichnet, da die Schlüssel von einem Schlüssel zum nächsten übertragen werden, ohne Peering-Sitzungen zurückzusetzen oder das Routing-Protokoll zu unterbrechen.
Der sendende Peer verwendet die folgenden Regeln, um den aktiven Authentifizierungsschlüssel zu identifizieren:
Die Startzeit ist kleiner oder gleich der aktuellen Uhrzeit (d. h. nicht in der Zukunft).
Die Startzeit ist größer als die aller anderen Schlüssel in der Kette, deren Startzeit kleiner als die aktuelle Zeit ist (d. h. der aktuellen Zeit am nächsten liegt).
Der empfangende Peer bestimmt den Schlüssel, mit dem er sich authentifiziert, basierend auf der eingehenden Schlüssel-ID.
Der sendende Peer identifiziert den aktuellen Authentifizierungsschlüssel basierend auf einer konfigurierten Startzeit und generiert dann einen Hashwert mit dem aktuellen Schlüssel. Der sendende Peer fügt dann ein TCP-erweitertes Authentifizierungsoptionsobjekt in die BGP-Aktualisierungsnachricht ein. Das Objekt enthält eine Objekt-ID (die von IANA zugewiesen wird), die Objektlänge, den aktuellen Schlüssel und einen Hashwert.
Der empfangende Peer untersucht die eingehende TCP-erweiterte Authentifizierungsoption, sucht den empfangenen Authentifizierungsschlüssel und bestimmt, ob der Schlüssel basierend auf der Startzeit, der Systemzeit und dem Toleranzparameter akzeptabel ist. Wenn der Schlüssel akzeptiert wird, berechnet der empfangende Peer einen Hash und authentifiziert die Aktualisierungsnachricht.
Die erstmalige Anwendung eines Schlüsselbunds auf eine TCP-Sitzung führt dazu, dass die Sitzung zurückgesetzt wird. Sobald der Schlüsselbund angewendet wurde, führt das Hinzufügen oder Entfernen eines Kennworts aus dem Schlüsselbund jedoch nicht dazu, dass die TCP-Sitzung zurückgesetzt wird. Außerdem wird die TCP-Sitzung nicht zurückgesetzt, wenn der Schlüsselbund von einem Authentifizierungsalgorithmus zu einem anderen wechselt.
Siehe auch
TCP-Authentifizierung
In der Regel konfigurieren Sie die TCP-Authentifizierung auf den folgenden Hierarchieebenen:
-
[edit protocols bgp]
-
[edit protocols bgp group group-name]
-
[edit protocols bgp group group-name neighbor address]
TCP-Authentifizierung und Präfix-Subnetze
Junos-Geräte unterstützen die TCP-Authentifizierung bei BGP-Peers, die über zulässige Präfix-Subnetze erkannt werden, die in einer BGP-Gruppe konfiguriert sind.
Um die präfixbasierte Authentifizierung für TCP-AO oder TCP MD5 für BGP-Sitzungen zu konfigurieren, können Sie die Anweisung in den folgenden Hierarchien konfigurieren:allow (all | prefix-list)
-
[edit protocols bgp group group-name]
-
[edit protocols bgp group group-name dynamic-neighbor dyn-name]
Weitere Informationen zur TCP-Authentifizierung finden Sie unter TCP.Configure TCP Options
Beispiel: Konfigurieren der Routerauthentifizierung für BGP
Der gesamte BGP-Protokollaustausch kann authentifiziert werden, um sicherzustellen, dass nur vertrauenswürdige Routing-Geräte an AS-Routing-Updates (Autonomous System) teilnehmen. Standardmäßig ist die Authentifizierung deaktiviert.
Anforderungen
Bevor Sie beginnen:
Konfigurieren Sie die Routerschnittstellen.
Konfigurieren Sie ein Interior Gateway Protocol (IGP).
Überblick
Wenn Sie die Authentifizierung konfigurieren, erstellt der Algorithmus eine codierte Prüfsumme, die im übertragenen Paket enthalten ist. Das empfangende Routinggerät verwendet einen Authentifizierungsschlüssel (Kennwort), um die Prüfsumme des Pakets zu überprüfen.
Dieses Beispiel enthält die folgenden Anweisungen zum Konfigurieren und Anwenden des Schlüsselbunds:
key
– Ein Schlüsselbund kann mehrere Schlüssel haben. Jeder Schlüssel innerhalb eines Schlüsselbunds muss durch einen eindeutigen ganzzahligen Wert identifiziert werden. Der Bereich der gültigen Bezeichnerwerte liegt zwischen 0 und 63.Der Schlüssel kann bis zu 126 Zeichen lang sein. Zeichen können beliebige ASCII-Zeichenfolgen enthalten. Wenn Sie Leerzeichen einfügen, schließen Sie alle Zeichen in Anführungszeichen (" ") ein.
tolerance
—(Optional) Für jeden Schlüsselbund können Sie einen Toleranzwert für die Taktabweichung in Sekunden konfigurieren. Die Taktabweichungstoleranz gilt für den Empfänger, der Schlüssel für BGP-Updates akzeptiert. Der konfigurierbare Bereich beträgt 0 bis 999.999.999 Sekunden. Während des Toleranzzeitraums ist entweder das aktuelle oder das vorherige Kennwort zulässig.key-chain
—Für jeden Schlüsselbund müssen Sie einen Namen angeben. In diesem Beispiel wird ein Schlüsselbund definiert:bgp-auth
. Sie können mehrere Schlüsselbunde auf einem Routing-Gerät haben. Sie können beispielsweise einen Schlüsselbund für BGP, einen Schlüsselbund für OSPF und einen Schlüsselbund für LDP haben.secret
—Für jeden Schlüssel im Schlüsselbund müssen Sie ein geheimes Passwort festlegen. Dieses Passwort kann entweder verschlüsselt oder im Klartextformat in der Anweisung eingegeben werden.secret
Es wird immer in verschlüsseltem Format angezeigt.start-time
– Jeder Schlüssel muss eine Startzeit im UTC-Format angeben. Die Steuerung wird von einer Taste zur nächsten weitergegeben. Wenn eine konfigurierte Startzeit eintrifft (basierend auf der Uhr des Routing-Geräts), wird der Schlüssel mit dieser Startzeit aktiv. Die Startzeiten werden in der lokalen Zeitzone für ein Routing-Gerät angegeben und müssen innerhalb des Schlüsselbunds eindeutig sein.authentication-key-chain
– Ermöglicht das Anwenden eines Schlüsselbunds auf globaler BGP-Ebene für alle Peers, für eine Gruppe oder für einen Nachbarn. In diesem Beispiel wird der Schlüsselbund auf die Peers angewendet, die in der externen BGP-Gruppe (EBGP) mit dem Namen definiert sind.ext
authentication-algorithm
—Für jeden Schlüsselbund können Sie einen Hashing-Algorithmus angeben. Der Algorithmus kann AES-128, MD5 oder SHA-1 sein.Sie verknüpfen einen Schlüsselbund und einen Authentifizierungsalgorithmus mit einer benachbarten BGP-Sitzung.
In diesem Beispiel wird ein Schlüsselbund mit dem Namen .bgp-auth
Schlüssel 0 wird ab 2011-6-23.20:19:33 -0700 gesendet und akzeptiert und wird nicht mehr gesendet und akzeptiert, wenn der nächste Schlüssel im Schlüsselbund (Schlüssel 1) aktiv wird. Schlüssel 1 wird ein Jahr später am 2012-6-23.20:19:33 -0700 aktiv und wird nur dann gesendet und akzeptiert, wenn ein anderer Schlüssel mit einer Startzeit konfiguriert ist, die nach der Startzeit von Schlüssel 1 liegt. Eine Taktabweichungstoleranz von 30 Sekunden gilt für den Empfänger, der die Schlüssel akzeptiert. Während des Toleranzzeitraums ist entweder der aktuelle oder der vorherige Schlüssel akzeptabel. Bei den Schlüsseln handelt es sich um gemeinsam genutzte geheime Kennwörter. Dies bedeutet, dass die Nachbarn, die die authentifizierten Routing-Updates erhalten, dieselbe Authentifizierungsschlüsselbundkonfiguration haben müssen, einschließlich derselben Schlüssel (Kennwörter). Daher müssen Router R0 und Router R1 dieselbe Authentifizierungsschlüsselbundkonfiguration aufweisen, wenn sie als Peers konfiguriert sind. Dieses Beispiel zeigt die Konfiguration nur auf einem der Routing-Geräte.
Topologiediagramm
Abbildung 1 Zeigt die in diesem Beispiel verwendete Topologie.
Konfiguration
CLI-Schnellkonfiguration
Um dieses Beispiel schnell zu konfigurieren, kopieren Sie die folgenden Befehle, fügen Sie sie in eine Textdatei ein, entfernen Sie alle Zeilenumbrüche, ändern Sie alle Details, die für Ihre Netzwerkkonfiguration erforderlich sind, und kopieren Sie dann die Befehle und fügen Sie sie in die CLI auf Hierarchieebene ein.[edit]
set protocols bgp group ext type external set protocols bgp group ext peer-as 65530 set protocols bgp group ext neighbor 172.16.2.1 set routing-options autonomous-system 65533 set protocols bgp group ext authentication-key-chain bgp-auth set protocols bgp group ext authentication-algorithm md5 set security authentication-key-chains key-chain bgp-auth tolerance 30 set security authentication-key-chains key-chain bgp-auth key 0 secret this-is-the-secret-password set security authentication-key-chains key-chain bgp-auth key 0 start-time 2011-6-23.20:19:33-0700 set security authentication-key-chains key-chain bgp-auth key 1 secret this-is-another-secret-password set security authentication-key-chains key-chain bgp-auth key 1 start-time 2012-6-23.20:19:33-0700
Verfahren
Schritt-für-Schritt-Anleitung
Im folgenden Beispiel müssen Sie durch verschiedene Ebenen in der Konfigurationshierarchie navigieren. Weitere Informationen zum Navigieren in der CLI finden Sie unter Verwenden des CLI-Editors im Konfigurationsmodus im Junos OS CLI-Benutzerhandbuch.Verwenden des CLI-Editors im Konfigurationsmodushttps://www.juniper.net/documentation/en_US/junos/information-products/pathway-pages/junos-cli/junos-cli.html
So konfigurieren Sie Router R1 so, dass er Routenfilter von Gerät CE1 akzeptiert und die Filterung ausgehender Routen mithilfe der empfangenen Filter durchführt:
Konfigurieren Sie das lokale autonome System.
[edit routing-options] user@R1# set autonomous-system 65533
Konfigurieren Sie eine oder mehrere BGP-Gruppen.
[edit protocols bgp group ext] user@R1# set type external user@R1# set peer-as 65530 user@R1# set neighbor 172.16.2.1
Konfigurieren Sie die Authentifizierung mit mehreren Schlüsseln.
[edit security authentication-key-chains key-chain bgp-auth] user@R1# set key 0 secret this-is-the-secret-password user@R1# set key 0 start-time 2011-6-23.20:19:33-0700 user@R1# set key 1 secret this-is-another-secret-password user@R1# set key 1 start-time 2012-6-23.20:19:33-0700
Die Startzeit jedes Schlüssels muss innerhalb des Schlüsselbunds eindeutig sein.
Wenden Sie den Authentifizierungsschlüsselbund auf BGP an und legen Sie den Hashing-Algorithmus fest.
[edit protocols bgp group ext] user@R1# set authentication-key-chain bgp-auth user@R1# set authentication-algorithm md5
(Optional) Wenden Sie einen Toleranzwert für die Taktabweichung in Sekunden an.
[edit security authentication-key-chains key-chain bgp-auth] user@R1# set tolerance 30
Ergebnisse
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die Befehle , und eingeben.show protocols
show routing-options
show security
Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.
user@R1# show protocols bgp { group ext { type external; peer-as 65530; neighbor 172.16.2.1; authentication-key-chain bgp-auth; authentication-algorithm md5; } }
user@R1# show routing-options autonomous-system 65533;
user@R1# show security authentication-key-chains { key-chain bgp-auth { tolerance 30; key 0 { secret $ABC123$ABC123 start-time “2011-6-23.20:19:33 -0700”; } key 1 { secret $ABC123$ABC123 start-time “2012-6-23.20:19:33 -0700”; } } }
Wenn Sie mit der Konfiguration des Geräts fertig sind, rufen Sie den Konfigurationsmodus auf .commit
Wiederholen Sie den Vorgang für jedes BGP-fähige Gerät im Netzwerk und verwenden Sie dabei die entsprechenden Schnittstellennamen und -adressen für jedes BGP-fähige Gerät.
Überprüfung
Vergewissern Sie sich, dass die Konfiguration ordnungsgemäß funktioniert.
- Überprüfen der Authentifizierung für den Nachbarn
- Überprüfen, ob Autorisierungsnachrichten gesendet werden
- Überprüfen von Authentifizierungsfehlern
- Überprüfen der Funktion des Schlüsselbunds
Überprüfen der Authentifizierung für den Nachbarn
Zweck
Stellen Sie sicher, dass die Option in der Ausgabe des Befehls angezeigt wird.AutheKeyChain
show bgp neighbor
Was
Geben Sie im Betriebsmodus den Befehl ein.show bgp neighbor
user@R1> show bgp neighbor Peer: 172.16.2.1+179 AS 65530 Local: 172.16.2.2+1222 AS 65533 Type: External State: Established Flags: <Sync> Last State: OpenConfirm Last Event: RecvKeepAlive Last Error: None Export: [ direct-lo0 ] Options: <Preference PeerAS Refresh> Options: <AutheKeyChain> Authentication key is configured Authentication key chain: jni Holdtime: 90 Preference: 170 Number of flaps: 0 Peer ID: 172.16.2.1 Local ID: 10.255.124.35 Active Holdtime: 90 Keepalive Interval: 30 Peer index: 0 Local Interface: fe-0/0/1.0 NLRI advertised by peer: inet-unicast NLRI for this session: inet-unicast Peer supports Refresh capability (2) Table inet.0 Bit: 10000 RIB State: BGP restart is complete Send state: in sync Active prefixes: 2 Received prefixes: 2 Suppressed due to damping: 0 Advertised prefixes: 1 Last traffic (seconds): Received 2 Sent 2 Checked 2 Input messages: Total 21 Updates 2 Refreshes 0 Octets 477 Output messages: Total 22 Updates 1 Refreshes 0 Octets 471 Output Queue[0]: 0
Überprüfen, ob Autorisierungsnachrichten gesendet werden
Zweck
Vergewissern Sie sich, dass BGP über die erweiterte Autorisierungsoption verfügt.
Was
Geben Sie im Betriebsmodus den Befehl ein.monitor traffic interface fe-0/0/1
user@R1> monitor traffic interface fe-0/0/1 verbose output suppressed, use <detail> or <extensive> for full protocol decode Listening on fe-0/0/1, capture size 96 bytes 13:08:00.618402 In arp who-has 172.16.2.66 tell 172.16.2.69 13:08:02.408249 Out IP 172.16.2.2.1122 > 172.16.2.1.646: P 1889289217:1889289235(18) ack 2215740969 win 58486 <nop,nop,timestamp 167557 1465469,nop,Enhanced Auth keyid 0 diglen 12 digest: fe3366001f45767165f17037>: 13:08:02.418396 In IP 172.16.2.1.646 > 172.16.2.2.1122: P 1:19(18) ack 18 win 57100 <nop,nop,timestamp 1466460 167557,nop,Enhanced Auth keyid 0 diglen 12 digest: a18c31eda1b14b2900921675>: 13:08:02.518146 Out IP 172.16.2.2.1122 > 172.16.2.1.646: . ack 19 win 58468 <nop,nop,timestamp 167568 1466460,nop,Enhanced Auth keyid 0 diglen 12 digest: c3b6422eb6bd3fd9cf79742b> 13:08:28.199557 Out IP 172.16.2.2.nerv > 172.16.2.1.bgp: P 286842489:286842508(19) ack 931203976 win 57200 <nop,Enhanced Auth keyid 0 diglen 12 digest: fc0e42900a73736bcc07c1a4>: BGP, length: 19 13:08:28.209661 In IP 172.16.2.1.bgp > 172.16.2.2.nerv: P 1:20(19) ack 19 win 56835 <nop,Enhanced Auth keyid 0 diglen 12 digest: 0fc8578c489fabce63aeb2c3>: BGP, length: 19 13:08:28.309525 Out IP 172.16.2.2.nerv > 172.16.2.1.bgp: . ack 20 win 57181 <nop,Enhanced Auth keyid 0 diglen 12 digest: ef03f282fb2ece0039491df8> 13:08:32.439708 Out IP 172.16.2.2.1122 > 172.16.2.1.646: P 54:72(18) ack 55 win 58432 <nop,nop,timestamp 170560 1468472,nop,Enhanced Auth keyid 0 diglen 12 digest: 76e0cf926f348b726c631944>: 13:08:32.449795 In IP 172.16.2.1.646 > 172.16.2.2.1122: P 55:73(18) ack 72 win 57046 <nop,nop,timestamp 1469463 170560,nop,Enhanced Auth keyid 0 diglen 12 digest: dae3eec390d18a114431f4d8>: 13:08:32.549726 Out IP 172.16.2.2.1122 > 172.16.2.1.646: . ack 73 win 58414 <nop,nop,timestamp 170571 1469463,nop,Enhanced Auth keyid 0 diglen 12 digest: 851df771aee2ea7a43a0c46c> 13:08:33.719880 In arp who-has 172.16.2.66 tell 172.16.2.69 ^C 35 packets received by filter 0 packets dropped by kernel
Überprüfen von Authentifizierungsfehlern
Zweck
Überprüfen Sie die Anzahl der Pakete, die von TCP aufgrund von Authentifizierungsfehlern verworfen wurden.
Was
Geben Sie im Betriebsmodus den Befehl ein.show system statistics tcp | match auth
user@R1> show system statistics tcp | match auth 0 send packets dropped by TCP due to auth errors 58 rcv packets dropped by TCP due to auth errors
Überprüfen der Funktion des Schlüsselbunds
Zweck
Überprüfen Sie die Anzahl der Pakete, die von TCP aufgrund von Authentifizierungsfehlern verworfen wurden.
Was
Geben Sie im Betriebsmodus den Befehl ein.show security keychain detail
user@R1> show security keychain detail keychain Active-ID Next-ID Transition Tolerance Send Receive Send Receive bgp-auth 3 3 1 1 1d 23:58 30 Id 3, Algorithm hmac-md5, State send-receive, Option basic Start-time Wed Aug 11 16:28:00 2010, Mode send-receive Id 1, Algorithm hmac-md5, State inactive, Option basic Start-time Fri Aug 20 11:30:57 2010, Mode send-receive
Tabellarischer Änderungsverlauf
Die Unterstützung der Funktion hängt von der Plattform und der Version ab, die Sie benutzen. Verwenden Sie Feature Explorer, um festzustellen, ob eine Funktion auf Ihrer Plattform unterstützt wird.