FLASH INFORMATIQUE FI



Linux, IPv6 et la sécurité


L’adresse IPv6 link-local est un problème de sécurité peu connu.



The IPv6 link-local address is an overlooked security weakness.


Martin OUWEHAND


Suite à l’épuisement récent des adresses IPv4, ça y est, c’est sûr, tout le monde doit passer à son successeur IPv6, qui dispose d’assez d’adresses pour, s’il le fallait, connecter entre eux tous les protons de l’Univers ! Mais la transition sera lente : les fournisseurs de contenu continueront longtemps à être accessibles en IPv4 parce que c’est ce qu’utilise encore la majorité des clients, qui, du coup, est peu encline à passer à IPv6. Quoi qu’il en soit, Linux apporte d’ores et déjà sa contribution au mouvement et ça fait donc belle lurette que les principales distributions activent par défaut la connectivité en IPv6. Pourtant, il paraît beaucoup d’articles où les spécialistes avertissent, l’air sombre, que ce passage à IPv6 apportera son lot de problèmes de sécurité... Le but de cet article est de parler de cet aspect dans la mesure où il concerne l’administrateur de systèmes Linux (y compris celui qui gère son laptop ou sa station de travail) et de suggérer des solutions.

Le problème

Alors que sous IPv4 il faut faire quelque chose (demander une adresse fixe à son administrateur réseau ou passer par un serveur DHCP) pour obtenir une adresse et se connecter au réseau, un noyau Linux implémentant IPv6 va créer d’office une adresse fonctionnelle, l’adresse link-local, déduite de l’adresse physique (MAC address) de la carte réseau. Le préfixe prédéfini pour ce type d’adresse est fe80 ::/64, par exemple ma station de travail a une adresse link-local fe80 ::219:d1ff:fe7e:12b8, déduite de l’adresse MAC 00:19:D1:7E:12:B8 (le but de cette adresse est de remplacer pour IPv6 le protocole ad hoc ARP d’IPv4).

C’est cette adresse qui peut poser problème : si on transpose ses habitudes mentales du monde IPv4, on n’en soupçonnera pas l’existence et on oubliera d’en tenir compte par exemple quand il s’agira de mettre en place un contrôle d’accès réseau (pare-feu, fichiers hosts.allow et hosts.deny, etc.), ceci d’autant plus que l’implémentation des pare-feux IPv4 et IPv6 est séparée dans le noyau : en fermant l’accès à un port avec la commande iptables, l’accès en reste ouvert en IPv6 (il faut encore recourir à iptables6 pour le fermer en IPv6).

Avant de vous laisser céder à la panique, j’aimerais toutefois préciser que cette adresse n’est pas routée et que donc seuls les ordinateurs du même sous-réseau peuvent s’y connecter. Ça ne fait que quelques dizaines et souvent vous en connaissez les administrateurs. De plus, dans les tests que j’ai faits avant d’écrire cet article (je me suis borné il est vrai à la dernière version des distributions les plus répandues : RedHat/Centos, Fedora, Debian et Ubuntu), je n’ai pas trouvé de cas où la configuration par défaut du système y donne accès à travers cette adresse sans le faire aussi par l’adresse normale IPv4. Enfin, les distributions Fedora, RedHat et Centos, dans leur configuration par défaut, en tiennent même compte, puisqu’elles activent d’office les pare-feux en IPv4 aussi bien qu’en IPv6 et que l’utilitaire de gestion du pare-feu standard (paquetage firewall-config, accessible par l’entrée du menu Administration -> Firewall) reporte automatiquement les fermetures de port dans les deux pare-feux (IPv4 et IPv6).

Solution 1 : désactiver IPv6

C’est la solution la plus simple et la plus radicale : il suffit d’ajouter ipv6.disable=1 comme paramètre du noyau. Ceci se fait sous RedHat en l’ajoutant à la ligne kernel du fichier /etc/grub.conf. Sur Fedora, Debian et Ubuntu, ajoutez le paramètre à la variable GRUB_CMDLINE_LINUX du fichier /etc/default/grub, et lancez la commande update-grub (grub2-mkconfig -o /boot/grub2/grub.cfg sous Fedora). Après un redémarrage, vous vivrez alors dans un monde IPv4 pur et sans surprise...

Solution 2 : désactiver l’adresse link-local

Si la solution précédente ne vous convient pas (elle nécessite un redémarrage) vous pouvez désactiver l’adresse link-local simplement en écrivant un 1 dans le bon fichier : echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6. Attention toutefois, ce changement ne survivra pas au prochain redémarrage. Pour l’effectuer automatiquement à chaque redémarrage, il faut ajouter une ligne net.ipv6.conf.all.disable_ipv6=1 dans le fichier /etc/sysctl.conf. Avec cette méthode, il est possible à tout moment de revenir en arrière et de réactiver l’adresse link-local, en écrivant un 0 dans le fichier mentionné.

Solution 3 : utiliser un pare-feu qui gère aussi IPv6

Comme mentionné plus haut, avec le programme d’interfaçage au pare-feu installé par défaut sur Fedora et RedHat/Centos, la gestion simultanée des règles IPv4 et IPv6 est automatique. Parmi les pare-feux qui font de même pour Debian et Ubuntu, il faut mentionner l’utilitaire de gestion en ligne de commande ufw, très bien conçu. Si vous insistez pour avoir une interface graphique, la documentation suggère fwbuilder, mais je ne l’ai pas trouvé simple à l’utilisation ([la partie IPv6 est documentée ici-

Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.