Firewall-Filter Übereinstimmungsbedingungen basierend auf Bitfeldwerten
Übereinstimmungsbedingungen für Bitfeldwerte
Tabelle 1 listet die Bedingungen für Firewall-Filterübereinstimmungen auf, die darauf basieren, ob bestimmte Bitfelder in einem Paket festgelegt sind oder nicht. In der zweiten und dritten Spalte sind die Datenverkehrstypen aufgeführt, für die die Übereinstimmungsbedingung unterstützt wird.
Bitfeld-Übereinstimmungsbedingung |
Werte abgleichen |
Protokollfamilien für Standard-Stateless-Firewall-Filter |
Protokollfamilien für Servicefilter |
|---|---|---|---|
fragment-flags flags |
Hexadezimalwerte oder Textaliase für das Feld für die Drei-Bit-IP-Fragmentierung im IP-Header. |
Familie Inet |
Familie Inet |
Fragment-Offset value |
Hexadezimalwerte oder Textaliase für das Feld "13-Bit-Fragment-Offset" im IP-Header. |
Familie Inet |
Familie Inet |
tcp-flags value† |
Hexadezimalwerte oder Textaliase für die 6 Bit niedriger Ordnung des 8-Bit-TCP-Flags-Felds im TCP-Header. |
Familie InetFamilie inet6VPLS der FamilieFamilien-BrückeMPLS-Familie |
Familie InetFamilie inet6 |
† Das Junos OS überprüft nicht automatisch das erste Fragmentbit, wenn TCP-Flags für IPv4-Datenverkehr abgeglichen werden. Um das erste Fragmentbit nur für IPv4-Datenverkehr zu überprüfen, verwenden Sie die Übereinstimmungsbedingung für das erste Fragment . |
|||
Übereinstimmungsbedingungen für gemeinsame Bitfeldwerte oder -kombinationen
In Tabelle 2 werden die Bedingungen für Firewall-Filterübereinstimmungen beschrieben, die darauf basieren, ob bestimmte häufig verwendete Werte oder Kombinationen von Bitfeldern in einem Paket festgelegt sind oder nicht.
Sie können Textsynonyme verwenden, um einige gängige Bitfeldübereinstimmungen anzugeben. Im vorherigen Beispiel können Sie tcp-initial als dieselbe Übereinstimmungsbedingung angeben.
Bei einigen der Übereinstimmungsbedingungen für numerische Bereiche und Bitfelder können Sie ein Textsynonym angeben. Eine vollständige Liste der Synonyme:
Wenn Sie die J-Web-Schnittstelle verwenden, wählen Sie das Synonym aus der entsprechenden Liste aus.
Wenn Sie die CLI verwenden, geben Sie nach der from-Anweisung ein Fragezeichen (?) ein.
Übereinstimmungsbedingung |
Beschreibung |
Protokollfamilien für Standard-Stateless-Firewall-Filter |
Protokollfamilien für Servicefilter |
|---|---|---|---|
Erstes Fragment |
Textalias für die Bitfeldübereinstimmungsbedingung Fragment-Offset 0, der das erste Fragment eines fragmentierten Pakets angibt. |
Familie Inet |
Familie Inet |
is-fragment |
Textalias für die Bitfeldübereinstimmungsbedingung Fragment-Offset 0, mit Ausnahme der Angabe, die ein nachgestelltes Fragment eines fragmentierten Pakets angibt. |
Familie Inet |
Familie Inet |
TCP-Established |
Alias für die Bitfeld-Übereinstimmungsbedingung tcp-flags "(ack | rst)", der eine etablierte TCP-Sitzung angibt, aber nicht das erste Paket einer TCP-Verbindung. |
Familie InetFamilie inet6 |
— |
tcp-initial |
Alias für die Bitfeld-Übereinstimmungsbedingung tcp-flags "(!ack & syn)", der das erste Paket einer TCP-Verbindung, aber keine etablierte TCP-Sitzung angibt. |
Familie InetFamilie inet6 |
— |
Logische Operatoren für Bitfeldwerte
Tabelle 3 listet die logischen Operatoren auf, die Sie auf einzelne Bitfeldwerte anwenden können, wenn Sie Übereinstimmungsbedingungen für zustandslose Firewall-Filter angeben. Die Operatoren sind in der Reihenfolge von der höchsten bis zur niedrigsten Priorität aufgelistet. Operationen sind linksassoziativ, d. h. die Operationen werden von links nach rechts verarbeitet.
Rangfolge |
Logischer Bitfeld-Operator |
Beschreibung |
|---|---|---|
1 |
(complex-match-condition) |
Gruppierung: Die komplexe Übereinstimmungsbedingung wird ausgewertet, bevor Operatoren außerhalb der Klammern angewendet werden. |
2 |
!match-condition |
Negation: Eine Übereinstimmung tritt auf, wenn die Übereinstimmungsbedingung false ist. |
3 |
match-condition-1 match-condition-2& odermatch-condition-1 + match-condition-2 |
Logisches UND – Eine Übereinstimmung tritt auf, wenn beide Übereinstimmungsbedingungen erfüllt sind. |
4 |
match-condition-1 | match-condition-2odermatch-condition-1 , match-condition-2 |
Logisches ODER – Eine Übereinstimmung tritt auf, wenn eine der Übereinstimmungsbedingungen wahr ist. |
Übereinstimmung mit einem einzelnen Bitfeldwert oder Textalias
Für die Bitübereinstimmungsbedingungen für fragment-flags und tcp-flags können Sie Bedingungen für Firewall-Filterübereinstimmungen angeben, die darauf basieren, ob ein bestimmtes Bit im Paketfeld festgelegt ist oder nicht.
Numerischer Wert zum Angeben eines einzelnen Bits – Sie können eine Übereinstimmungsbedingung für ein einzelnes Bitfeld angeben, indem Sie einen numerischen Wert verwenden, für den ein Bit festgelegt ist. Abhängig von der Übereinstimmungsbedingung können Sie einen Dezimalwert, einen Binärwert oder einen Hexadezimalwert angeben. Um einen Binärwert anzugeben, geben Sie die Zahl mit dem Präfix b an. Um einen Hexadezimalwert anzugeben, geben Sie die Zahl mit dem Präfix 0x an.
Im folgenden Beispiel tritt eine Übereinstimmung auf, wenn das RST-Bit im Feld TCP-Flags festgelegt ist:
[edit firewall family inet filter filter_tcp_rst_number term term1 from] user@host# set tcp-flags 0x04
Textalias zum Angeben eines einzelnen Bits – Im Allgemeinen geben Sie eine Übereinstimmungsbedingung für ein einzelnes Bitfeld an, indem Sie einen Textalias in doppelte Anführungszeichen (" ") setzen.
Im folgenden Beispiel tritt eine Übereinstimmung auf, wenn das RST-Bit im Feld TCP-Flags festgelegt ist:
[edit firewall family inet filter filter_tcp_rst_alias term term1 from] user@host# set tcp-flags “rst”
Abgleich mit mehreren Bitfeldwerten oder Textaliasen
Sie können eine Firewall-Filterübereinstimmungsbedingung angeben, die darauf basiert, ob ein bestimmter Satz von Bits in einem Paketfeld festgelegt ist.
Numerische Werte zum Angeben mehrerer gesetzter Bits – Wenn Sie einen numerischen Wert angeben, dessen binäre Darstellung mehr als ein gesetztes Bit enthält, wird der Wert als logisches UND der eingestellten Bits behandelt.
Im folgenden Beispiel sind die beiden Übereinstimmungsbedingungen identisch. Eine Übereinstimmung tritt auf, wenn entweder Bit 0x01 oder 0x02 nicht festgelegt ist:
[edit firewall family inet filter reset_or_not_initial_packet term term5 from] user@host# set tcp-flags “!0x3” user@host# set tcp-flags “!(0x01 & 0x02)”
Textaliase, die allgemeine Bitfeldübereinstimmungen angeben: Sie können Textaliase verwenden, um einige allgemeine Bitfeldübereinstimmungen anzugeben. Sie geben diese Übereinstimmungen als einzelnes Schlüsselwort an.
Im folgenden Beispiel wird die tcp-established-Bedingung , die ein Alias für "(ack | rst)" an, gibt an, dass eine Übereinstimmung bei anderen TCP-Paketen als dem ersten Paket einer Verbindung auftritt:
[edit firewall family inet filter reset_or_not_initial_packet term term6 from] user@host# set tcp-established
Übereinstimmung mit einem negierten Bitfeldwert
Um eine Übereinstimmung zu negieren, stellen Sie dem Wert ein Ausrufezeichen voran.
Im folgenden Beispiel tritt eine Übereinstimmung auf, wenn das RST-Bit im Feld TCP-Flags nicht festgelegt ist:
[edit firewall family inet filter filter_tcp_rst term term1 from] user@host# set tcp-flags “!rst”
Übereinstimmung mit dem logischen OR von zwei Bitfeldwerten
Sie können das (| oder ,) verwenden, um anzugeben, dass eine Übereinstimmung vorliegt, wenn ein Bitfeld mit einem von zwei angegebenen Bitfeldwerten übereinstimmt.
Im folgenden Beispiel tritt eine Übereinstimmung auf, wenn es sich bei dem Paket nicht um das ursprüngliche Paket in einer TCP-Sitzung handelt:
[edit firewall family inet filter not_initial_packet term term3 from] user@host# set tcp-flags "!syn | ack"
In einer TCP-Sitzung wird das SYN-Flag nur im gesendeten Anfangspaket gesetzt, während das ACK-Flag in allen Paketen festgelegt wird, die nach dem ersten Paket gesendet werden. In einem Paket, das nicht das ursprüngliche Paket in einer TCP-Sitzung ist, wird entweder das SYN-Flag nicht oder das ACK-Flag gesetzt.
Abgleich mit dem logischen UND von zwei Bitfeldwerten
Sie können das (& oder +) verwenden, um anzugeben, dass eine Übereinstimmung vorliegt, wenn ein Bitfeld mit beiden der beiden angegebenen Bitfeldwerte übereinstimmt.
Im folgenden Beispiel tritt eine Übereinstimmung auf, wenn es sich bei dem Paket um das ursprüngliche Paket in einer TCP-Sitzung handelt:
[edit firewall family inet filter initial_packet term term2 from] user@host# set tcp-flags “syn & !ack”
In einer TCP-Sitzung wird das SYN-Flag nur im gesendeten Anfangspaket gesetzt, während das ACK-Flag in allen Paketen festgelegt wird, die nach dem ersten Paket gesendet werden. In einem Paket, das ein Anfangspaket in einer TCP-Sitzung ist, wird das SYN-Flag festgelegt und das ACK-Flag nicht.
Gruppieren von Bitfeld-Übereinstimmungsbedingungen
Sie können die verwenden, um anzugeben, dass die komplexe Übereinstimmungsbedingung innerhalb der Klammern ausgewertet wird, bevor Operatoren außerhalb der Klammern angewendet werden.
Im folgenden Beispiel tritt eine Übereinstimmung auf, wenn es sich bei dem Paket um einen TCP-Reset handelt oder wenn das Paket nicht das ursprüngliche Paket in der TCP-Sitzung ist:
[edit firewall family inet filter reset_or_not_initial_packet term term4 from] user@host# set tcp-flags “!(syn & !ack) | rst”
In einer TCP-Sitzung wird das SYN-Flag nur im gesendeten Anfangspaket gesetzt, während das ACK-Flag in allen Paketen festgelegt wird, die nach dem ersten Paket gesendet werden. In einem Paket, das nicht das ursprüngliche Paket in einer TCP-Sitzung ist, wird das SYN-Flag nicht gesetzt und das ACK-Feld ist gesetzt.