Conditions de correspondance flexibles du filtre de pare-feu
Les conditions de correspondance du filtre de pare-feu standard varient en fonction de la famille de protocoles du trafic mis en correspondance. Par exemple, les termes disponibles pour le trafic du protocole de pont sont différents de ceux disponibles pour les familles de protocoles inet ou inet6. Les champs disponibles pour la mise en correspondance au sein de chaque famille de protocoles sont toutefois fixes ou prédéfinis. Cela signifie que les filtres ne peuvent correspondre qu’à des modèles dans ces champs prédéfinis.
En utilisant des conditions de correspondance flexibles, des filtres de pare-feu peuvent être construits pour démarrer la correspondance à des emplacements de couche 2, de couche 3, de couche 4 ou de charge utile. À partir de là, des critères de décalage supplémentaires peuvent être spécifiés, ce qui permet des correspondances de motifs à des emplacements personnalisés et définis par l’utilisateur dans un paquet.
Des termes de filtrage de correspondance flexibles sont appliqués aux interfaces MPC ou MIC en tant que filtres d’entrée ou de sortie, comme n’importe quel autre terme de filtre de pare-feu. Des termes de filtrage de correspondance flexibles peuvent également être créés en tant que modèles au niveau de la [edit firewall]
hiérarchie. Ces modèles peuvent ensuite être référencés dans un terme de correspondance flexible.
Pour les routeurs MX Series, seules les conditions de correspondance flexibles sont prises en charge avec les MPC ou les MIC. Pour les environnements dans lesquels des FPC, des PIC et/ou des DPC sont installés en même temps que des MPC ou des MIC, veillez à appliquer les critères de filtre de pare-feu à correspondance flexible uniquement aux interfaces MPC ou MIC.
Pour les routeurs MX Series avec MPC, vous devez initialiser le compteur de filtres pour les filtres de correspondance Trio uniquement dans la MIB en parcourant la MIB SNMP correspondante. Par exemple, pour tout filtre configuré ou modifié par rapport à ses filtres Trio uniquement, vous devez exécuter une commande telle que la suivante : show snmp mib walk (ascii | decimal) object-id
. Cela oblige Junos à apprendre les compteurs de filtre et à s’assurer que les statistiques de filtre sont affichées (en effet, le premier sondage pour filtrer les statistiques peut ne pas afficher tous les compteurs). Les filtres de correspondance Trio uniquement sont ceux qui incluent au moins une condition ou une action de correspondance qui n’est prise en charge que par le chipset Trio.
Ces instructions s’appliquent à tous les enhanced-mode
filtres de pare-feu. Elle s’applique également aux conditions de correspondance avec des termes de filtrage de correspondance flexibles pour offset-range ou offset-mask, et aux conditions de correspondance de filtre de pare-feu pour le trafic IPv6 avec l’une Conditions de correspondance du filtre de pare-feu pour le trafic IPv4 des conditions de correspondance suivantes : gre-key
payload-protocol
, extension headers
, is_fragment
. Elle s’applique également aux filtres présentant l’un ou l’autre des éléments suivants Actions de terminaison du filtre de pare-feu: encapsulate
ou , ou decapsulate
l’un des éléments suivants Actions non résiliantes du filtre de pare-feu: policy-map
clear-policy-map
et .
Hiérarchie des instructions
Des termes de filtrage de correspondance flexibles sont disponibles en trois variantes, comme illustré à la .Tableau 1 La flexible-match
variation est configurée au niveau de la [edit firewall]
hiérarchie. Il est utilisé pour définir des modèles de correspondance flexibles. Les flexible-filter-match-mask
et flexible-match-range
sont configurés au niveau de la [edit firewall family [inet|inet6|bridge|ethernet-switching|ccc|vpls] filter <filter-name> term <term-name> from]
hiérarchie. Utilisez le family ethernet-switching
filtre pour les commutateurs EX9200.
Types de correspondance de filtre flexibles
Type de correspondance de filtre flexible |
Attributs disponibles |
Description |
---|---|---|
|
|
Créez un modèle de correspondance flexible nommé en tant qu’attribut <name> . |
|
Longueur des données à apparier en bits, non nécessaire pour l’entrée de chaîne (0..32) Pour les commutateurs QFX5120 et EX4650, les longueurs de bits 16 et 32 sont les seules valides. |
|
|
Décalage binaire après le décalage (match-start + octet) (0..7) |
|
|
Décalage d’octets après le point de départ de la correspondance |
|
|
Point de départ à faire correspondre dans le paquet |
|
|
|
Longueur des données à mettre en correspondance en bits, non nécessaire pour l’entrée de chaîne (0..128) |
|
Décalage binaire après le décalage (match-start + octet) (0..7) |
|
|
Décalage d’octets après le point de départ de la correspondance |
|
|
Sélectionnez une correspondance flexible à partir d’un champ de modèle prédéfini. Obligatoire sauf si |
|
|
Masquez les bits dans les données de paquet à mettre en correspondance. |
|
|
Point de départ à faire correspondre dans le paquet. Obligatoire sauf si |
|
|
Données/chaîne de valeur à mettre en correspondance. |
|
|
|
Longueur des données à apparier en bits. (0..32) Obligatoire sauf si |
|
Décalage binaire après le décalage (match-start + octet). (0..7) |
|
|
Décalage d’octets après le point de départ de la correspondance |
|
|
Sélectionnez une correspondance flexible à partir d’un modèle prédéfini. |
|
|
Point de départ à faire correspondre dans le paquet. Obligatoire sauf si |
|
|
Plage de valeurs à faire correspondre. |
|
|
Plage de valeurs à ne pas correspondre. |
Emplacements de départ flexibles pour les filtres
Les termes flexibles du filtre de correspondance sont construits en donnant un emplacement de départ ou un point d’ancrage dans le paquet. Les lieux de départ peuvent être l’un des suivants : couche 2, couche 3, couche 4 ou charge utile, selon la famille de protocoles utilisée. Tableau 2 Affiche les emplacements de départ flexibles disponibles pour les correspondances de filtres par famille de protocoles. Vous utilisez ces emplacements de départ disponibles comme emplacements pour les match-start
termes de filtrage de correspondance flexibles.
À partir de ces emplacements de départ, des décalages d’octets et de bits spécifiques peuvent être utilisés pour permettre au filtre de faire correspondre des modèles à des emplacements très spécifiques dans le paquet.
Famille de protocoles |
Lieux de départ disponibles |
---|---|
|
Pour les commutateurs QFX5120 et EX4650, la prise en charge des filtres de correspondance flexibles de couche 2 et de couche 3 (uniquement) a été ajoutée dans la version 20.1R1 de Junos. |
|
Pour les commutateurs QFX5120 et EX4650, la prise en charge des filtres de correspondance flexibles de couche 2 et de couche 3 (uniquement) a été ajoutée dans la version 20.1R1 de Junos. |
|
|
|
|
|
|
|
|
|
(Commutateurs EX9200) Pour les commutateurs QFX5120 et EX4650, la prise en charge des filtres de correspondance flexibles de couche 2 et de couche 3 (uniquement) a été ajoutée dans la version 20.1R1 de Junos. Vous trouverez ci-dessous un exemple d’utilisation d’un décalage de paquet de couche 2 et d’une longueur de correspondance. |
Exemples de correspondance de filtres flexibles
L’exemple suivant illustre l’utilisation et le contexte de flexible-match-mask
.
from { flexible-match-mask { flexible-mask-name <mask-name>; mask-in-hex <mask>; prefix <pattern>; } }
Le <mask-name> spécifie le modèle prédéfini utilisé flexible-mask-name pour la condition de correspondance flexible. Des modèles peuvent être définis pour spécifier à quel endroit (position) dans le paquet la condition de correspondance flexible doit être exécutée.
Le <mask> for mask-in-hex est au format hexadécimal. Par exemple, un masque configuré de 0xf0fc
spécifie une correspondance pour les quatre premiers bits du premier octet (comme indiqué par <mask-name>), et pour les six premiers bits du deuxième octet. S’il s’agit d’un paquet IPv4 et qu’il fait référence aux deux premiers octets de l’en-tête L3, la recherche porte sur les champs de version IP et <mask-name> DSCP. Autre exemple, un masque 0xffc0
configuré spécifie une recherche pour le premier octet entier et pour deux bits à partir du deuxième octet. Si le fait référence aux deux premiers octets de l’en-tête L3 et que le paquet est un paquet IPv6, cela spécifie le champ de version IP et DSCP dans le <mask-name> champ Classe de trafic.
Le <pattern> for prefix spécifié est une chaîne ASCII. Si les deux premiers caractères sont 0x
, la chaîne est traitée comme un nombre hexadécimal codant les bits appropriés. Par exemple, le préfixe 0x40c0
configuré en combinaison avec mask 0xf0fc
et faisant référence aux deux premiers octets dans l’en-tête L3, indique une recherche 0100
dans les quatre premiers bits (le champ version est égal à 4) et <mask-name>1100 00
dans le champ DSCP IPv4 (DSCP est égal à cs6). Ou, en utilisant le préfixe 0x6c00
configuré en combinaison avec mask 0xffc0
et en se référant aux deux premiers octets de l’en-tête L3, spécifie une recherche pour dans 0110
les quatre premiers bits (le champ version est égal à 6) et <mask-name>1100 00
dans le champ DSCP IPv6 (DSCP est égal à cs6).
Le premier exemple définit un modèle de masque qui sélectionne les deux premiers octets (16 bits) de l’en-tête L3 pour une correspondance flexible :
firewall { flexible-match FM-FIRST-TWO-L3-BYTES { match-start layer-3; byte-offset 0; bit-offset 0; bit-length 16; } }
L’exemple suivant définit un modèle de masque qui sélectionne le troisième au sixième octet (32 bits) de la charge utile du paquet pour une correspondance flexible :
firewall { flexible-match FM-FOUR-PAYLOAD-BYTES { match-start payload; byte-offset 2; bit-offset 0; bit-length 32; } }
Cet exemple montre une correspondance de caractères ASCII pour la chaîne JNPR (caractères ASCII : 0x4a
, , , 0x4e
0x50
0x52
) du troisième au sixième octet de la charge utile du paquet. Le filtre utilise le modèle de FM-FOUR-PAYLOAD-BYTES
masque défini dans l’exemple précédent.
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; } } } }
Cet exemple montre un filtre ccc de famille à la recherche de DSCP égal à cs6
et DSCP ef
, que les paquets encapsulés soient IPv4 ou IPv6. Il utilise le modèle de FM-FIRST-TWO-L3-BYTES
masque défini dans le premier exemple.
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; } } } }
Cet exemple montre comment utiliser une longueur de correspondance, à partir d’un décalage de paquet de couche 2, dans un filtre de pare-feu pour un périphérique QFX5120-32C, QFX5120-48Y ou EX4650 exécutant Junos version 20.1R1. Ici, nous utilisons une longueur de bits de 32 bits et la ethernet-switching
famille (inet
et inet6
sont également pris en charge, tout comme l’utilisation d’un décalage de couche 3).
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; } }
Tableau de l'historique des modifications
La prise en charge des fonctionnalités est déterminée par la plateforme et la version que vous utilisez. Utilisez l' Feature Explorer pour déterminer si une fonctionnalité est prise en charge sur votre plateforme.