Auf dieser Seite
Beispiel: Weiterleiten von Paketen an die Discard-Schnittstelle
In diesem Beispiel wird gezeigt, wie Sie mithilfe von Discard-Routing Denial-of-Service-Angriffe (DoS) abwehren, wichtige Netzwerkressourcen vor Angriffen von außen schützen, Schutzdienste für Kunden bereitstellen, sodass jeder Kunde seinen eigenen Schutz initiieren kann, und DoS-Versuche protokollieren und nachverfolgen können.
Anforderungen
Vor der Konfiguration dieses Beispiels ist keine spezielle Konfiguration erforderlich, die über die Geräteinitialisierung hinausgeht.
Überblick
Beim Discard-Routing werden Router mit Regeln konfiguriert, die verhindern, dass Millionen von Anfragen in kurzer Zeit an dieselbe Adresse gesendet werden. Wenn zu viele Anfragen in kurzer Zeit eingehen, verwirft der Router die Anfragen einfach, ohne sie weiterzuleiten. Die Anfragen werden an einen Router gesendet, der die Pakete nicht weiterleitet. Die problematischen Routen werden manchmal als Verwerfungsrouten oder Black-Holed-Routen bezeichnet. Die Arten von Routen, die verworfen werden sollten, sind als Angriffe auf Kunden von Peers oder anderen Kunden, Angriffe von Kunden auf Peers oder andere Kunden, Angriffscontroller, bei denen es sich um Hosts handelt, die Angriffsanweisungen bereitstellen, und nicht zugewiesene Adressräume, die als Bogons oder ungültige IP-Adressen bezeichnet werden.
Nachdem der Angriffsversuch identifiziert wurde, können die Betreiber eine Konfiguration einrichten, um den Angriff abzuschwächen. Eine Möglichkeit, das Verwerfungsrouting in Junos OS zu konfigurieren, besteht darin, für jeden nächsten Hop, der für Verwerfungsrouten verwendet wird, eine statische Verwerfungsroute zu erstellen. Eine statische Route zum Verwerfen verwendet diese discard
Option.
Beispiele:
user@host# show routing-options
static {
route 192.0.2.101/32 discard;
route 192.0.2.103/32 discard;
route 192.0.2.105/32 discard;
}
user@host> show route protocol static terse inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both A V Destination P Prf Metric 1 Metric 2 Next hop AS path * ? 192.0.2.101/32 S 5 Discard * ? 192.0.2.103/32 S 5 Discard * ? 192.0.2.105/32 S 5 Discard
Eine weitere Strategie, die in diesem Beispiel im Vordergrund steht, ist die Verwendung von Routingrichtlinien und der Discard-Schnittstelle. Bei diesem Ansatz enthält die Verwerfungsschnittstelle den nächsten Hop, den Sie den NULL-Routenrouten zuweisen. Eine Verwerfungsschnittstelle kann nur eine logische Einheit (Einheit 0) haben, aber Sie können mehrere IP-Adressen auf Einheit 0 konfigurieren.
Beispiele:
user@host# show interfaces dsc
unit 0 {
family inet {
address 192.0.2.102/32 {
destination 192.0.2.101;
}
address 192.0.2.104/32 {
destination 192.0.2.103;
}
address 192.0.2.106/32 {
destination 192.0.2.105;
}
}
}
user@host> show interfaces terse dsc b Interface Admin Link Proto Local Remote dsc up up dsc.0 up up inet 192.0.2.102 --> 192.0.2.101 192.0.2.104 --> 192.0.2.103 192.0.2.106 --> 192.0.2.105
Der Vorteil der Verwendung einer Verwerfungsschnittstelle anstelle der Verwendung von statischen Verwerfungsrouten besteht darin, dass Sie mit der Verwerfungsschnittstelle Filter für das Zählen, Protokollieren und Sampling des Datenverkehrs konfigurieren und der Schnittstelle zuweisen können. Dies wird in diesem Beispiel veranschaulicht.
Um Pakete tatsächlich zu verwerfen, ist eine Routing-Richtlinie erforderlich, die an die BGP-Sitzungen angehängt ist. Um verworfene Routen zu finden, können Sie einen Routenfilter, eine Zugriffsliste oder einen BGP-Community-Wert verwenden.
So würden Sie z. B. einen Routenfilter verwenden:
Routen-Filter
protocols { bgp { import blackhole-by-route; } } policy-options { policy-statement blackhole-by-route { term specific-routes { from { route-filter 10.10.10.1/32 exact; route-filter 10.20.20.2/32 exact; route-filter 10.30.30.3/32 exact; route-filter 10.40.40.4/32 exact; } then { next-hop 192.0.2.101 } } } }
Abbildung 1 zeigt das Beispielnetzwerk an.

Das Beispiel umfasst drei Router mit eingerichteten externen BGP-Sitzungen (EBGP).
Gerät R1 stellt das angreifende Gerät dar. Gerät R3 stellt den Router dar, der dem angegriffenen Gerät am nächsten ist. Gerät R2 entschärft den Angriff, indem es Pakete an die Discard-Schnittstelle weiterleitet.
Das Beispiel zeigt einen ausgehenden Filter, der auf die Verwerfungsschnittstelle angewendet wird.
Ein Problem bei der Verwendung eines einzelnen NULL-Routenfilters ist die Sichtbarkeit. Alle verworfenen Pakete erhöhen den gleichen Zähler. Um zu sehen, welche Kategorien von Paketen verworfen werden, verwenden Sie die Zielklassenverwendung (Destination Class Usage, DCU), und ordnen Sie jeder Nullrouten-Community eine benutzerdefinierte Klasse zu. Verweisen Sie dann in einem Firewallfilter auf die DCU-Klassen. Verwandte Beispiele finden Sie unter Beispiel: Gruppieren von Quell- und Zielpräfixen in einer Weiterleitungsklasse und Beispiel: Konfigurieren eines Filters zur Ratenbegrenzung basierend auf der Zielklasse.
Im Vergleich zur Verwendung von Routenfiltern und Zugriffslisten ist die Verwendung eines Community-Werts der am wenigsten administrative Aufwand und der am besten skalierbare Ansatz. Daher ist dies der in diesem Beispiel gezeigte Ansatz.
Standardmäßig muss der nächste Hop mit der externen BGP-Peeradresse (EBGP) übereinstimmen. Um den nächsten Hop für NULL-Routing-Services zu ändern, muss die Multihop-Funktion für die EBGP-Sitzungen konfiguriert werden.
CLI-Schnellkonfiguration Zeigt die Konfiguration für alle Geräte in Abbildung 1an.
In diesem Abschnitt #configuration756__policy-discard-st werden die Schritte auf Gerät R2 beschrieben.
Konfiguration
Verfahren
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 [edit]
ein.
Gerät R1
set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.1/30 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set protocols bgp group ext type external set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 10.0.0.2 set routing-options autonomous-system 100
Gerät R2
set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.2/30 set interfaces fe-1/2/1 unit 0 family inet address 10.1.0.1/30 set interfaces dsc unit 0 family inet filter output log-discard set interfaces dsc unit 0 family inet address 192.0.2.102/32 destination 192.0.2.101 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set protocols bgp import blackhole-policy set protocols bgp group ext type external set protocols bgp group ext multihop set protocols bgp group ext export dsc-export set protocols bgp group ext neighbor 10.0.0.1 peer-as 100 set protocols bgp group ext neighbor 10.1.0.2 peer-as 300 set policy-options policy-statement blackhole-policy term blackhole-communities from community blackhole-all-routers set policy-options policy-statement blackhole-policy term blackhole-communities then next-hop 192.0.2.101 set policy-options policy-statement dsc-export from route-filter 192.0.2.101/32 exact set policy-options policy-statement dsc-export from route-filter 192.0.2.102/32 exact set policy-options policy-statement dsc-export then community set blackhole-all-routers set policy-options policy-statement dsc-export then accept set policy-options community blackhole-all-routers members 100:5555 set routing-options static route 192.0.2.102/32 next-hop 192.0.2.101 set routing-options autonomous-system 200 set firewall filter log-discard term one then count counter set firewall filter log-discard term one then log
Gerät R3
set interfaces fe-1/2/1 unit 0 family inet address 10.1.0.2/30 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set interfaces lo0 unit 0 family inet address 192.0.2.102/32 set protocols bgp group ext type external set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 10.1.0.1 set routing-options autonomous-system 300
Schritt-für-Schritt-Anleitung
Im folgenden Beispiel müssen Sie durch verschiedene Ebenen in der Konfigurationshierarchie navigieren. Anweisungen hierzu finden Sie Verwenden des CLI-Editors im Konfigurationsmodus im Junos OS CLI-Benutzerhandbuch.
So konfigurieren Sie Gerät R2:
Erstellen Sie die Routerschnittstellen.
[edit interfaces] user@R2# set fe-1/2/0 unit 0 family inet address 10.0.0.2/30 user@R2# set fe-1/2/1 unit 0 family inet address 10.1.0.1/30 user@R2# set lo0 unit 0 family inet address 192.168.0.2/32
Konfigurieren Sie einen Firewallfilter, der mit allen Paketen übereinstimmt und die Pakete zählt und protokolliert.
[edit firewall filter log-discard term one] user@R2# set then count counter user@R2# set then log
Erstellen Sie eine verworfene Schnittstelle, und wenden Sie den Ausgabe-Firewall-Filter an.
Eingabe-Firewall-Filter haben in diesem Zusammenhang keine Auswirkungen.
[edit interfaces dsc unit 0 family inet] user@R2# set filter output log-discard user@R2# set address 192.0.2.102/32 destination 192.0.2.101
Konfigurieren Sie eine statische Route, die den nächsten Hop an die Zieladresse sendet, die in der discard-Schnittstelle angegeben ist.
[edit routing-options static] user@R2# set route 192.0.2.102/32 next-hop 192.0.2.101
Konfigurieren Sie BGP-Peering.
[edit protocols bgp ] user@R2# set group ext type external user@R2# set group ext multihop user@R2# set group ext neighbor 10.0.0.1 peer-as 100 user@R2# set group ext neighbor 10.1.0.2 peer-as 300
Konfigurieren Sie die Routing-Richtlinien.
[edit policy-options policy-statement blackhole-policy term blackhole-communities] user@R2# set from community blackhole-all-routers user@R2# set then next-hop 192.0.2.101 [edit policy-options policy-statement dsc-export] user@R2# set from route-filter 192.0.2.101/32 exact user@R2# set from route-filter 192.0.2.102/32 exact user@R2# set then community set blackhole-all-routers user@R2# set then accept [edit policy-options community blackhole-all-routers] user@R2# set members 100:5555
Wenden Sie die Routing-Richtlinien an.
[edit protocols bgp ] user@R2# set import blackhole-policy user@R2# set group ext export dsc-export
Konfigurieren Sie die AS-Nummer (Autonomous System).
[edit routing-options] user@R2# set autonomous-system 200
Ergebnisse
Bestätigen Sie im Konfigurationsmodus Ihre Konfiguration, indem Sie die show interfaces
Befehle , show protocols
, show policy-options
, show routing-options
und show firewall
eingeben. Wenn die Ausgabe nicht die gewünschte Konfiguration anzeigt, wiederholen Sie die Anweisungen in diesem Beispiel, um die Konfiguration zu korrigieren.
[edit] user@R2# show interfaces fe-1/2/0 { unit 0 { family inet { address 10.0.0.2/30; } } } fe-1/2/1 { unit 0 { family inet { address 10.1.0.1/30; } } } dsc { unit 0 { family inet { filter { output log-discard; } address 192.0.2.102/32 { destination 192.0.2.101; } } } } lo0 { unit 0 { family inet { address 192.168.0.2/32; } } }
user@R2# show protocols bgp { import blackhole-policy; group ext { type external; multihop; export dsc-export; neighbor 10.0.0.1 { peer-as 100; } neighbor 10.1.0.2 { peer-as 300; } } }
user@R2# show policy-options policy-statement blackhole-policy { term blackhole-communities { from community blackhole-all-routers; then { next-hop 192.0.2.101; } } } policy-statement dsc-export { from { route-filter 192.0.2.101/32 exact; route-filter 192.0.2.102/32 exact; } then { community set blackhole-all-routers; accept; } } community blackhole-all-routers members 100:5555;
user@R2# show routing-options static { route 192.0.2.102/32 next-hop 192.0.2.101; } autonomous-system 200;
user@R2# show firewall filter log-discard { term one { then { count counter; log; } } }
Wenn Sie mit der Konfiguration des Geräts fertig sind, rufen Sie den Konfigurationsmodus auf commit
.
Verifizierung
Vergewissern Sie sich, dass die Konfiguration ordnungsgemäß funktioniert.
- Löschen der Firewall-Zähler
- Pingen der Adresse 192.0.2.101
- Überprüfen des Ausgabefilters
- Überprüfen des Community-Attributs
Löschen der Firewall-Zähler
Zweck
Löschen Sie die Zähler, um sicherzustellen, dass Sie von einem bekannten Nullzustand (0) ausgehen.
Action!
Führen Sie auf Gerät R2 den
clear firewall
Befehl aus.user@R2> clear firewall filter log-discard
Führen Sie auf Gerät R2 den
show firewall
Befehl aus.user@R2> show firewall filter log-discard Filter: /log-discard Counters: Name Bytes Packets counter 0 0
Pingen der Adresse 192.0.2.101
Zweck
Senden Sie Pakete an die Zieladresse.
Action!
Führen Sie den ping
Befehl auf Gerät R1 aus.
user@R1> ping 192.0.2.101 PING 192.0.2.101 (192.0.2.101): 56 data bytes ^C --- 192.0.2.101 ping statistics --- 4 packets transmitted, 0 packets received, 100% packet loss
Bedeutung
Wie erwartet schlägt die Ping-Anforderung fehl, und es wird keine Antwort gesendet. Die Pakete werden verworfen.
Überprüfen des Ausgabefilters
Zweck
Vergewissern Sie sich, dass der Firewall-Filter von Gerät R2 ordnungsgemäß funktioniert.
Action!
Geben Sie auf Gerät R2 den show firewall filter log-discard
Befehl ein.
user@R2> show firewall filter log-discard Filter: log-discard Counters: Name Bytes Packets counter 336 4
Bedeutung
Wie erwartet wird der Zähler inkrementiert.
Das Ping-Paket trägt zusätzlich 20 Byte IP-Overhead sowie 8 Byte ICMP-Header.
Überprüfen des Community-Attributs
Zweck
Vergewissern Sie sich, dass die Route mit dem Attribut community gekennzeichnet wird.
Action!
Geben Sie unter Gerät R1 den show route extensive
Befehl ein, indem Sie die Nachbaradresse für Gerät R2, 192.0.2.101, verwenden.
user@R1> show route 192.0.2.101 extensive inet.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden) 192.0.2.101/32 (1 entry, 1 announced) TSI: KRT in-kernel 192.0.2.101/32 -> {10.0.0.2} *BGP Preference: 170/-101 Next hop type: Router, Next hop index: 684 Address: 0x94141d8 Next-hop reference count: 2 Source: 10.0.0.2 Next hop: 10.0.0.2 via fe-1/2/0.0, selected Session Id: 0x8000a State: <Active Ext> Local AS: 100 Peer AS: 200 Age: 53:03 Validation State: unverified Task: BGP_200.10.0.0.2+63097 Announcement bits (1): 2-KRT AS path: 200 I Communities: 100:5555 Accepted Localpref: 100 Router ID: 192.168.0.2
Bedeutung
Wenn Gerät R2 die Route 192.0.2.101 für Gerät R1 ankündigt, fügt Gerät R2 erwartungsgemäß das Community-Tag 100:5555 hinzu.