- cross-posted to:
- france@jlai.lu
- cross-posted to:
- france@jlai.lu
Je me suis aperçu hier soir qu'un ordinateur sur un réseau domestique relié à internet par une Freebox était par défaut accessible en IPv6 depuis internet. Pour parler en des termes plus concrets : il est possible d'ouvrir une connexion sur la machine depuis internet.
Par exemple, on peut faire un ping et ça répond. Ou on peut ouvrir une connexion SSH.
Il y a une option "activer le firewall IPv6" dans l'interface de configuration de la Freebox qui permet de bloquer le trafic IPv6 entrant mais cette option semble être désactivée par défaut (voir l'image). C'est un choix de Free que je trouve un peu cavalier car l'utilisateur à gros doigts se retrouve exposé sans le savoir, contrairement à l'IPv4 qui a l'effet secondaire bénéfique de cacher les appareils du réseau local tant qu'aucune redirection de port n'est configurée dans la NAT.
Je ne sais pas ce qu'il en est des box des autres FAI mais ça vaut le coup d'aller vérifier. Surtout si le réseau héberge des machines sous linux, lesquelles ont fréquemment un serveur SSH actif par défaut (qui, circonstance aggravante accepte souvent les connexions par mot de passe par défaut) ou s'il comporte des caméras IP à la sécurité douteuse (coucou le mot de passe admin en carton).
Pour relativiser toutefois : les machines du réseau local sont certes accessibles publiquement mais encore faut il connaître leur IPv6 pour pouvoir les atteindre. La découverte par la force brute est peu probable, étant donné la taille gigantesque de l'espace d'adresse IPv6 (il y a de l'ordre de 10^38 adresses possibles). Et même en connaissant les 8 premiers octets du préfixe (ce que le FAI attribue à son abonné), il reste encore les 8 derniers à découvrir, ce qui représente de l'ordre de 10^19 possibilités. A raison de 100 essais par seconde, il faudrait plus de trois milliards d'années pour les essayer toutes. Le plus gros risque à mon avis, c'est qu'un attaquant exploite des IPv6 qui auraient fuité par ailleurs, lors de l'attaque d'un service web grand public qui conserverait de telles infos dans ses bases de données ou dans ses logs, par exemple.
Pour savoir si vous êtes à risque, il vous faut :
- connaître l'IPv6 d'un appareil du réseau à vérifier. C'est visible sur la page https://www.mon-ip.com/, vue depuis la machine considérée. C'est aussi visible depuis un terminal avec
ipconfig /all
sous windows ouifconfig
sous linux. Dans ce cas, ignorez les adresses de type "link-local" qui débutent parfe80::
, celles-ci ne sont pas routables. Si la machine est publiquement accessible, elle aura plusieurs autres adresses dont les 8 premiers octets (c'est à dire, les quatre premiers mots séparés par deux-points) sont identiques. Prenez-en une parmi celles-là. - une machine sur un autre réseau, qui a une connexion IPv6 (c'est fréquent de nos jours). A défaut, vous pouvez connecter un ordinateur en wifi sur la connexion partagée d'un téléphone relié au réseau de données de l'opérateur mobile. Ca produira le même effet. Depuis cet ordinateur, tentez un ping avec l'adresse choisie plus haut. Si ça répond, la machine est accessible publiquement.
Le risque est à relativiser: beaucoup de routeurs ont UPnP pour forwarder les ports à la demande, justement parce que plein de jeux ou outils demandent ça.
Surtout si le réseau héberge des machines sous linux, lesquelles ont fréquemment un serveur SSH actif par défaut
Il y a beaucoup de distribs qui installent le serveur SSH sans te le demander explicitement? Et perso les dernières Ubuntu m'ont surprises en installant in firewall additionnel par défaut, ufw, bien chiant quand t'es pas au courant.
Oui, UPnP est une autre faille de sécurité qu'il vaut mieux désactiver à mon avis.
Quant à l'exposition par défaut du serveur SSH, je ne sais plus trop ce qu'il en est aujourd'hui mais à une époque pas si lointaine, Debian l'activait. Bon il fallait avoir coché l'option "serveurs usuels du système" ou un truc comme ça à l'install. Mais le serveur était configuré par défaut pour accepter les connexions par mot de passe, ce qui n'était pas glop glop.
Pour moi, le plus grand danger, ce sont les petits appareils comme les caméras. Combien sont déballées, branchées et restent là avec leur mot de passe "admin1234" d'usine ? Tant que la cam est derrière une NAT IPv4, le danger est moindre. Mais si elle devient publique, c'est beaucoup moins rigolo.
Effectivement c'est désactivé sur ma freebox. Et je sais que c'est le cas aussi pour la box sfr de mon pote. C'est tellement pratique pourtant, mon pote ne pouvait pas ouvrir ses ports en ipv4 mais j'ai pu me connecter du premier coup in ipv6 à un serveur minecraft.
Du CGNAT sur de l'IPv6 ? Tu es sûr que ça existe ? Ma compréhension, c'est que le CGNAT est une astuce pour ralentir l'épuisement des IPv4 disponibles, en attribuant une même IPv4 à plusieurs abonnés. Chaque abonné se voit attribuer une part des ports disponibles. Free m'a un jour passé sur ce mode sans prévenir mais c'est heureusement désactivable en demandant une IPv4 full stack.
qui ne permet donc pas de faire de la redirection de port
Ce n'est pas tout à fait vrai. Tu peux continuer à rediriger des ports mais si le FAI ne t'a pas attribué la première tranche des ports (les plus utiles pour faire de l'auto hébergement), l'intérêt est moindre. Tu ne pourras pas héberger de service https sur 443, par exemple.
Je ne suis pas sûr non plus que la notion de redirection de port ait encore un sens en IPv6. Pas au sens de la NAT en tout cas, qui est une techno typiquement IPv4, allant de pair avec les plages d'adresses privées (type 192.168.x.y). Tout ceci étant un contournement pour ralentir l'épuisement des IPv4 disponibles. En IPv6, il n'y a pas de risque d'épuisement donc les FAI attribuent une plage de 2^64 IPs à chaque abonné. Y a de quoi faire.
Je m'auto-réponds : tu pensais peut-être au CGN pour faire un tunnel IPv6 => IPv4 comme visible ici? Dans ce cas, tu n'as pas vraiment de l'IPv6, correct ? Est-ce que les appareils de ton réseau ont une IPv6 (autre que des link-local en
fe80:
, j'entends) ?Je viens de revérifier. Peut-être que j'ai mal interprété ton premier message. Mais je tiens à éviter toute confusion : CGNAT n'existe pas en ipv6. Si tu as du CGNAT, c'est sur la partie stack ipv4 fournie par SFR en parallèle de la stack ipv6. C'est contraignant parce que l'ipv4 est plus facile à gérer que l'ipv6 donc on la préfère quand c'est possible.
Le support semble pouvoir rebasculer en ipv4 full stack (en insistant pas mal). Et sinon la solution ultime c'est d'abandonner l'ipv4 et de migrer totalement vers l'ipv6 qui permet un accès total. Tes services ne seront alors plus accessibles en ipv4. Je ne sais pas à quel point c'est encore gênant en 2024, ça.
Et par curiosité, tu as essayé d'utiliser uniquement ipv6 ? Je me demande si ça serait encore une contrainte aujourd'hui. Est-ce qu'il y a encore des serveurs sur internet qui ne sont accessibles qu'en ipv4 ? Ou inversement des clients qui sont seulement ipv4 ?
Puisqu'il n'y a plus d'ipv4 disponible, je me dis qu'il doit déjà y avoir des particuliers qui n'ont que de la v6, non ? Le CGNAT n'est qu'un pansement qui removede l'inéluctable.
ça utilise des filtres avec IPv4
Que veux-tu dire ? Le filtrage se fait en général sur le nom de domaine, pas sur l'IP. Je doute que tes filtres soient vraiment des listes d'IPv4 à bannir.
Cette technique marche aussi en ipv6. Je crois que l'équivalent consiste à mapper le domaine sur
::
.D'ailleurs si ce n'est pas fait, le simple mapping vers
0.0.0.0
ne garantit le blocage que si tous les clients sont uniquement ipv4. Ça se fait rare de nos jours. Un client ipv6 continuerait à obtenir la vraie ipv6 du domaine.