Flexible Übereinstimmungsbedingungen für Firewall-Filter
Die Bedingungen für die Übereinstimmung mit Standard-Firewall-Filtern hängen von der Protokollfamilie des abgleichten Datenverkehrs ab. Beispielsweise unterscheiden sich die für den Bridge-Protokollverkehr verfügbaren Begriffe von denen für die Protokollfamilien inet oder inet6. Die felder, die für das Abgleichen innerhalb jeder Protokollfamilie verfügbar sind, sind jedoch feste oder vordefinierte. Das bedeutet, dass Filter nur auf Muster innerhalb dieser vordefinierten Felder abgestimmt werden können.
Mithilfe flexibler Übereinstimmungsbedingungen können Firewall-Filter konstruiert werden, die die Übereinstimmung an Layer-2-, Layer-3-, Layer-4- oder Payload-Standorten starten. Anschließend können zusätzliche Versatzkriterien festgelegt werden, um Musterabgleiche an benutzerdefinierten, benutzerdefinierten Standorten innerhalb eines Pakets zu ermöglichen.
Flexible Übereinstimmungsfilterbegriffe werden ebenso wie alle anderen Firewall-Filterbegriffe auf MPC- oder MIC-Schnittstellen als Ein- oder Ausgabefilter angewendet. Flexible Übereinstimmungsfilterbegriffe können auch als Vorlagen auf Hierarchieebene [edit firewall]
erstellt werden. Diese Vorlagen können dann innerhalb eines flexiblen Übereinstimmungsbegriffs referenziert 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, wenden Sie die flexiblen Firewall-Filterkriterien nur auf die MPC- oder MIC-Schnittstellen an.
Für Router der MX-Serie mit MPCs müssen Sie den Filterzähler für Nur-Trio-Match-Filter in der MIB initialisieren, indem Sie die entsprechende SNMP-MIB gehen. Beispielsweise müssen Sie für alle Filter, die in Bezug auf ihre Trio-Only-Filter konfiguriert oder geändert werden, einen Befehl wie den folgenden ausführen: show snmp mib walk (ascii | decimal) object-id
. Dies zwingt Junos, die Filterzähler zu erlernen 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). Trio-Only-Match-Filter sind Filter, die mindestens eine Übereinstimmungsbedingung oder Aktion enthalten, die nur vom Trio-Chipsatz unterstützt wird.
Diese Anleitung gilt für alle enhanced-mode
Firewall-Filter. Dies gilt auch für flexible Übereinstimmungsfilterbedingungen für Offset-Bereichs- oder Offset-Masken gre-key
sowie Firewall-Filter-ÜbereinstimmungsbedingungenFirewall-Filter-Übereinstimmungsbedingungen für IPv4-Datenverkehr für IPv6-Datenverkehr mit einer der folgenden Übereinstimmungsbedingungen: payload-protocol
, extension headers
, is_fragment
. Es gilt auch für Filter mit einem der folgenden Optionen Terminierungsaktionen für Firewall-Filter: encapsulate
oder decapsulate
eines der folgenden:Nicht-bestimmende Aktionen für Firewall-Filter policy-map
clear-policy-map
und .
Statement-Hierarchie
Flexible Übereinstimmungsfilterbegriffe sind in drei Variationen verfügbar, wie in Tabelle 1dargestellt. Die flexible-match
Änderung wird auf der [edit firewall]
Hierarchieebene konfiguriert. Es wird verwendet, um flexible Übereinstimmungsvorlagen zu definieren. Die flexible-filter-match-mask
und flexible-match-range
sind in der [edit firewall family [inet|inet6|bridge|ethernet-switching|ccc|vpls] filter <filter-name> term <term-name> from]
Hierarchie konfiguriert. Verwenden Sie den family ethernet-switching
Filter für EX9200-Switches.
Flexible Filter-Übereinstimmungstypen
Flexibler Filter-Übereinstimmungstyp |
Verfügbare Attribute |
Beschreibung |
---|---|---|
|
|
Erstellen Sie eine Vorlage für flexible Übereinstimmungen, die als <name> attribut bezeichnet wird. |
|
Länge der Daten, die in Bits abgegleicht werden müssen, für String-Eingaben nicht erforderlich (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 Übereinstimmungs-Startpunkt |
|
|
Startpunkt, der im Paket abgleicht |
|
|
|
Länge der Daten, die in Bits abgegleicht werden müssen, für String-Eingaben nicht erforderlich (0.128) |
|
Bit-Offset nach dem (Match-Start + Byte)-Offset (0,7) |
|
|
Byte-Offset nach dem Übereinstimmungs-Startpunkt |
|
|
Wählen Sie eine flexible Übereinstimmung aus einem vordefinierten Vorlagenfeld aus. Erforderlich, es sei denn |
|
|
Maskieren Sie Bits in den paketzugleichenden Daten. |
|
|
Startpunkt, der in Paketen abgleicht. Erforderlich, es sei denn |
|
|
Wertedaten/Zeichenfolge, die angepasst werden sollen. |
|
|
|
Länge der daten, die in Bits übereinstimmen. (0..32) Erforderlich, es sei denn |
|
Bit-Offset nach dem (Match-Start + Byte)-Offset. (0..7) |
|
|
Byte-Offset nach dem Übereinstimmungs-Startpunkt |
|
|
Wählen Sie eine flexible Übereinstimmung aus vordefinierter Vorlage aus. |
|
|
Startpunkt, der in Paketen abgleicht. Erforderlich, es sei denn |
|
|
Bereich der zu gleichen Werte. |
|
|
Bereich der werte, die nicht übereinstimmen. |
Startorte für flexible Filter-Übereinstimmungen
Flexible Übereinstimmungsfilterbegriffe werden durch Angabe eines Startstandorts oder Ankerpunkts innerhalb des Pakets konstruiert. Die Startstandorte können beliebig sein: Layer-2, Layer-3, Layer-4 oder Payload, abhängig von der verwendeten Protokollfamilie. Tabelle 2 zeigt die verfügbaren flexiblen Filtermatch-Startstandorte nach Protokollfamilie an. Sie verwenden diese verfügbaren Startstandorte als match-start
Standorte für die flexiblen Übereinstimmungsfilterbedingungen.
Von diesen Startstandorten aus können spezifische Byte- und Bit-Offsets verwendet werden, um dem Filter zu ermöglichen, Muster an sehr bestimmten Standorten innerhalb des Pakets abgleichen zu können.
Protokollfamilie |
Verfügbare Startorte |
---|---|
|
Für QFX5120- und EX4650-Switches wurde in Junos Version 20.1R1 Unterstützung für (nur) flexible Layer-2- und Layer-3-Matchfilter hinzugefügt. |
|
Für QFX5120- und EX4650-Switches wurde in Junos Version 20.1R1 Unterstützung für (nur) flexible Layer-2- und Layer-3-Matchfilter hinzugefügt. |
|
|
|
|
|
|
|
|
|
(EX9200-Switches) Für QFX5120- und EX4650-Switches wurde in Junos Version 20.1R1 Unterstützung für (nur) flexible Layer-2- und Layer-3-Filter hinzugefügt. Ein Beispiel für die Verwendung eines Layer-2-Paket-Offsets und der Übereinstimmungslänge finden Sie unten. |
Beispiele für flexible Filtermatches
Das folgende Beispiel veranschaulicht die Verwendung und den Kontext für flexible-match-mask
.
from { flexible-match-mask { flexible-mask-name <mask-name>; mask-in-hex <mask>; prefix <pattern>; } }
Der <mask-name> gibt für den flexiblen Maskennamen an, welche vordefinierte Vorlage für die Flexible-Match-Bedingung verwendet wird. Vorlagen können so definiert werden, dass die flexible Übereinstimmungsbedingung ausgeführt werden soll, an welcher Stelle (Position) im Paket ausgeführt werden soll.
Die <maske> für mask-in-hex ist im hexadezimalen Format. Eine konfigurierte Maske von 0xf0fc
gibt beispielsweise eine Übereinstimmung für die Fist vier Bits im ersten Byte (wie durch <mask-name>) und für die ersten sechs Bits im zweiten Byte an. Wenn das Paket IPv4-Paket ist und <mask-Name> sich auf die ersten zwei Bytes im L3-Header bezieht, wird nach dem IP-Versionsfeld und dem DSCP-Feld gesucht. Als weiteres Beispiel gibt eine konfigurierte Maske 0xffc0
eine Suche nach dem gesamten ersten Byte und nach zwei Bits aus dem zweiten Byte an. Wenn der <mask-Name> sich auf die ersten zwei Bytes im L3-Header bezieht und das Paket ein IPv6-Paket ist, gibt dies das IP-Versionsfeld und DSCP im Feld Datenverkehrsklasse an.
Der für Prefix angegebene <pattern> ist eine ASCII-Zeichenfolge. Wenn die ersten zwei Zeichen sind 0x
, wird die Zeichenfolge als hexadezimale Zahlenkodierung entsprechender Bits verarbeitet. Das konfigurierte Präfix 0x40c0
in Kombination mit Masken 0xf0fc
und <mask-Name> das die ersten zwei Bytes im L3-Header verweist, gibt eine Suche nach 0100
den ersten vier Bits an (das Versionsfeld entspricht 4) und 1100 00
im IPv4-DSCP-Feld (DSCP entspricht cs6). Oder mithilfe des konfigurierten Präfixes 0x6c00
in Kombination mit Masken 0xffc0
und <mask-Name> das die ersten zwei Bytes im L3-Header verweist, wird eine Suche nach 0110
in den ersten vier Bits (Das Versionsfeld ist gleich 6) und 1100 00
im IPv6-DSCP-Feld (DSCP entspricht cs6) angegeben.
Das erste Beispiel definiert eine Maskenvorlage, die die ersten zwei Bytes (16 Bits) 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 Bits) der Paketnutzlast für eine flexible Übereinstimmung auswählt:
firewall { flexible-match FM-FOUR-PAYLOAD-BYTES { match-start payload; byte-offset 2; bit-offset 0; bit-length 32; } }
In diesem Beispiel wird eine ASCII-Zeichenüberschrift für die Zeichenfolge JNPR (ASCII-Zeichen: 0x4a
, 0x4e
, 0x50
, 0x52
) im dritten bis sechsten Byte der Paketnutzlast. Der Filter verwendet die FM-FOUR-PAYLOAD-BYTES
im vorherigen Beispiel definierte Maskenvorlage.
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 CCC-Familienfilter, der DSCP gleich cs6
DSCP und DSCP ef
sucht, unabhängig davon, ob die eingekapselten Pakete IPv4 oder IPv6 sind. Es verwendet die FM-FIRST-TWO-L3-BYTES
im ersten Beispiel definierte Maskenvorlage.
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 Sie eine Übereinstimmungsdauer, beginnend mit einem Layer-2-Paket-Offset, in einem Firewall-Filter für ein QFX5120-32C-, QFX5120-48Y- oder EX4650-Gerät verwenden, auf dem Junos Release 20.1R1 ausgeführt wird. Hier verwenden wir eine Bitlänge von 32 Bits und die ethernet-switching
Familie (inet
und inet6
werden auch unterstützt, wie bei einem Layer-3-Offset).
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; } }