Configuration BIG-IP
- (Exemple de domaine de routage 0)
Toutes les commandes ci-dessous sont exécutées dans tmsh sur BIG-IP. Adaptez les noms d’objets et les adresses IP selon vos besoins.
Pour la configuration générale des tunnels GRE sur BIG-IP, consultez Configuring a GRE Tunnel Using BIG-IP. Pour la configuration initiale du routage avec le Cloud, consultez K000147949.
[root@bigip:Active]# tmshroot@(bigip)(cfg-sync Standalone)(Active)(/Common)(tmos)#IP locales externes
Section intitulée « IP locales externes »Points de terminaison GRE
Ce sont les adresses IP de chaque unité BIG-IP utilisées comme points
de terminaison du tunnel GRE, généralement sur le VLAN externe. Chaque unité possède sa propre
IP locale externe non flottante (traffic-group-local-only) :
BIG-IP-A :
create net self xc-ddos-v4-self-a \ vlan external \ traffic-group traffic-group-local-only \ allow-service add { icmp:any gre:any } \ address xBIGIP_A_OUTER_V4x/24
create net self xc-ddos-v6-self-a \ vlan external \ traffic-group traffic-group-local-only \ allow-service add { icmp:any gre:any } \ address xBIGIP_A_OUTER_V6x/64BIG-IP-B :
create net self xc-ddos-v4-self-b \ vlan external \ traffic-group traffic-group-local-only \ allow-service add { icmp:any gre:any } \ address xBIGIP_B_OUTER_V4x/24
create net self xc-ddos-v6-self-b \ vlan external \ traffic-group traffic-group-local-only \ allow-service add { icmp:any gre:any } \ address xBIGIP_B_OUTER_V6x/64Tunnels GRE
Section intitulée « Tunnels GRE »Chaque tunnel relie une unité BIG-IP à un point de terminaison du centre d’épuration Cloud. Créez deux tunnels par unité (un vers chaque centre d’épuration géolocalisé), pour un total de quatre tunnels logiques au sein de la paire HA :
Tunnel C1-T1 — BIG-IP-A vers xCENTER_1x :
create net tunnels tunnel xc-ddos-c1t1-v4 \ local-address xBIGIP_A_OUTER_V4x \ profile gre \ remote-address xXC_C1_OUTER_V4x
create net tunnels tunnel xc-ddos-c1t1-v6 \ local-address xBIGIP_A_OUTER_V6x \ profile gre \ remote-address xXC_C1_OUTER_V6xTunnel C2-T1 — BIG-IP-A vers xCENTER_2x :
create net tunnels tunnel xc-ddos-c2t1-v4 \ local-address xBIGIP_A_OUTER_V4x \ profile gre \ remote-address xXC_C2_OUTER_V4x
create net tunnels tunnel xc-ddos-c2t1-v6 \ local-address xBIGIP_A_OUTER_V6x \ profile gre \ remote-address xXC_C2_OUTER_V6xTunnel C1-T2 — BIG-IP-B vers xCENTER_1x :
create net tunnels tunnel xc-ddos-c1t2-v4 \ local-address xBIGIP_B_OUTER_V4x \ profile gre \ remote-address xXC_C1_OUTER_V4x
create net tunnels tunnel xc-ddos-c1t2-v6 \ local-address xBIGIP_B_OUTER_V6x \ profile gre \ remote-address xXC_C1_OUTER_V6xTunnel C2-T2 — BIG-IP-B vers xCENTER_2x :
create net tunnels tunnel xc-ddos-c2t2-v4 \ local-address xBIGIP_B_OUTER_V4x \ profile gre \ remote-address xXC_C2_OUTER_V4x
create net tunnels tunnel xc-ddos-c2t2-v6 \ local-address xBIGIP_B_OUTER_V6x \ profile gre \ remote-address xXC_C2_OUTER_V6xLes noms des tunnels (xc-ddos-c1t1-v4, etc.) sont arbitraires ; utilisez votre propre
convention de nommage.
Définir le MTU du tunnel
Section intitulée « Définir le MTU du tunnel »L’encapsulation GRE ajoute une surcharge (24 octets pour l’en-tête externe IPv4, 44 octets pour l’en-tête externe IPv6). Sans MTU explicite, les paquets proches de 1500 octets seront fragmentés ou rejetés. Définissez le MTU du tunnel pour tenir compte de la surcharge d’encapsulation :
modify net tunnels tunnel xc-ddos-c1t1-v4 mtu 1476modify net tunnels tunnel xc-ddos-c1t1-v6 mtu 1456modify net tunnels tunnel xc-ddos-c1t2-v4 mtu 1476modify net tunnels tunnel xc-ddos-c1t2-v6 mtu 1456modify net tunnels tunnel xc-ddos-c2t1-v4 mtu 1476modify net tunnels tunnel xc-ddos-c2t1-v6 mtu 1456modify net tunnels tunnel xc-ddos-c2t2-v4 mtu 1476modify net tunnels tunnel xc-ddos-c2t2-v6 mtu 1456Anti-usurpation GRE (ACL amont)
Section intitulée « Anti-usurpation GRE (ACL amont) »GRE (protocole IP 47) ne fournit pas d’authentification. Toute personne qui connaît la paire d’IP externes peut injecter du trafic dans le tunnel. Appliquez des ACL sur le routeur ou le pare-feu amont pour restreindre le GRE entrant aux seules adresses IP source des centres d’épuration Cloud attendus :
! Example upstream router ACL (Cisco IOS style)ip access-list extended ALLOW-XC-GRE permit gre host xXC_C1_OUTER_V4x host xBIGIP_A_OUTER_V4x permit gre host xXC_C2_OUTER_V4x host xBIGIP_A_OUTER_V4x permit gre host xXC_C1_OUTER_V4x host xBIGIP_B_OUTER_V4x permit gre host xXC_C2_OUTER_V4x host xBIGIP_B_OUTER_V4x deny gre any host xBIGIP_A_OUTER_V4x log deny gre any host xBIGIP_B_OUTER_V4x logIP locales internes (peering BGP)
Section intitulée « IP locales internes (peering BGP) »Attribuez des adresses IP internes (à l’intérieur du tunnel GRE) qui établiront la
session BGP avec le Cloud. Le paramètre allow-service doit
inclure tcp:179 (BGP) pour que la session de peering s’établisse. L’ajout
d’icmp:any sur les IP locales internes active la PMTUD et les tests
d’accessibilité à travers le tunnel :
Tunnel C1-T1 — BIG-IP-A vers xCENTER_1x :
create net self xc-ddos-c1t1-inner-v4 \ vlan xc-ddos-c1t1-v4 \ traffic-group traffic-group-local-only \ allow-service add { tcp:179 icmp:any } \ address xBIGIP_C1_T1_INNER_V4x/30
create net self xc-ddos-c1t1-inner-v6 \ vlan xc-ddos-c1t1-v6 \ traffic-group traffic-group-local-only \ allow-service add { tcp:179 icmp:any } \ address xBIGIP_C1_T1_INNER_V6x/64Tunnel C2-T1 — BIG-IP-A vers xCENTER_2x :
create net self xc-ddos-c2t1-inner-v4 \ vlan xc-ddos-c2t1-v4 \ traffic-group traffic-group-local-only \ allow-service add { tcp:179 icmp:any } \ address xBIGIP_C2_T1_INNER_V4x/30
create net self xc-ddos-c2t1-inner-v6 \ vlan xc-ddos-c2t1-v6 \ traffic-group traffic-group-local-only \ allow-service add { tcp:179 icmp:any } \ address xBIGIP_C2_T1_INNER_V6x/64Tunnel C1-T2 — BIG-IP-B vers xCENTER_1x :
create net self xc-ddos-c1t2-inner-v4 \ vlan xc-ddos-c1t2-v4 \ traffic-group traffic-group-local-only \ allow-service add { tcp:179 icmp:any } \ address xBIGIP_C1_T2_INNER_V4x/30
create net self xc-ddos-c1t2-inner-v6 \ vlan xc-ddos-c1t2-v6 \ traffic-group traffic-group-local-only \ allow-service add { tcp:179 icmp:any } \ address xBIGIP_C1_T2_INNER_V6x/64Tunnel C2-T2 — BIG-IP-B vers xCENTER_2x :
create net self xc-ddos-c2t2-inner-v4 \ vlan xc-ddos-c2t2-v4 \ traffic-group traffic-group-local-only \ allow-service add { tcp:179 icmp:any } \ address xBIGIP_C2_T2_INNER_V4x/30
create net self xc-ddos-c2t2-inner-v6 \ vlan xc-ddos-c2t2-v6 \ traffic-group traffic-group-local-only \ allow-service add { tcp:179 icmp:any } \ address xBIGIP_C2_T2_INNER_V6x/64Utilisez imish pour configurer BGP pour le domaine de routage 0.
-
Entrez dans imish pour le domaine de routage 0 :
bash tmsh run /util imish -r 0 -
Entrez en mode privilégié et en mode de configuration :
imish localhost.localdomain[0]> enablelocalhost.localdomain[0]# configure terminal -
Exemple de configuration BGP :
BIG-IP-A (router-id xBIGIP_A_OUTER_V4x, voisins C1-T1 + C2-T1) :
router bgp xCUSTOMER_ASNx no synchronization bgp log-neighbor-changes no auto-summary bgp router-id xBIGIP_A_OUTER_V4x bgp graceful-restart restart-time 120 redistribute kernel route-map route-to-cloud-ipv4
neighbor cloud peer-group neighbor cloud remote-as xF5_XC_ASNx neighbor cloud description cloud-peer-group neighbor cloud password xBGP_PASSWORDx neighbor cloud timers 10 30 neighbor cloud soft-reconfiguration inbound neighbor cloud version 4 neighbor cloud capability graceful-restart neighbor cloud send-community neighbor cloud ttl-security hops 1 neighbor cloud maximum-prefix 10 warning-only neighbor cloud prefix-list deny-all in neighbor cloud prefix-list route-to-cloud-ipv4 out
neighbor xXC_C1_T1_INNER_V4x peer-group cloud neighbor xXC_C1_T1_INNER_V4x description cloud-c1-t1-v4
neighbor xXC_C2_T1_INNER_V4x peer-group cloud neighbor xXC_C2_T1_INNER_V4x description cloud-c2-t1-v4
address-family ipv6 redistribute kernel route-map route-to-cloud-ipv6 neighbor cloud activate neighbor cloud soft-reconfiguration inbound neighbor cloud capability graceful-restart neighbor cloud prefix-list deny-all6 in neighbor cloud prefix-list route-to-cloud-ipv6 out neighbor xXC_C1_T1_INNER_V6x peer-group cloud neighbor xXC_C1_T1_INNER_V6x description cloud-c1-t1-v6 neighbor xXC_C2_T1_INNER_V6x peer-group cloud neighbor xXC_C2_T1_INNER_V6x description cloud-c2-t1-v6 exit-address-family
ip prefix-list deny-all deny 0.0.0.0/0 le 32ip prefix-list route-to-cloud-ipv4 permit xPROTECTED_PREFIX_V4x
ipv6 prefix-list deny-all6 deny ::/0 le 128ipv6 prefix-list route-to-cloud-ipv6 permit xPROTECTED_PREFIX_V6x
ip route xPROTECTED_NET_V4x xPROTECTED_MASK_V4x null0 201ipv6 route xPROTECTED_PREFIX_V6x null0 201
route-map route-to-cloud-ipv4 permit 10 match ip address prefix-list route-to-cloud-ipv4 set origin igp
route-map route-to-cloud-ipv6 permit 10 match ipv6 address prefix-list route-to-cloud-ipv6 set origin igpBIG-IP-B (router-id xBIGIP_B_OUTER_V4x, voisins C1-T2 + C2-T2) :
router bgp xCUSTOMER_ASNx no synchronization bgp log-neighbor-changes no auto-summary bgp router-id xBIGIP_B_OUTER_V4x bgp graceful-restart restart-time 120 redistribute kernel route-map route-to-cloud-ipv4
neighbor cloud peer-group neighbor cloud remote-as xF5_XC_ASNx neighbor cloud description cloud-peer-group neighbor cloud password xBGP_PASSWORDx neighbor cloud timers 10 30 neighbor cloud soft-reconfiguration inbound neighbor cloud version 4 neighbor cloud capability graceful-restart neighbor cloud send-community neighbor cloud ttl-security hops 1 neighbor cloud maximum-prefix 10 warning-only neighbor cloud prefix-list deny-all in neighbor cloud prefix-list route-to-cloud-ipv4 out
neighbor xXC_C1_T2_INNER_V4x peer-group cloud neighbor xXC_C1_T2_INNER_V4x description cloud-c1-t2-v4
neighbor xXC_C2_T2_INNER_V4x peer-group cloud neighbor xXC_C2_T2_INNER_V4x description cloud-c2-t2-v4
address-family ipv6 redistribute kernel route-map route-to-cloud-ipv6 neighbor cloud activate neighbor cloud soft-reconfiguration inbound neighbor cloud capability graceful-restart neighbor cloud prefix-list deny-all6 in neighbor cloud prefix-list route-to-cloud-ipv6 out neighbor xXC_C1_T2_INNER_V6x peer-group cloud neighbor xXC_C1_T2_INNER_V6x description cloud-c1-t2-v6 neighbor xXC_C2_T2_INNER_V6x peer-group cloud neighbor xXC_C2_T2_INNER_V6x description cloud-c2-t2-v6 exit-address-family
ip prefix-list deny-all deny 0.0.0.0/0 le 32ip prefix-list route-to-cloud-ipv4 permit xPROTECTED_PREFIX_V4x
ipv6 prefix-list deny-all6 deny ::/0 le 128ipv6 prefix-list route-to-cloud-ipv6 permit xPROTECTED_PREFIX_V6x
ip route xPROTECTED_NET_V4x xPROTECTED_MASK_V4x null0 201ipv6 route xPROTECTED_PREFIX_V6x null0 201
route-map route-to-cloud-ipv4 permit 10 match ip address prefix-list route-to-cloud-ipv4 set origin igp
route-map route-to-cloud-ipv6 permit 10 match ipv6 address prefix-list route-to-cloud-ipv6 set origin igpExplication des paramètres BGP clés :
timers 10 30— Keepalive toutes les 10 s, durée de maintien de 30 s. La valeur par défaut (60 / 180) est trop lente pour le basculement lors d’une mitigation DDoS. Coordonnez les valeurs des minuteries avec le SOC afin qu’elles correspondent des deux côtés.ttl-security hops 1— Active GTSM (RFC 5082). Étant donné que les sessions BGP sont en saut unique sur le tunnel GRE, cela empêche l’usurpation BGP distante en exigeant un TTL = 255 sur les paquets BGP entrants.maximum-prefix 10 warning-only— Mesure de défense en profondeur. Même si la liste de préfixes entrants refuse toutes les routes, cela génère un avertissement si le pair envoie des préfixes de manière inattendue.redistribute kernel— Injecte les routes statiquesnull0dans BGP via la route-map. Une alternative consiste à utiliser des instructionsnetworkexplicites (ex.network xPROTECTED_PREFIX_V4x), qui sont plus précises car seul le préfixe exact est annoncé indépendamment des autres routes du noyau. Les deux approches fonctionnent ;redistribute kernelavec une route-map stricte est présenté ici pour plus de flexibilité.
Les routes statiques null0 avec une distance administrative plus élevée (201)
garantissent que les préfixes existent dans la table de routage du noyau, afin qu’ils puissent
être redistribués vers le Cloud via BGP sans affecter le routage
normal en dehors des conditions d’attaque. Si le préfixe protégé
existe déjà dans la table de routage provenant d’une autre source avec une distance
administrative inférieure, la route null0 ne sera pas active et
la redistribution pourra échouer — vérifiez avec show ip route après
la configuration.