Flexible Übereinstimmungsbedingungen für Firewall-Filter
Die Übereinstimmungsbedingungen für Standard-Firewallfilter variieren je nach Protokollfamilie des abgeglichenen Datenverkehrs. Beispielsweise unterscheiden sich die für Bridge-Protokolldatenverkehr verfügbaren Begriffe von denen, die für die Protokollfamilien inet oder inet6 verfügbar sind. Die Felder, die für den Abgleich innerhalb der einzelnen Protokollfamilien zur Verfügung stehen, sind jedoch fest oder vordefiniert. Das bedeutet, dass Filter nur nach Mustern innerhalb dieser vordefinierten Felder übereinstimmen können.
Unter Verwendung flexibler Übereinstimmungsbedingungen können Firewall-Filter konstruiert werden, die die Übereinstimmung an Layer-2-, Layer-3-, Layer-4- oder Nutzlastpositionen starten. Von dort aus können zusätzliche Offset-Kriterien festgelegt werden, wodurch Musterübereinstimmungen an benutzerdefinierten Stellen innerhalb eines Pakets ermöglicht werden.
Flexible Anpassungsfilterbegriffe werden auf MPC- oder MIC-Schnittstellen als Eingangs- oder Ausgangsfilter angewendet, genau wie alle anderen Firewall-Filterbegriffe. Flexible Übereinstimmungsfilterbegriffe können auch als Vorlagen auf Hierarchieebene erstellt werden.[edit firewall]
Auf diese Vorlagen kann dann innerhalb eines flexiblen Übereinstimmungsbegriffs verwiesen werden.
Bei Routern der MX-Serie werden flexible Übereinstimmungsbedingungen nur mit MPCs oder MICs unterstützt. In Umgebungen, in denen FPCs, PICs und/oder DPCs zusammen mit MPCs oder MICs installiert sind, sollten Sie die Filterkriterien für die flexible Anpassung der Firewall nur auf die MPC- oder MIC-Schnittstellen anwenden.
Bei Routern der MX-Serie mit MPCs müssen Sie den Filterzähler für Nur-Trio-Übereinstimmungsfilter in der MIB initialisieren, indem Sie die entsprechende SNMP-MIB durchlaufen. Beispielsweise müssen Sie für jeden Filter, der in Bezug auf seine Nur-Trio-Filter konfiguriert oder geändert wird, einen Befehl wie den folgenden ausführen: show snmp mib walk (ascii | decimal) object-id
. Dadurch wird Junos gezwungen, die Filterzähler zu lernen und sicherzustellen, dass die Filterstatistiken angezeigt werden (dies liegt daran, dass bei der ersten Abfrage zum Filtern von Statistiken möglicherweise nicht alle Zähler angezeigt werden). Nur-Trio-Übereinstimmungsfilter sind solche, die mindestens eine Übereinstimmungsbedingung oder -aktion enthalten, die nur vom Trio-Chipsatz unterstützt wird.
Diese Anleitung gilt für alle Firewallfilter.enhanced-mode
Sie gilt auch für flexible Übereinstimmungsfilterbedingungen für offset-range oder offset-mask und Firewall-Filter-Übereinstimmungsbedingungen für IPv6-Datenverkehr mit einer der folgenden Übereinstimmungsbedingungen:Übereinstimmungsbedingungen für Firewall-Filter für IPv4-Datenverkehrgre-key
Übereinstimmungsbedingungen für Firewall-Filter für IPv6-Datenverkehr , , .payload-protocol
extension headers
is_fragment
Dies gilt auch für Filter mit einer der folgenden Eigenschaften:Aktionen zum Beenden des Firewall-Filters oder , oder eine der folgenden Optionen :encapsulate
decapsulate
Nicht terminierende Aktionen für Firewall-Filter , und .policy-map
clear-policy-map
Anweisungshierarchie
Flexible Übereinstimmungsfilterbegriffe sind in drei Varianten verfügbar, wie in gezeigt.Tabelle 1 Die Variante wird auf Hierarchieebene konfiguriert.flexible-match
[edit firewall]
Es wird verwendet, um flexible Übereinstimmungsvorlagen zu definieren. Die und werden in der Hierarchie konfiguriert.flexible-filter-match-mask
flexible-match-range
[edit firewall family [inet|inet6|bridge|ethernet-switching|ccc|vpls] filter <filter-name> term <term-name> from]
Verwenden Sie den Filter für EX9200-Switches.family ethernet-switching
Flexible Filter-Übereinstimmungstypen
Flexibler Filter-Übereinstimmungstyp |
Verfügbare Attribute |
Beschreibung |
---|---|---|
|
|
Erstellen Sie eine Vorlage mit flexiblem Abgleich, die als Attribut benannt ist.<name> |
|
Länge der abzugleichenden Daten in Bit, nicht benötigt für String-Eingabe (0..32) Für QFX5120- und EX4650-Switches sind 16 und 32 die einzigen gültigen Bitlängen. |
|
|
Bit-Offset nach dem (Match-Start + Byte) Offset (0..7) |
|
|
Byte-Offset nach dem Startpunkt des Spiels |
|
|
Startpunkt für den Abgleich im Paket |
|
|
|
Länge der abzugleichenden Daten in Bits, nicht benötigt für String-Eingabe (0..128) |
|
Bit-Offset nach dem (Match-Start + Byte) Offset (0..7) |
|
|
Byte-Offset nach dem Startpunkt des Spiels |
|
|
Wählen Sie eine flexible Übereinstimmung aus dem vordefinierten Vorlagenfeld aus. Erforderlich, sofern nicht konfiguriert. |
|
|
Maskieren Sie Bits in den Paketdaten, die abgeglichen werden sollen. |
|
|
Startpunkt, der im Paket abgeglichen werden soll. Erforderlich, sofern nicht konfiguriert. |
|
|
Wertdaten/Zeichenfolge, die abgeglichen werden sollen. |
|
|
|
Länge der abzugleichenden Daten in Bits. (0..32) Erforderlich, sofern nicht konfiguriert. |
|
Bit-Offset nach dem (Match-Start + Byte) Offset. (0..7) |
|
|
Byte-Offset nach dem Startpunkt des Spiels |
|
|
Wählen Sie eine flexible Übereinstimmung aus der vordefinierten Vorlage aus. |
|
|
Startpunkt, der im Paket abgeglichen werden soll. Erforderlich, sofern nicht konfiguriert. |
|
|
Bereich der abzugleichenden Werte. |
|
|
Wertebereich, der nicht abgeglichen werden soll. |
Flexible Startpositionen für Filterübereinstimmungen
Flexible Übereinstimmungsfilterterme werden erstellt, indem eine Startposition oder ein Ankerpunkt innerhalb des Pakets angegeben wird. Die Startorte können eine der folgenden sein: Layer-2, Layer-3, Layer-4 oder Payload, je nach verwendeter Protokollfamilie. Zeigt die verfügbaren Startpositionen für flexible Filterübereinstimmungen nach Protokollfamilie an.Tabelle 2 Sie verwenden diese verfügbaren Startpositionen als Positionen für die flexiblen Übereinstimmungsfilterbedingungen.match-start
Von diesen Startpositionen aus können bestimmte Byte- und Bit-Offsets verwendet werden, damit der Filter Muster an ganz bestimmten Stellen innerhalb des Pakets abgleichen kann.
Protokoll-Familie |
Verfügbare Startorte |
---|---|
|
Für QFX5120- und EX4650-Switches wurde in Junos Version 20.1R1 Unterstützung für flexible Layer-2- und Layer-3-Filter (nur) hinzugefügt. |
|
Für QFX5120- und EX4650-Switches wurde in Junos Version 20.1R1 Unterstützung für flexible Layer-2- und Layer-3-Filter (nur) hinzugefügt. |
|
|
|
|
|
|
|
|
|
(EX9200-Switches) Für QFX5120- und EX4650-Switches wurde in Junos Version 20.1R1 Unterstützung für flexible Layer-2- und Layer-3-Filter (nur) hinzugefügt. Ein Beispiel für die Verwendung eines Layer-2-Paketoffsets und einer Übereinstimmungslänge finden Sie unten. |
Beispiele für flexible Filteranpassungen
Das folgende Beispiel veranschaulicht die Verwendung und den Kontext von .flexible-match-mask
from { flexible-match-mask { flexible-mask-name <mask-name>; mask-in-hex <mask>; prefix <pattern>; } }
Die gibt an , für welche vordefinierte Vorlage die flexible Übereinstimmungsbedingung verwendet wird.<mask-name>flexible-mask-name Es können Vorlagen definiert werden, um festzulegen, an welcher Stelle (Position) im Paket die flexible Übereinstimmungsbedingung ausgeführt werden soll.
Das for ist im Hexadezimalformat.<mask>mask-in-hex Beispielsweise gibt eine konfigurierte Maske von eine Übereinstimmung für die ersten vier Bits im ersten Byte (wie durch ) und für die ersten sechs Bits im zweiten Byte an.0xf0fc
<mask-name> Wenn es sich bei dem Paket um ein IPv4-Paket handelt und es sich auf die ersten beiden Bytes im L3-Header bezieht, wird nach den Feldern "IP-Version" und "DSCP" gesucht.<mask-name> Als weiteres Beispiel gibt eine konfigurierte Maske eine Suche nach dem gesamten ersten Byte und nach zwei Bits aus dem zweiten Byte an.0xffc0
Wenn sich das auf die ersten beiden Bytes im L3-Header bezieht und es sich bei dem Paket um ein IPv6-Paket handelt, werden das Feld "IP-Version" und DSCP im Feld "Datenverkehrsklasse" angegeben.<mask-name>
Das angegebene for ist eine ASCII-Zeichenfolge.<pattern>prefix Wenn die ersten zwei Zeichen sind , wird die Zeichenfolge als Hexadezimalzahl verarbeitet, die entsprechende Bits codiert.0x
Zum Beispiel zeigt das konfigurierte Präfix in Kombination mit mask und verweisend auf die ersten beiden Bytes im L3-Header eine Suche nach in den ersten vier Bits (Versionsfeld ist gleich 4) und in IPv4 DSCP-Feld (DSCP ist gleich cs6) an.0x40c0
0xf0fc
<mask-name>0100
1100 00
Oder geben Sie unter Verwendung des konfigurierten Präfixes in Kombination mit mask und dem Verweis auf die ersten beiden Bytes im L3-Header eine Suche nach in den ersten vier Bits (Versionsfeld ist gleich 6) und im IPv6-DSCP-Feld (DSCP ist gleich cs6) an.0x6c00
0xffc0
<mask-name>0110
1100 00
Im ersten Beispiel wird eine Maskenvorlage definiert, die die ersten beiden Bytes (16 Bit) aus dem L3-Header für eine flexible Übereinstimmung auswählt:
firewall { flexible-match FM-FIRST-TWO-L3-BYTES { match-start layer-3; byte-offset 0; bit-offset 0; bit-length 16; } }
Im nächsten Beispiel wird eine Maskenvorlage definiert, die das dritte bis sechste Byte (32 Bit) der Paketnutzlast für einen flexiblen Abgleich auswählt:
firewall { flexible-match FM-FOUR-PAYLOAD-BYTES { match-start payload; byte-offset 2; bit-offset 0; bit-length 32; } }
Dieses Beispiel zeigt eine ASCII-Zeichenübereinstimmung für die Zeichenfolge JNPR (ASCII-Zeichen: , , , ) im dritten bis sechsten Byte der Paketnutzlast.0x4a
0x4e
0x50
0x52
Der Filter verwendet die im vorherigen Beispiel definierte Maskenvorlage.FM-FOUR-PAYLOAD-BYTES
firewall { family ccc filter FF-COUNT-JNPR-PACKETS { term JNPR-STRING { from { flexible-match-mask { mask-in-hex 0xffffffff; prefix JNPR; flexible-mask-name FM-FOUR-PAYLOAD-BYTES; } } then { count CNT-JNPR-YES accept; } } term DEAFULT { then { count CNT-JNPR-NO accept; } } } }
Dieses Beispiel zeigt einen Familien-ccc-Filter, der nach DSCP gleich und DSCP sucht, unabhängig davon, ob es sich bei den gekapselten Paketen um IPv4 oder IPv6 handelt.cs6
ef
Es verwendet die im ersten Beispiel definierte Maskenvorlage.FM-FIRST-TWO-L3-BYTES
firewall { family ccc filter FF-DSCP-CLASSIFY { term ROUTING-IPV4 { from { flexible-match-mask { mask-in-hex 0xf0fc; prefix 0x40c0; # DSCP=cs6 in IPv4 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count ROUTING-IPV4; accept; } } term ROUTING-IPV6 { from { flexible-match-mask { mask-in-hex 0xffc0; prefix 0x6c00; # DSCP=cs6 in IPv6 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count ROUTING-IPV6; accept; } } term VOICE-IPV4 { from { flexible-match-mask { mask-in-hex 0xf0fc; prefix 0x40b8; # DSCP=ef in IPv4 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count VOICE-IPV4; accept; } } term VOICE-IPV6 { from { flexible-match-mask { mask-in-hex 0xffc0; prefix 0x6b80; # DSCP=ef in IPv6 header flexible-mask-name FM-FIRST-TWO-L3-BYTES; } } then { count VOICE-IPV6; accept; } } term DEFAULT { then { accept; } } } }
In diesem Beispiel wird gezeigt, wie eine Übereinstimmungslänge, beginnend mit einem Layer-2-Paketoffset, in einem Firewallfilter für ein QFX5120-32C-, QFX5120-48Y- oder EX4650-Gerät mit Junos Version 20.1R1 verwendet wird. Hier verwenden wir eine Bitlänge von 32 Bit und die Familie ( und werden auch unterstützt, ebenso wie die Verwendung eines Layer-3-Offsets).ethernet-switching
inet
inet6
user@device# show firewall family ethernet-switching filter udf_eth { term t1 { from { flexible-match-mask { match-start layer-2; byte-offset 8; bit-length 32; prefix 168430090; } } then count c1; } }
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.