Exemple : Configuration d’un filtre de pare-feu sans état pour se protéger contre les inondations TCP et ICMP
Cet exemple montre comment créer un filtre de pare-feu sans état qui protège contre les attaques par déni de service TCP et ICMP.
Conditions préalables
Aucune configuration spéciale au-delà de l’initialisation de l’équipement n’est requise avant de configurer des filtres de pare-feu sans état.
Présentation
Dans cet exemple, nous créons un filtre de pare-feu sans état appelé protect-RE
pour contrôler les paquets TCP et ICMP. Il utilise les mécanismes de contrôle décrits ici :
tcp-connection-policer
: ce mécanisme de contrôle limite le trafic TCP à 1 000 000 bits par seconde (bps) avec une taille de rafale maximale de 15 000 octets. Le trafic dépassant l’une ou l’autre de ces limites est ignoré.icmp-policer
: ce mécanisme de contrôle limite le trafic ICMP à 1 000 000 bits/s avec une taille de rafale maximale de 15 000 octets. Le trafic dépassant l’une ou l’autre de ces limites est ignoré.
Lorsque vous spécifiez des limites, la limite de bande passante peut être comprise entre 32 000 bits/s et 32 000 000 000 bits/s et la limite de taille de rafale peut être comprise entre 1 500 octets et 100 000 000 octets. Utilisez les abréviations suivantes pour spécifier les limites : K (1 000), M (1 000 000) et G (1 000 000 000).
Chaque mécanisme de contrôle est incorporé dans l’action d’un terme de filtre. Cet exemple comprend les termes suivants :
tcp-connection-term
—Gère certains paquets TCP dont l’adresse source est 192.168.0.0/24 ou 10.0.0.0/24. Ces adresses sont définies dans la liste destrusted-addresses
préfixes.Les paquets filtrés incluent les paquets La
tcp-established
tcp-established
condition de correspondance est un alias de la conditiontcp-flags “(ack | rst)”
de correspondance de champ binaire , qui indique une session TCP établie, mais pas le premier paquet d’une connexion TCP.icmp-term
— Gère les paquets ICMP. Tous les paquets ICMP sont comptés dans leicmp-counter
compteur.
Vous pouvez déplacer des termes à l’intérieur du filtre de pare-feu à l’aide de la insert
commande. Voir l’insert dans le Guide de l’utilisateur de la CLI de Junos OS.
Vous pouvez appliquer un pare-feu sans état aux côtés d’entrée ou de sortie, ou aux deux, d’une interface. Pour filtrer les paquets transitant par l’équipement, appliquez le filtre de pare-feu à toute interface autre que le moteur de routage. Pour filtrer les paquets provenant ou à destination du moteur de routage, appliquez le filtre de pare-feu à l’interface de bouclage (lo0).
Figure 1 montre l’exemple de réseau.
Étant donné que ce filtre de pare-feu limite le trafic du moteur de routage aux paquets TCP, les protocoles de routage qui utilisent d’autres protocoles de transport pour la couche 4 ne peuvent pas établir de sessions lorsque ce filtre est actif. Pour illustrer, cet exemple configure OSPF entre l’équipement R1 et l’équipement R2.
Configuration rapide de l’interface de ligne de commande affiche la configuration de tous les périphériques dans Figure 1.
Cette section #configuration1102__policy-firewall-tcp-icmp-st décrit les étapes à suivre sur l’appareil R2.
Configuration
Procédure
Configuration rapide de l’interface de ligne de commande
Pour configurer rapidement le filtre de pare-feu sans état, copiez les commandes suivantes dans un fichier texte, supprimez les sauts de ligne, puis collez-les dans l’interface de ligne de commande.
Appareil 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 primary set interfaces lo0 unit 0 family inet address 172.16.0.1/32 set protocols bgp group ext type external set protocols bgp group ext export send-direct set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 10.0.0.2 set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set protocols ospf area 0.0.0.0 interface lo0.0 passive set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set routing-options router-id 192.168.0.1 set routing-options autonomous-system 100
Appareil R2
set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.2/30 set interfaces lo0 unit 0 family inet filter input protect-RE set interfaces lo0 unit 0 family inet address 192.168.0.2/32 primary set interfaces lo0 unit 0 family inet address 172.16.0.2/32 set protocols bgp group ext type external set protocols bgp group ext export send-direct set protocols bgp group ext neighbor 10.0.0.1 peer-as 100 set protocols ospf area 0.0.0.0 interface lo0.0 passive set protocols ospf area 0.0.0.0 interface fe-1/2/0.0 set policy-options prefix-list trusted-addresses 10.0.0.0/24 set policy-options prefix-list trusted-addresses 192.168.0.0/24 set policy-options policy-statement send-direct term 1 from protocol direct set policy-options policy-statement send-direct term 1 then accept set routing-options router-id 192.168.0.2 set routing-options autonomous-system 200 set firewall family inet filter protect-RE term tcp-connection-term from source-prefix-list trusted-addresses set firewall family inet filter protect-RE term tcp-connection-term from protocol tcp set firewall family inet filter protect-RE term tcp-connection-term from tcp-established set firewall family inet filter protect-RE term tcp-connection-term then policer tcp-connection-policer set firewall family inet filter protect-RE term tcp-connection-term then accept set firewall family inet filter protect-RE term icmp-term from source-prefix-list trusted-addresses set firewall family inet filter protect-RE term icmp-term from protocol icmp set firewall family inet filter protect-RE term icmp-term then policer icmp-policer set firewall family inet filter protect-RE term icmp-term then count icmp-counter set firewall family inet filter protect-RE term icmp-term then accept set firewall policer tcp-connection-policer filter-specific set firewall policer tcp-connection-policer if-exceeding bandwidth-limit 1m set firewall policer tcp-connection-policer if-exceeding burst-size-limit 15k set firewall policer tcp-connection-policer then discard set firewall policer icmp-policer filter-specific set firewall policer icmp-policer if-exceeding bandwidth-limit 1m set firewall policer icmp-policer if-exceeding burst-size-limit 15k set firewall policer icmp-policer then discard
Procédure étape par étape
L’exemple suivant vous oblige à naviguer à différents niveaux dans la hiérarchie de configuration. Pour plus d’informations sur la navigation dans l’interface de ligne de commande, reportez-vous à la section Utiliser l’éditeur CLI en mode configuration.
Pour configurer le filtre de pare-feu sans état afin d’ignorer :
Configurez les interfaces de l’appareil.
[edit interfaces fe-1/2/0 unit 0 family inet ] user@R2# set address 10.0.0.2/30 [edit interfaces lo0 unit 0 family inet] user@R2# set address 192.168.0.2/32 primary user@R2# set address 172.16.0.2/32
Configurez la session d’appairage BGP.
[edit protocols bgp group ext] user@R2# set type external user@R2# set export send-direct user@R2# set neighbor 10.0.0.1 peer-as 100
Configurez le numéro du système autonome (AS) et l’ID du routeur.
[edit routing-options] user@R2# set autonomous-system 200 user@R2# set router-id 192.168.0.2
Configurez OSPF.
[edit protocols ospf area 0.0.0.0] user@R2# set interface lo0.0 passive user@R2# set interface fe-1/2/0.0
Définissez la liste des adresses de confiance.
[edit policy-options prefix-list trusted-addresses] user@R2# set 10.0.0.0/24 user@R2# set 192.168.0.0/24
Configurez une stratégie pour annoncer des itinéraires directs.
[edit policy-options policy-statement send-direct term 1] user@R2# set from protocol direct user@R2# set then accept
Configurez le mécanisme de contrôle TCP.
[edit firewall policer tcp-connection-policer] user@R2# set filter-specific user@R2# set if-exceeding bandwidth-limit 1m user@R2# set if-exceeding burst-size-limit 15k user@R2# set then discard
Créez le mécanisme de contrôle ICMP.
[edit firewall policer icmp-policer] user@R2# set filter-specific user@R2# set if-exceeding bandwidth-limit 1m user@R2# set if-exceeding burst-size-limit 15k user@R2# set then discard
Configurez les règles de filtrage TCP.
[edit firewall family inet filter protect-RE term tcp-connection-term] user@R2# set from source-prefix-list trusted-addresses user@R2# set from protocol tcp user@R2# set from tcp-established user@R2# set then policer tcp-connection-policer user@R2# set then accept
Configurez les règles de filtrage ICMP.
[edit firewall family inet filter protect-RE term icmp-term] user@R2# set from source-prefix-list trusted-addresses user@R2# set from protocol icmp user@R2# set then policer icmp-policer user@R2# set then count icmp-counter user@R2# set then accept
Appliquez le filtre à l’interface de bouclage.
[edit interfaces lo0 unit 0] user@R2# set family inet filter input protect-RE
Résultats
Confirmez votre configuration en entrant les show interfaces
commandes , , show policy-options
, show protocols
show routing-options
et à partir show firewall
du mode de configuration. Si la sortie n’affiche pas la configuration prévue, répétez les instructions de cet exemple pour corriger la configuration.
user@R2# show interfaces fe-1/2/0 { unit 0 { family inet { address 10.0.0.2/30; } } } lo0 { unit 0 { family inet { filter { input protect-RE; } address 192.168.0.2/32 { primary; } address 172.16.0.2/32; } } }
user@R2# show protocols bgp { group ext { type external; export send-direct; neighbor 10.0.0.1 { peer-as 100; } } } ospf { area 0.0.0.0 { interface lo0.0 { passive; } interface fe-1/2/0.0; } }
user@R2# show policy-options prefix-list trusted-addresses { 10.0.0.0/24; 192.168.0.0/24; } policy-statement send-direct { term 1 { from protocol direct; then accept; } }
user@R2# show routing-options router-id 192.168.0.2; autonomous-system 200;
user@R2# show firewall family inet { filter protect-RE { term tcp-connection-term { from { source-prefix-list { trusted-addresses; } protocol tcp; tcp-established; } then { policer tcp-connection-policer; accept; } } term icmp-term { from { source-prefix-list { trusted-addresses; } protocol icmp; } then { policer icmp-policer; count icmp-counter; accept; } } } } policer tcp-connection-policer { filter-specific; if-exceeding { bandwidth-limit 1m; burst-size-limit 15k; } then discard; } policer icmp-policer { filter-specific; if-exceeding { bandwidth-limit 1m; burst-size-limit 15k; } then discard; } }
Si vous avez terminé de configurer l’appareil, passez commit
en mode de configuration.
Vérification
Vérifiez que la configuration fonctionne correctement.
Pour vérifier le mécanisme de contrôle TCP, vous pouvez utiliser un outil de génération de paquets. Cette tâche n’est pas illustrée ici.
- Affichage des filtres de pare-feu sans état en vigueur
- Utilisation de telnet pour vérifier la condition établie par TCP dans le filtre de pare-feu TCP
- Utilisation de telnet pour vérifier la condition de préfixes approuvés dans le filtre de pare-feu TCP
- Utilisation d’OSPF pour vérifier le filtre du pare-feu TCP
- Vérification du filtre du pare-feu ICMP
Affichage des filtres de pare-feu sans état en vigueur
But
Vérifiez la configuration du filtre du pare-feu.
Action
À partir du mode opérationnel, entrez la show firewall
commande.
user@R2> show firewall Filter: protect-RE Counters: Name Bytes Packets icmp-counter 0 0 Policers: Name Bytes Packets icmp-policer 0 tcp-connection-policer 0
Sens
La sortie affiche le filtre, le compteur et les mécanismes de contrôle qui sont en vigueur sur l’appareil R2.
Utilisation de telnet pour vérifier la condition établie par TCP dans le filtre de pare-feu TCP
But
Assurez-vous que le trafic telnet fonctionne comme prévu.
Action
Vérifiez que l’équipement ne peut établir que des sessions TCP avec des hôtes qui remplissent la from tcp-established
condition.
À partir de l’équipement R2, assurez-vous que la session BGP avec l’appareil R1 est établie.
user@R2> show bgp summary | match down Groups: 1 Peers: 1 Down peers: 0
De l’appareil R2, telnet à l’appareil R1.
user@R2> telnet 192.168.0.1 Trying 192.168.0.1... Connected to R1.example.net. Escape character is '^]'. R1 (ttyp4) login:
De l’appareil R1, telnet à l’appareil R2.
user@R1> telnet 192.168.0.2 Trying 192.168.0.2... telnet: connect to address 192.168.0.2: Operation timed out telnet: Unable to connect to remote host
Sur l’appareil R2, désactivez la condition de
from tcp-established
correspondance.[edit firewall family inet filter protect-RE term tcp-connection-term] user@R2# deactivate from tcp-established user@R2# commit
À partir de l’appareil R1, essayez à nouveau d’utiliser telnet vers l’appareil R2.
user@R1> telnet 192.168.0.1 Trying 192.168.0.2... Connected to R2.example.net. Escape character is '^]'. R2 (ttyp4) login:
Sens
Vérifiez les informations suivantes :
Comme prévu, la session BGP est établie. On ne s’attend pas à ce que la
from tcp-established
condition de correspondance bloque l’établissement d’une session BGP.À partir de l’appareil R2, vous pouvez effectuer un telnet vers l’appareil R1. Aucun filtre de pare-feu n’est configuré sur l’appareil R1, il s’agit donc du comportement attendu.
À partir de l’appareil R1, vous ne pouvez pas effectuer d’enregistrement telnet vers l’appareil R2. Telnet utilise TCP comme protocole de transport, ce résultat peut donc surprendre. La cause de l’absence de connectivité telnet est la
from tcp-established
condition de correspondance. Cette condition de correspondance limite le type de trafic TCP accepté pour l’équipement R2. Une fois cette condition de correspondance désactivée, la session telnet réussit.
Utilisation de telnet pour vérifier la condition de préfixes approuvés dans le filtre de pare-feu TCP
But
Assurez-vous que le trafic telnet fonctionne comme prévu.
Action
Vérifiez que l’équipement ne peut établir que des sessions telnet avec un hôte dont l’adresse IP correspond à l’une des adresses sources approuvées. Par exemple, connectez-vous à l’appareil avec la telnet
commande d’un autre hôte avec l’un des préfixes d’adresse approuvée. Vérifiez également que les sessions Telnet avec des adresses sources non approuvées sont bloquées.
Depuis l’équipement R1, telnet vers l’appareil R2 à partir d’une adresse source non approuvée.
user@R1> telnet 172.16.0.2 source 172.16.0.1 Trying 172.16.0.2... ^C
À partir de Device R2, ajoutez 172.16/16 à la liste des préfixes approuvés.
[edit policy-options prefix-list trusted-addresses] user@R2# set 172.16.0.0/16 user@R2# commit
À partir de l’appareil R1, essayez à nouveau d’utiliser telnet vers l’appareil R2.
user@R1> telnet 172.16.0.2 source 172.16.0.1 Trying 172.16.0.2... Connected to R2.example.net. Escape character is '^]'. R2 (ttyp4) login:
Sens
Vérifiez les informations suivantes :
À partir de l’appareil R1, vous ne pouvez pas effectuer d’enregistrement telnet vers l’appareil R2 avec une adresse source non approuvée. Une fois que le préfixe 172.16/16 est ajouté à la liste des préfixes approuvés, la demande telnet à partir de l’adresse source 172.16.0.1 est acceptée.
L’établissement d’une session OSPF est bloqué. OSPF n’utilise pas TCP comme protocole de transport. Une fois la condition de correspondance désactivée, l’établissement de la
from protocol tcp
session OSPF n’est pas bloqué.
Utilisation d’OSPF pour vérifier le filtre du pare-feu TCP
But
Assurez-vous que le trafic OSPF fonctionne comme prévu.
Action
Vérifiez que l’équipement ne parvient pas à établir une connectivité OSPF.
À partir de l’appareil R1, vérifiez les sessions OSPF.
user@R1> show ospf neighbor Address Interface State ID Pri Dead 10.0.0.2 fe-1/2/0.0 Init 192.168.0.2 128 34
À partir de l’appareil R2, vérifiez les sessions OSPF.
user@R2> show ospf neighbor
À partir de l’appareil R2, supprimez la
from protocol tcp
condition de correspondance.[edit firewall family inet filter protect-RE term tcp-connection-term] user@R2# deactivate from protocol user@R2# commit
À partir de l’appareil R1, vérifiez à nouveau les sessions OSPF.
user@R1> show ospf neighbor Address Interface State ID Pri Dead 10.0.0.2 fe-1/2/0.0 Full 192.168.0.2 128 36
À partir de l’appareil R2, vérifiez à nouveau les sessions OSPF.
user@R2> show ospf neighbor Address Interface State ID Pri Dead 10.0.0.1 fe-1/2/0.0 Full 192.168.0.1 128 39
Sens
Vérifiez les informations suivantes :
L’établissement d’une session OSPF est bloqué. OSPF n’utilise pas TCP comme protocole de transport. Une fois la condition de correspondance désactivée, l’établissement de la
from protocol tcp
session OSPF réussit.
Vérification du filtre du pare-feu ICMP
But
Vérifiez que les paquets ICMP sont contrôlés et comptés. Assurez-vous également que les requêtes ping sont ignorées lorsqu’elles proviennent d’une adresse source non fiable.
Action
Annulez les modifications de configuration apportées lors des étapes de vérification précédentes.
Réactivez les paramètres du pare-feu TCP et supprimez l’adresse de la source de confiance 172.16/16.
[edit firewall family inet filter protect-RE term tcp-connection-term] user@R2# activate from protocol user@R2# activate from tcp-established [edit policy-options prefix-list trusted-addresses] user@R2# delete 172.16.0.0/16 user@R2# commit
À partir de l’appareil R1, envoyez une requête ping à l’interface de bouclage sur l’appareil R2.
user@R1> ping 192.168.0.2 rapid count 600 size 2000 PING 192.168.0.2 (192.168.0.2): 2000 data bytes !!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!!!.!!!!!!!!.!!!!!!!!.!!!!!!!! --- 192.168.0.2 ping statistics --- 600 packets transmitted, 536 packets received, 10% packet loss pinground-trip min/avg/max/stddev = 2.976/3.405/42.380/2.293 ms
À partir de l’appareil R2, vérifiez les statistiques du pare-feu.
user@R2> show firewall Filter: protect-RE Counters: Name Bytes Packets icmp-counter 1180804 1135 Policers: Name Bytes Packets icmp-policer 66 tcp-connection-policer 0
À partir d’une adresse source non fiable sur l’appareil R1, envoyez une requête ping à l’interface de bouclage de l’appareil R2.
user@R1> ping 172.16.0.2 source 172.16.0.1 PING 172.16.0.2 (172.16.0.2): 56 data bytes ^C --- 172.16.0.2 ping statistics --- 14 packets transmitted, 0 packets received, 100% packet loss
Sens
Vérifiez les informations suivantes :
La sortie ping indique qu’une perte de paquets de 10 % se produit.
Le compteur de paquets ICMP est incrémenté et le contrôleur icmp est incrémenté.
L’appareil R2 n’envoie pas de réponses ICMP à la
ping 172.16.0.2 source 172.16.0.1
commande.