Sécurité des réseaux : savoir utiliser les filtres pour limiter les fuites

Par Melchior Aelmans, Juniper Networks

La première étape pour sécuriser le routage consiste à utiliser des filtres de base. Voici donc ci-dessous les principaux filtres permettant d’identifier et de rejeter les « mauvaises » routes.

Filtrer les bogons ASN

Une notification de routage BGP contient un champ, appelé AS-path, qui se compose des numéros d’AS (Autonomy System Number) de tous les réseaux qui assurent la diffusion de cette notification de routage jusqu’à la destination, le numéro d’AS d’origine. Les AS-path présents dans la table de routage sont automatiquement créés lorsque chaque réseau qui transmet une annonce de routage ajoute son propre numéro d’AS au trajet. Enfin, il est également possible d’ajouter manuellement un ou plusieurs numéros d’AS pour influer sur les décisions d’acheminement.

En plus des numéros d’AS publics attribués par les RIR, il en existe des privés qui peuvent être utilisés à diverses fins (comme l’échange de trafic privé avec des réseaux qui ne nécessitent pas de numéro AS lié aux RIR). Jusqu’à peu, tous les numéros d’AS étaient de 16 bits (de 0 à 65 535), mais aujourd’hui, il existe également des numéros de 32 bits, universellement pris en charge. On distingue différents types de numéros d’AS :

  • 0 : réservés ;
  • 1 à 64.495 : numéros AS publics ;
  • 64.496 à 64.511 : réservés aux documentations ;
  • 64.512 à 65.534 : numéros AS privés pour une utilisation interne ;
  • 65.535 : réservé ;
  • 4.200.000.000.000 à 4.294.967.294 : numéros AS privés de 32 bits.

Les numéros d’AS privés sont souvent utilisés pour les réseaux qui n’ont pas de numéro public attribué par un RIR permettant d’établir une session BGP avec un réseau externe. Des erreurs peuvent facilement se produire ici. En effet, les numéros d’AS privés peuvent accidentellement s’infiltrer dans un circuit public. Il arrive aussi qu’un opérateur de réseau saisisse incorrectement le numéro d’AS, polluant ainsi le routage. Les numéros d’AS privés et les préfixes erronés sont tous deux appelés « bogons », en référence au mot « bogus » (non-sens). Il est donc important de rejeter les itinéraires qui contiennent un numéro de système autonome privé ou réservé.

Écarter les préfixes bogons

Un préfixe bogon ne doit pas être visible dans la table de routage générale, car il est destiné à un usage interne (RFC 1918), aux réseaux de test (RFC 4737), à la multidiffusion et à d’autres usages toujours en interne. Ces préfixes ne doivent donc jamais être acceptés ou annoncés dans la zone DFZ (Default-Free Zone).

Rejeter les préfixes longs

La table de routage de la DFZ se développe continuellement, car de plus en plus de réseaux annoncent de plus en plus de préfixes. Il n’y a pas de difficulté technique à annoncer des routes de n’importe quelle longueur, même une route /32 (pour une seule adresse IPv4) fonctionne. Cependant, une croissance non contrôlée de la table de routage n’est pas viable (il suffit de calculer la taille de la zone franche si tout l’espace IPv4 devait être annoncé en /32).

De nombreux réseaux ont donc commencé à procéder à un filtrage par longueur de préfixe. L’hypothèse générale est qu’une annonce sera annulée si le préfixe est /25 ou plus long (un sous-réseau de 128 adresses IPv4 ou moins). Ce filtre garantit ainsi que toutes les routes /28 et /32 n’aboutissent pas dans la base de données de routage (RIB). Il en va de même pour l’IPv6, pour lequel la limite est fixée aux sous-réseaux de taille /48.

Nous avons vu précédemment que chaque réseau présent sur l’itinéraire construit automatiquement son AS-path en ajoutant son propre numéro d’AS en tête de liste sur l’annonce du préfixe. En pratique, puisque le protocole BGP recherche par défaut le chemin d’AS le plus court, la plupart des routes actives sont composées d’au plus 16 numéros d’AS. L’AS-path peut parfois être un peu plus long, et il en existe bien sûr des manuels (à des fins de trafic engineering), eux aussi présents le cas échéant dans la table de routage. Cependant, en général, ceux composés de plus d’une douzaine de numéros AS peuvent être considérés comme inutiles.

L’explication la plus fréquente d’AS-paths extrêmement longs est l’intervention manuelle dans le routage. L’utilisation de deux à trois fois de son propre numéro d’ASN dans un « prepend » est, si nécessaire, un bon moyen d’influencer les flux de trafic. Au-delà de cette limite, on considère que cela est inutile.

Si l’on considère la DFZ, il y a quelques préfixes avec des AS-paths d’environ 40 entrées, dont l’utilité est sérieusement discutable. Prenons alors une marge de sécurité et considérons que tout As-path composé de plus de 50 entrées est inutile. Ils peuvent ensuite être éliminés de la table de routage sécurisée.

Refuser les routes des réseaux Tier-1 et grands réseaux contenant leurs numéros d’AS

Les plus grands réseaux du monde (appelés Tier-1) ne se procurent jamais de transit entre eux ou auprès de réseaux plus petits (Tier-2). Par exemple, il serait très étrange qu’un client ou un autre fournisseur envoie des routes qui ont AS2914 (NTT) ou AS1299 (Telia) dans leur AS-path. Il convient donc sur certains points de peering de mettre en place des filtres qui refusent les routes qui contiennent les numéros d’AS des  » grands réseaux « . Cela inclut également d’autres très grands réseaux tels que ceux de Facebook, Google, Microsoft ou Cloudflare.

L’utilisation des filtres décrits ci-dessus protège de l’acceptation de routes que d’autres entreprises ou fournisseurs font accidentellement transiter (appelées fuites).