Exemple : Transfert de paquets vers l’interface de rejet
Cet exemple montre comment utiliser le routage « ignorer » pour atténuer les attaques par déni de service (DoS), protéger les ressources réseau vitales contre les attaques extérieures, fournir des services de protection aux clients afin que chaque client puisse lancer sa propre protection, et consigner et suivre les tentatives de déni de service.
Conditions préalables
Aucune configuration spéciale au-delà de l’initialisation de l’appareil n’est requise avant de configurer cet exemple.
Présentation
Dans le routage de rejet, les routeurs sont configurés avec des règles qui interdisent à des millions de requêtes dans un court laps de temps d’être envoyées à la même adresse. Si trop de requêtes sont reçues dans un court laps de temps, le routeur rejette simplement les requêtes sans les transférer. Les requêtes sont envoyées à un routeur qui ne transfère pas les paquets. Les routes problématiques sont parfois appelées routes de rejet ou routes à trous noirs. Les types de routes qui doivent être ignorés sont identifiés comme étant les attaques contre les clients à partir d’homologues ou d’autres clients, les attaques de clients vers des pairs ou d’autres clients, les contrôleurs d’attaque, qui sont des hôtes fournissant des instructions d’attaque, et les espaces d’adressage non alloués, connus sous le nom de bogons ou d’adresses IP non valides.
Une fois la tentative d’attaque identifiée, les opérateurs peuvent mettre en place une configuration pour atténuer l’attaque. Pour configurer le routage de rejet dans Junos OS, vous pouvez créer une route statique de rejet pour chaque prochain saut utilisé pour les itinéraires de rejet. Une route statique de rejet utilise l’option discard
.
Par exemple :
user@host# show routing-options
static {
route 192.0.2.101/32 discard;
route 192.0.2.103/32 discard;
route 192.0.2.105/32 discard;
}
user@host> show route protocol static terse inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both A V Destination P Prf Metric 1 Metric 2 Next hop AS path * ? 192.0.2.101/32 S 5 Discard * ? 192.0.2.103/32 S 5 Discard * ? 192.0.2.105/32 S 5 Discard
Une autre stratégie, qui est l’objectif principal de cet exemple, consiste à utiliser la stratégie de routage et l’interface de rejet. Dans cette approche, l’interface de rejet contient le saut suivant que vous affectez aux routes de route nulles. Une interface de rejet ne peut avoir qu’une seule unité logique (unité 0), mais vous pouvez configurer plusieurs adresses IP sur l’unité 0.
Par exemple :
user@host# show interfaces dsc
unit 0 {
family inet {
address 192.0.2.102/32 {
destination 192.0.2.101;
}
address 192.0.2.104/32 {
destination 192.0.2.103;
}
address 192.0.2.106/32 {
destination 192.0.2.105;
}
}
}
user@host> show interfaces terse dsc b Interface Admin Link Proto Local Remote dsc up up dsc.0 up up inet 192.0.2.102 --> 192.0.2.101 192.0.2.104 --> 192.0.2.103 192.0.2.106 --> 192.0.2.105
L’avantage d’utiliser une interface de rejet au lieu d’utiliser des routes statiques de rejet est qu’elle vous permet de configurer et d’affecter des filtres à l’interface pour le comptage, la journalisation et l’échantillonnage du trafic. C’est ce que montre cet exemple.
Pour rejeter réellement des paquets, une stratégie de routage doit être attachée aux sessions BGP. Pour localiser les itinéraires pouvant être ignorés, vous pouvez utiliser un filtre de routage, une liste d’accès ou une valeur de communauté BGP.
Par exemple, voici comment utiliser un filtre de route :
Filtre de routage
protocols { bgp { import blackhole-by-route; } } policy-options { policy-statement blackhole-by-route { term specific-routes { from { route-filter 10.10.10.1/32 exact; route-filter 10.20.20.2/32 exact; route-filter 10.30.30.3/32 exact; route-filter 10.40.40.4/32 exact; } then { next-hop 192.0.2.101 } } } }
Figure 1 montre l’exemple de réseau.

L’exemple inclut trois routeurs sur lesquels des sessions BGP externes (EBGP) sont établies.
L’appareil R1 représente l’appareil attaquant. L’appareil R3 représente le routeur le plus proche de l’appareil attaqué. L’équipement R2 atténue l’attaque en transférant les paquets vers l’interface de rejet.
L’exemple montre un filtre sortant appliqué à l’interface de rejet.
L’un des problèmes liés à l’utilisation d’un seul filtre de route nulle est la visibilité. Tous les paquets de rejet incrémentent le même compteur. Pour voir quelles catégories de paquets sont ignorées, utilisez l’utilisation de la classe de destination (DCU) et associez une classe définie par l’utilisateur à chaque communauté de route nulle. Référencez ensuite les classes DCU dans un filtre de pare-feu. Pour obtenir des exemples connexes, reportez-vous aux sections Exemple : Regroupement des préfixes source et de destination dans une classe de transfert et Exemple : Configuration d’un filtre de limitation de débit en fonction de la classe de destination.
Par rapport à l’utilisation de filtres d’itinéraires et de listes d’accès, l’utilisation d’une valeur communautaire est l’approche la moins difficile sur le plan administratif et la plus évolutive. Par conséquent, c’est l’approche illustrée dans cet exemple.
Par défaut, le saut suivant doit être égal à l’adresse de l’homologue BGP externe (EBGP). La modification du tronçon suivant pour les services de route null nécessite la configuration de la fonctionnalité de sauts multiples sur les sessions EBGP.
Configuration rapide de l’interface de ligne de commande affiche la configuration de tous les périphériques dans Figure 1.
Cette section #configuration756__policy-discard-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 cet exemple, copiez les commandes suivantes, collez-les dans un fichier texte, supprimez les sauts de ligne, modifiez tous les détails nécessaires pour qu’ils correspondent à votre configuration réseau, puis copiez et collez les commandes dans l’interface de ligne de commande au niveau de la [edit]
hiérarchie.
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 set protocols bgp group ext type external set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 10.0.0.2 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 fe-1/2/1 unit 0 family inet address 10.1.0.1/30 set interfaces dsc unit 0 family inet filter output log-discard set interfaces dsc unit 0 family inet address 192.0.2.102/32 destination 192.0.2.101 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set protocols bgp import blackhole-policy set protocols bgp group ext type external set protocols bgp group ext multihop set protocols bgp group ext export dsc-export set protocols bgp group ext neighbor 10.0.0.1 peer-as 100 set protocols bgp group ext neighbor 10.1.0.2 peer-as 300 set policy-options policy-statement blackhole-policy term blackhole-communities from community blackhole-all-routers set policy-options policy-statement blackhole-policy term blackhole-communities then next-hop 192.0.2.101 set policy-options policy-statement dsc-export from route-filter 192.0.2.101/32 exact set policy-options policy-statement dsc-export from route-filter 192.0.2.102/32 exact set policy-options policy-statement dsc-export then community set blackhole-all-routers set policy-options policy-statement dsc-export then accept set policy-options community blackhole-all-routers members 100:5555 set routing-options static route 192.0.2.102/32 next-hop 192.0.2.101 set routing-options autonomous-system 200 set firewall filter log-discard term one then count counter set firewall filter log-discard term one then log
Appareil R3
set interfaces fe-1/2/1 unit 0 family inet address 10.1.0.2/30 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set interfaces lo0 unit 0 family inet address 192.0.2.102/32 set protocols bgp group ext type external set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 10.1.0.1 set routing-options autonomous-system 300
Procédure étape par étape
L’exemple suivant vous oblige à naviguer à différents niveaux dans la hiérarchie de configuration. Pour obtenir des instructions sur cette procédure, reportez-vous Utiliser l’éditeur CLI en mode configuration au Guide de l’utilisateur de l’interface de ligne de commande Junos OS.
Pour configurer l’appareil R2 :
Créez les interfaces des routeurs.
[edit interfaces] user@R2# set fe-1/2/0 unit 0 family inet address 10.0.0.2/30 user@R2# set fe-1/2/1 unit 0 family inet address 10.1.0.1/30 user@R2# set lo0 unit 0 family inet address 192.168.0.2/32
Configurez un filtre de pare-feu qui fait correspondre tous les paquets, compte et journalise les paquets.
[edit firewall filter log-discard term one] user@R2# set then count counter user@R2# set then log
Créez une interface de suppression et appliquez le filtre de pare-feu de sortie.
Les filtres de pare-feu d’entrée n’ont aucun impact dans ce contexte.
[edit interfaces dsc unit 0 family inet] user@R2# set filter output log-discard user@R2# set address 192.0.2.102/32 destination 192.0.2.101
Configurez une route statique qui envoie le saut suivant à l’adresse de destination spécifiée dans l’interface de rejet.
[edit routing-options static] user@R2# set route 192.0.2.102/32 next-hop 192.0.2.101
Configurez l’appairage BGP.
[edit protocols bgp ] user@R2# set group ext type external user@R2# set group ext multihop user@R2# set group ext neighbor 10.0.0.1 peer-as 100 user@R2# set group ext neighbor 10.1.0.2 peer-as 300
Configurez les stratégies de routage.
[edit policy-options policy-statement blackhole-policy term blackhole-communities] user@R2# set from community blackhole-all-routers user@R2# set then next-hop 192.0.2.101 [edit policy-options policy-statement dsc-export] user@R2# set from route-filter 192.0.2.101/32 exact user@R2# set from route-filter 192.0.2.102/32 exact user@R2# set then community set blackhole-all-routers user@R2# set then accept [edit policy-options community blackhole-all-routers] user@R2# set members 100:5555
Appliquez les stratégies de routage.
[edit protocols bgp ] user@R2# set import blackhole-policy user@R2# set group ext export dsc-export
Configurez le numéro du système autonome (AS).
[edit routing-options] user@R2# set autonomous-system 200
Résultats
À partir du mode de configuration, confirmez votre configuration en exécutant les show interfaces
commandes , show protocols
, show policy-options
, show routing-options
et show firewall
. Si la sortie n’affiche pas la configuration prévue, répétez les instructions de cet exemple pour corriger la configuration.
[edit] user@R2# show interfaces fe-1/2/0 { unit 0 { family inet { address 10.0.0.2/30; } } } fe-1/2/1 { unit 0 { family inet { address 10.1.0.1/30; } } } dsc { unit 0 { family inet { filter { output log-discard; } address 192.0.2.102/32 { destination 192.0.2.101; } } } } lo0 { unit 0 { family inet { address 192.168.0.2/32; } } }
user@R2# show protocols bgp { import blackhole-policy; group ext { type external; multihop; export dsc-export; neighbor 10.0.0.1 { peer-as 100; } neighbor 10.1.0.2 { peer-as 300; } } }
user@R2# show policy-options policy-statement blackhole-policy { term blackhole-communities { from community blackhole-all-routers; then { next-hop 192.0.2.101; } } } policy-statement dsc-export { from { route-filter 192.0.2.101/32 exact; route-filter 192.0.2.102/32 exact; } then { community set blackhole-all-routers; accept; } } community blackhole-all-routers members 100:5555;
user@R2# show routing-options static { route 192.0.2.102/32 next-hop 192.0.2.101; } autonomous-system 200;
user@R2# show firewall filter log-discard { term one { then { count counter; log; } } }
Si vous avez terminé de configurer l’appareil, passez commit
en mode de configuration.
Vérification
Vérifiez que la configuration fonctionne correctement.
- Effacement des compteurs de pare-feu
- Envoi d’un ping à l’adresse 192.0.2.101
- Vérification du filtre de sortie
- Vérification de l’attribut Community
Effacement des compteurs de pare-feu
But
Effacez les compteurs pour vous assurer que vous partez d’un état nul (0) connu.
Action
À partir de l’appareil R2, exécutez la
clear firewall
commande.user@R2> clear firewall filter log-discard
À partir de l’appareil R2, exécutez la
show firewall
commande.user@R2> show firewall filter log-discard Filter: /log-discard Counters: Name Bytes Packets counter 0 0
Envoi d’un ping à l’adresse 192.0.2.101
But
Envoyez les paquets à l’adresse de destination.
Action
À partir de l’appareil R1, exécutez la ping
commande.
user@R1> ping 192.0.2.101 PING 192.0.2.101 (192.0.2.101): 56 data bytes ^C --- 192.0.2.101 ping statistics --- 4 packets transmitted, 0 packets received, 100% packet loss
Sens
Comme prévu, la demande ping échoue et aucune réponse n’est envoyée. Les paquets sont en train d’être jetés.
Vérification du filtre de sortie
But
Vérifiez que le filtre de pare-feu de l’appareil R2 fonctionne correctement.
Action
À partir de l’appareil R2, entrez la show firewall filter log-discard
commande.
user@R2> show firewall filter log-discard Filter: log-discard Counters: Name Bytes Packets counter 336 4
Sens
Comme prévu, le compteur est incrémenté.
Le paquet ping apporte 20 octets supplémentaires de surcharge IP ainsi que 8 octets d’en-tête ICMP.
Vérification de l’attribut Community
But
Vérifiez que l’itinéraire est balisé avec l’attribut community.
Action
À partir de l’appareil R1, entrez la show route extensive
commande, à l’aide de l’adresse voisine de l’appareil R2, 192.0.2.101.
user@R1> show route 192.0.2.101 extensive inet.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden) 192.0.2.101/32 (1 entry, 1 announced) TSI: KRT in-kernel 192.0.2.101/32 -> {10.0.0.2} *BGP Preference: 170/-101 Next hop type: Router, Next hop index: 684 Address: 0x94141d8 Next-hop reference count: 2 Source: 10.0.0.2 Next hop: 10.0.0.2 via fe-1/2/0.0, selected Session Id: 0x8000a State: <Active Ext> Local AS: 100 Peer AS: 200 Age: 53:03 Validation State: unverified Task: BGP_200.10.0.0.2+63097 Announcement bits (1): 2-KRT AS path: 200 I Communities: 100:5555 Accepted Localpref: 100 Router ID: 192.168.0.2
Sens
Comme prévu, lorsque l’appareil R2 annonce l’itinéraire 192.0.2.101 vers l’appareil R1, l’appareil R2 ajoute la balise de communauté 100:5555.