Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

TCP-Zugriffsbeschränkung für BGP

Grundlegendes zu den Sicherheitsoptionen für BGP mit TCP

Unter den Routing-Protokollen ist BGP die einzige Lösung, die TCP als Transportprotokoll verwendet. BGP-Peers werden durch manuelle Konfiguration zwischen Routing-Geräten eingerichtet, um eine TCP-Sitzung an Port 179 zu erstellen. Ein BGP-fähiges Gerät sendet in regelmäßigen Abständen Keepalive-Nachrichten, um die Verbindung aufrechtzuerhalten.

Im Laufe der Zeit hat sich BGP zum dominierenden Interdomain-Routing-Protokoll im Internet entwickelt. Es gibt jedoch nur begrenzte Garantien für Stabilität und Sicherheit. Bei der Konfiguration von Sicherheitsoptionen für BGP müssen geeignete Sicherheitsmaßnahmen mit akzeptablen Kosten abgewogen werden. Keine Methode hat sich als überlegen gegenüber anderen Methoden herausgestellt. Jeder Netzwerkadministrator muss Sicherheitsmaßnahmen konfigurieren, die den Anforderungen des verwendeten Netzwerks entsprechen.

Ausführliche Informationen zu den Sicherheitsproblemen im Zusammenhang mit der Verwendung von TCP als Transportprotokoll durch BGP finden Sie unter RFC 4272, BGP Security Vulnerabilities Analysis.

Beispiel: Konfigurieren eines Filters zum Blockieren des TCP-Zugriffs auf einen Port mit Ausnahme der angegebenen BGP-Peers

In diesem Beispiel wird gezeigt, wie ein standardmäßiger zustandsloser Firewallfilter konfiguriert wird, der alle TCP-Verbindungsversuche an Port 179 von allen Anforderern mit Ausnahme der angegebenen BGP-Peers blockiert.

Anforderungen

Über die Geräteinitialisierung hinaus ist keine spezielle Konfiguration erforderlich, bevor Sie dieses Beispiel konfigurieren.

Überblick

In diesem Beispiel erstellen Sie einen zustandslosen Firewallfilter, der alle TCP-Verbindungsversuche über Port 179 von allen Anforderern mit Ausnahme der angegebenen BGP-Peers blockiert.

Der zustandslose Firewall-Filter gleicht alle Pakete von den direkt verbundenen Schnittstellen auf Gerät A und Gerät B mit der Zielportnummer 179 ab.filter_bgp179

Topologie

Abbildung 1 Zeigt die in diesem Beispiel verwendete Topologie. Gerät C versucht, eine TCP-Verbindung zu Gerät E herzustellen. Gerät E blockiert den Verbindungsversuch. Dieses Beispiel zeigt die Konfiguration auf Gerät E.

Abbildung 1: Typisches Netzwerk mit BGP-Peer-SitzungenTypisches Netzwerk mit BGP-Peer-Sitzungen

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]

Gerät C

Gerät E

Konfigurieren von Gerät E

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 Gerät E mit einem zustandslosen Firewallfilter, der alle TCP-Verbindungsversuche auf Port 179 von allen Anforderern mit Ausnahme der angegebenen BGP-Peers blockiert:

  1. Konfigurieren Sie die Schnittstellen.

  2. Konfigurieren Sie BGP.

  3. Konfigurieren Sie die Nummer des autonomen Systems.

  4. Definieren Sie den Filterbegriff, der TCP-Verbindungsversuche über Port 179 von den angegebenen BGP-Peers akzeptiert.

  5. Definieren Sie den anderen Filterbegriff, um Pakete aus anderen Quellen abzulehnen.

  6. Wenden Sie den Firewall-Filter auf die Loopback-Schnittstelle an.

Ergebnisse

Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die Befehle , , und eingeben.show firewallshow interfacesshow protocolsshow routing-options Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.

Wenn Sie mit der Konfiguration des Geräts fertig sind, rufen Sie den Konfigurationsmodus auf .commit

Überprüfung

Vergewissern Sie sich, dass die Konfiguration ordnungsgemäß funktioniert.

Überprüfen, ob der Filter konfiguriert ist

Zweck

Stellen Sie sicher, dass der Filter in der Ausgabe des Befehls aufgeführt ist.show firewall filter

Was

Überprüfen der TCP-Verbindungen

Zweck

Überprüfen Sie die TCP-Verbindungen.

Was

Führen Sie den Befehl im Betriebsmodus auf Gerät C und Gerät E aus.show system connections extensive

Die Ausgabe auf Gerät C zeigt den Versuch, eine TCP-Verbindung herzustellen. Die Ausgabe auf Gerät E zeigt, dass Verbindungen nur mit Gerät A und Gerät B hergestellt werden.

Überwachen des Datenverkehrs auf den Schnittstellen

Zweck

Verwenden Sie den Befehl, um den Datenverkehr auf einer Schnittstelle, die eine TCP-Verbindung herstellt, mit dem Datenverkehr auf einer Schnittstelle zu vergleichen, die keine TCP-Verbindung herstellt.monitor traffic

Was

Führen Sie den Befehl im Betriebsmodus auf der Schnittstelle von Gerät E zu Gerät B und auf der Schnittstelle von Gerät E zu Gerät C aus. In der folgenden Beispielausgabe wird überprüft, ob im ersten Beispiel Acknowledgment ()-Nachrichten empfangen werden.monitor trafficack Im zweiten Beispiel werden keine Nachrichten empfangen.ack

Beispiel: Konfigurieren eines Filters zur Beschränkung des TCP-Zugriffs auf einen Port basierend auf einer Präfixliste

In diesem Beispiel wird gezeigt, wie ein standardmäßiger zustandsloser Firewallfilter konfiguriert wird, der bestimmten TCP- und ICMP-Datenverkehr (Internet Control Message Protocol) einschränkt, der für die Routing-Engine bestimmt ist, indem eine Liste von Präfixquellen angegeben wird, die zulässige BGP-Peers enthalten.

Anforderungen

Vor der Konfiguration dieses Beispiels ist keine spezielle Konfiguration erforderlich, die über die Geräteinitialisierung hinausgeht.

Überblick

In diesem Beispiel erstellen Sie einen zustandslosen Firewallfilter, der alle TCP-Verbindungsversuche über Port 179 von allen Anforderern blockiert, mit Ausnahme von BGP-Peers mit einem angegebenen Präfix.

Topologie

Es wird eine Quellpräfixliste erstellt, die die Liste der Quellpräfixe angibt, die zulässige BGP-Peers enthalten.plist_bgp179

Der zustandslose Firewallfilter gleicht alle Pakete aus der Quellpräfixliste mit der Zielportnummer 179 ab.filter_bgp179plist_bgp179

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]

Konfigurieren des Filters

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 den Filter:

  1. Erweitern Sie die Präfixliste , um alle Präfixe einzuschließen, auf die die BGP-Peergruppe zeigt, die durch definiert ist .bgp179protocols bgp group <*> neighbor <*>

  2. Definieren Sie den Filterbegriff, der TCP-Verbindungsversuche an Port 179 von allen Anforderern mit Ausnahme der angegebenen BGP-Peers ablehnt.

  3. Definieren Sie den anderen Filterbegriff, um alle Pakete zu akzeptieren.

  4. Wenden Sie den Firewall-Filter auf die Loopback-Schnittstelle an.

Ergebnisse

Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die Befehle , und eingeben.show firewallshow interfacesshow policy-options Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.

Wenn Sie mit der Konfiguration des Geräts fertig sind, rufen Sie den Konfigurationsmodus auf .commit

Überprüfung

Vergewissern Sie sich, dass die Konfiguration ordnungsgemäß funktioniert.

Anzeigen des Firewall-Filters, der auf die Loopback-Schnittstelle angewendet wird

Zweck

Stellen Sie sicher, dass der Firewallfilter auf den IPv4-Eingabedatenverkehr an der logischen Schnittstelle angewendet wird.filter_bgp179lo0.0

Was

Verwenden Sie den Befehl für die logische Schnittstelle und schließen Sie die Option ein.show interfaces statistics operational modelo0.0detail Unter dem Abschnitt des Befehlsausgabeabschnitts zeigt das Feld den Namen des zustandslosen Firewallfilters an, der auf die logische Schnittstelle in Eingaberichtung angewendet wird.Protocol inetInput Filters

Beispiel: Begrenzen der TCP-Segmentgröße für BGP

In diesem Beispiel wird gezeigt, wie Sie Probleme mit der Sicherheitsanfälligkeit im Internet Control Message Protocol (ICMP) vermeiden können, indem Sie die TCP-Segmentgröße begrenzen, wenn Sie die MTU-Ermittlung (Maximum Transmission Unit) verwenden. Die Verwendung der MTU-Erkennung auf TCP-Pfaden ist eine Methode, um die Fragmentierung von BGP-Paketen zu vermeiden.

Anforderungen

Über die Geräteinitialisierung hinaus ist keine spezielle Konfiguration erforderlich, bevor Sie dieses Beispiel konfigurieren.

Überblick

TCP handelt während des Verbindungsaufbaus zwischen zwei Peers einen MSS-Wert (Maximum Segment Size, maximale Segmentgröße) aus. Der ausgehandelte MSS-Wert basiert in erster Linie auf der maximalen Übertragungseinheit (Maximum Transmission Unit, MTU) der Schnittstellen, mit denen die kommunizierenden Peers direkt verbunden sind. Aufgrund von Schwankungen in der Verbindungs-MTU auf dem von den TCP-Paketen genommenen Pfad können jedoch einige Pakete im Netzwerk, die deutlich innerhalb des MSS-Werts liegen, fragmentiert werden, wenn die Paketgröße die MTU der Verbindung überschreitet.

Um den TCP-MSS-Wert zu konfigurieren, schließen Sie die Anweisung mit einer Segmentgröße zwischen 1 und 4096 ein.tcp-mss

Wenn der Router ein TCP-Paket mit dem SYN-Bit und der gesetzten MSS-Option empfängt und die im Paket angegebene MSS-Option größer als der in der Anweisung angegebene MSS-Wert ist, ersetzt der Router den MSS-Wert im Paket durch den niedrigeren Wert, der in der Anweisung angegeben ist.tcp-msstcp-mss

Der konfigurierte MSS-Wert wird als maximale Segmentgröße für den Absender verwendet. Es wird davon ausgegangen, dass der TCP-MSS-Wert, der vom Absender für die Kommunikation mit dem BGP-Nachbarn verwendet wird, mit dem TCP-MSS-Wert identisch ist, den der Absender vom BGP-Nachbarn akzeptieren kann. Wenn der MSS-Wert des BGP-Nachbarn kleiner als der konfigurierte MSS-Wert ist, wird der MSS-Wert des BGP-Nachbarn als maximale Segmentgröße für den Absender verwendet.

Diese Funktion wird mit TCP über IPv4 und TCP über IPv6 unterstützt.

Topologiediagramm

Abbildung 2 Zeigt die in diesem Beispiel verwendete Topologie.

Abbildung 2: Maximale TCP-Segmentgröße für BGPMaximale TCP-Segmentgröße für BGP

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]

R0

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 R0:

  1. Konfigurieren Sie die Schnittstellen.

  2. Konfigurieren Sie ein Interior Gateway Protocol (IGP), in diesem Beispiel OSPF.

  3. Konfigurieren Sie eine oder mehrere BGP-Gruppen.

  4. Konfigurieren Sie die MTU-Erkennung, um Paketfragmentierung zu verhindern.

  5. Konfigurieren Sie die BGP-Nachbarn, wobei die TCP-MSS global für die Gruppe oder speziell für die verschiedenen Nachbarn festgelegt ist.

    HINWEIS:

    Die TCP-MSS-Nachbareinstellung setzt die Gruppeneinstellung außer Kraft.

  6. Konfigurieren Sie das lokale autonome System.

Ergebnisse

Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die Befehle , und eingeben.show interfacesshow protocolsshow routing-options Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.

Wenn Sie mit der Konfiguration des Geräts fertig sind, rufen Sie den Konfigurationsmodus auf .commit

Überprüfung

Führen Sie die folgenden Befehle aus, um zu bestätigen, dass die Konfiguration ordnungsgemäß funktioniert:

  • show system connections extensive | find <neighbor-address>, um den ausgehandelten TCP-MSS-Wert zu überprüfen.

  • monitor traffic interface, um den BGP-Datenverkehr zu überwachen und sicherzustellen, dass der konfigurierte TCP-MSS-Wert als MSS-Option im TCP-SYN-Paket verwendet wird.

Fehlerbehebung

MSS-Berechnung mit MTU Discovery

Problem

Betrachten Sie ein Beispiel, in dem zwei Routing-Geräte (R1 und R2) über eine interne BGP-Verbindung (IBGP) verfügen. Auf beiden Routern haben die angeschlossenen Schnittstellen 4034 als IPv4-MTU.

In der folgenden Paketerfassung auf Gerät R1 lautet der ausgehandelte MSS 3994. In den Informationen für MSS ist es auf 2048 festgelegt.show system connections extensive

Lösung

Dies ist das erwartete Verhalten bei Junos OS. Der MSS-Wert entspricht dem MTU-Wert abzüglich der IP- oder IPv6- und TCP-Header. Dies bedeutet, dass der MSS-Wert in der Regel 40 Byte kleiner als die MTU (für IPv4) und 60 Byte kleiner als die MTU (für IPv6) ist. Dieser Wert wird zwischen den Peers ausgehandelt. In diesem Beispiel ist es 4034 - 40 = 3994. Junos OS rundet diesen Wert dann auf ein Vielfaches von 2 KB. Der Wert ist 3994 / 2048 * 2048=2048. Es ist also nicht notwendig, denselben MSS-Wert mit in der Ausgabe zu sehen.show system connections

3994 / 2048 = 1.95

1,95 wird auf 1 gerundet.

1 * 2048 = 2048