Table des matières
Router advertisements
Généralités
Les router advertisements
(RA) sont des paquet ICMP (code 134) qui servent pour la configuration des machines en IPv6. Ce message permet au routeur d'avertir tous les nœuds connectés à lui de sa présence. Il émettra ce paquet de manière périodique, ou en réponse à un paquet Router Solicitation
.
Spécification de base : RFC 2461.
Daemon canonique sous *nix : radvd.
Cela marche très bien dans le monde des bisounours. Mais rien n'interdit à une machine
d'envoyer des RA pirates, et d'ainsi propager des routes pirates à travers tout le réseau. Il semblerait
que le système d'exploitation Windows ® Vista ™ (par défaut) configuré pour partager la connexion Internet
se mette à émettre des RA pirates.
Il y a deux problèmes sous-jacents :
- Une gêne, voire une impossibilité d'utiliser le protocole IPv6. En effet les routes pirates annoncées aboutissent rarement, ce qui a au moins pour conséquence un ralentissement de certaines requêtes ;
- Et bien évidemment un problème de sécurité.
Solutions
Blocage à la source
La solution la plus simple et la plus efficace serait de bloquer ces paquets au plus proche de l'utilisateur, c'est à dire
sur les switchs dans les divers bâtiments. C'est possible sur les HP-2620 via RA guard, et tous les switchs récents :
ipv6 ra-guard ports 1-44,46-48
Blocage réseau
Cependant, il s'avère que les switchs anciens n'ont aucune connaissance
de ce protocole.
Une liste des solutions envisageable est disponible sur http://ipv6samurais.com/ipv6samurais/demystified/rogue-RA.html.
Il y a aussi un draft IETF qui vaut le coup d'oeil http://tools.ietf.org/html/draft-ietf-v6ops-ra-guard-06
Au Cr@ns, il ne reste alors plus qu'à :
- écouter ce qui se passe sur le réseau ;
- annuler les RA pirates (en émettant un RA qui fixe la durée de vie du prefix/router à 0) ;
- punir/éduquer les pauvres malheureux.
Logiciel(s)
Il se trouve que des gens ont commencé à coder quelque chose (ramond) qui devrait correspondre à nos besoins :
- il écoute sur une interface réseau et sélectionne les RA ;
- il est assez extensible (il passe pas mal de paramètres dans l'environnement, on peut exécuter des scripts) ;
- dans le fichier de configuration on peut définir des actions différentes suivant un certain nombre de paramètres (y compris l'adresse MAC d'origine)
Par contre il a certains défauts :
- le fichier de configuration est en xml ;
- la stabilité ne semble pas être son point fort (au bout de quelques dizaines de jours, il ne réagit plus). Il faudrait le redémarrer tous les jours par cron.
Application au Cr@ns
Description
Si on détecte un RA pirate, on fait appel à un script Python, qui va :
- récupérer l'adresse MAC ;
- s'occuper de mettre une blacklist (qui va entraîner le placement sur le vlan isolement de la machine via radius) ;
- et finalement appeler chambre_on_off, pour forcer une authentification radius, afin d'isoler directement la machine sans attendre l'expiration de l'authentification.
Inconvénients actuels
- SNMP n'est pas une référence concernant la fiabilité ;
- si la machine n'est pas branchée sur sa prise, elle pourra continuer à émettre des RA. Il faudrait transformer locate_mac pour permettre un traçage de la MAC via une commande Python et faire un chambre_on_off sur la prise où se trouve cette machine, en espérant que ça soit la machine incriminée qui émette le premier paquet (et tant pis pour les autres) ;
- pour l'instant la machine peut continuer à émettre ses RA en wifi. Cependant la solution est assez simple, vu que sur les bornes, on peut utiliser ip6tables et bloquer les paquets. Actuellement un filtrage est fait au niveau de gordon.