Première rédaction de cet article le 22 mars 2012
Le protocole de routage BGP, sur lequel repose tout l'Internet, est connu pour son absence de sécurité. N'importe quel maladroit peut annoncer les routes d'un autre opérateur et détourner ou couper le trafic. Il existe une solution de sécurisation, normalisée et activement déployée, RPKI+ROA. Mais cette solution, plutôt complexe, ne fait pas que des heureux. Une alternative vient d'être annoncée, ROVER (ROute Origin VERification).
ROVER a été présenté par Joe Gersch à l'atelier OARC à
Teddington. Le principe est le suivant : si on
est le titulaire du préfixe IP
2001:db8:179::/48
, on a a priori la délégation
DNS pour l'arbre dit « inverse »,
9.7.1.0.8.b.d.0.1.0.0.2.ip6.arpa
. On peut alors
publier dans cet arbre des enregistrements DNS spéciaux qui
indiqueront l'AS d'origine autorisé. Un
validateur situé près du routeur testera si les préfixes reçus ont un
enregistrement ROVER correspondant. Le routeur n'aura qu'à lui
demander ce résultat (le système RPKI+ROA a un fonctionnement
analogue, le routeur ne valide pas lui-même). On a alors
les mêmes possibilités qu'avec les ROA du RFC 6482. Et la sécurité ? Pour que ROVER ait un sens, il faut
évidemment signer les enregistrements avec
DNSSEC.
Par rapport à la solution RPKI+ROA, on a donc :
Voyons un exemple concret avec le banc de test. Je me crée un
compte et je demande l'état du préfixe
2001:67c:217c::/48
(le site Web du banc de test
offre plusieurs moyens de remplir l'information, à partir d'un numéro
d'AS, d'un nom, etc). J'obtiens le résultat suivant :
J'accepte le choix proposé (autoriser les fournisseurs de transit mais pas les peerings) et je demande le fichier de zone, qui est produit automatiquement, avec les AS actuels :
; This is a reverse-DNS zone containing Secure Routing Records ; for the CIDR address block 2001:67c:217c::/48 owned by (RIPE Network Coordination Centre) ; ; Created by bortzmeyer(bortzmeyer+rover@nic.fr) on 2012-03-22 ; ; This zone is for test purposes only and is hosted at the shadow zone located on ; the public internet at 'in-addr.arpa.secure64.com'. It is signed with DNSSEC. ; $TTL 3600 $ORIGIN c.7.1.2.c.7.6.0.1.0.0.2.ip6.arpa.secure64.com. @ IN SOA ns1.secure64.com. hostmaster.secure64.com. ( 2012032200 ; serial number in date format 14400 ; refresh, 4 hours 3600 ; update retry, 1 hour 604800 ; expiry, 7 days 600 ; minimum, 10 minutes ) IN NS ns1.secure64.com. IN NS ns2.secure64.com. $ORIGIN c.7.1.2.c.7.6.0.1.0.0.2.ip6.arpa.secure64.com. @ IN TYPE65400 \# 0 ; RLOCK deny all route announcements except those authorized @ IN TYPE65401 \# 8 000009b600000898 ; 2001:67c:217c::/48 SRO AS2486 (NIC-FR-DNS-UNICAST-PARIS2) with transit AS2200 (FR-RENATER) @ IN TYPE65401 \# 8 000009b60000201a ; 2001:67c:217c::/48 SRO AS2486 (NIC-FR-DNS-UNICAST-PARIS2) with transit AS8218 (NEO-ASN)
Quelques points d'explication : ROVER est loin d'être normalisé donc
les enregistrements DNS utilisés n'ont pas de nom mais utilisent les
numéros réservés pour l'expérimentation
(TYPE65400
et
TYPE65401
). Pour la même raison, ils apparaissent
en hexadécimal. Les commentaires à la ligne suivante donnent
l'enregistrement en clair, tel qu'il apparaîtra lorsqu'il sera
normalisé. Un RLOCK
impose que les routes sous ce
préfixe soient sécurisées par ROVER. Un SRO
(Secure Route Origin) indique un
AS d'origine autorisé (ici, 2486, avec deux transitaires,
Renater et Neo).
Joe Gersch a annoncé avoir testé les performances : pour un routeur qui démarre à froid, et doit donc vérifier les 400 000 routes de l'Internet d'aujourd'hui, les requêtes DNS prennent moins de quatre minutes.
ROVER est actuellement décrit dans deux Internet-Drafts, « DNS Resource Records for BGP Routing Data » et « Reverse DNS Naming Convention for CIDR Address Blocks ». Il sera officiellement présenté à la réunion IETF à Paris la semaine prochaine.
Au fait, c'est très bien pour IPv6 mais pour
IPv4, où les frontières des organisations
tombent rarement sur une frontière d'octet ? Les auteurs proposent un
nouveau schéma de nommage pour l'arbre « inverse »
in-addr.arpa
. L'idée est que, si le préfixe ne
s'arrête pas sur une frontière d'octet, on ajoute un
m
suivi des bits restants. Ainsi,
129.82.64.0/18
devient
1.0.m.82.129.in-addr.arpa
(le 01 au début étant
le 64 du préfixe, deux bits car le reste de la division de 18 par 8
est 2). C'est dans ce 1.0.m.82.129.in-addr.arpa
qu'on mettra les enregistrements SRO (ici, pour l'AS 65536) :
1.0.m.82.129.in-addr.arpa. IN SRO 65536
Un autre article sur Rover, en anglais, pas trop mal mais inutilement sensationnaliste a été publié par The Register.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)