web-dev-qa-db-fra.com

Comment éviter d'exposer mon adresse MAC lors de l'utilisation d'IPv6?

Sur mon Mac, chaque adresse IPv6 inclut l'adresse MAC d'un ordinateur spécifique (pas de mon routeur). Des sites tels que ipv6-test.com non seulement le montrent, mais me disent même qu'il appartient à un ordinateur Apple.

Cela ressemble à un super cookie et pourrait également s’appliquer à d’autres systèmes d’exploitation. Comment puis-je éviter que mes adresses MAC soient exposées?

Fond: l'adresse MAC est pas en vue . Comme pour 2001:0db8:1:2:60:8ff:fe52:f9d8:

  • Prenez les 64 derniers bits (l'identifiant de l'hôte) et ajoutez les zéros non significatifs: 0060:08ff:fe52:f9d8.
  • Dénudez la partie ff:fe du milieu. Si ces octets ne sont pas là, alors il n'y a pas d'adresse MAC.
  • Pour le premier octet: complétez le deuxième bit de poids faible (le bit universel/local; si le bit est un 1, définissez-le sur 0, et si c'est un 0, définissez-le sur 1). Donc: 0x00 (00000000) devient 0x02 (00000010).
  • Presto: 60:8ff:fe52:f9d8 est traduit en adresse MAC 02:60:08:52:f9:d8.

Remarque: depuis macOS 10.12 Sierra, selon Ars Technica , Apple a adopté un nouveau moyen de générer des adresses stables qui ne sont pas basées sur une adresse MAC , ce que Windows faisait apparemment depuis des années.


Cette question était uneQuestion de la semaine concernant le super utilisateur.
Lisez l’entréedu blogpour plus de détails oucontribuez au blogvous-même

139
Arjan

Ceci est résolu par deux extensions à IPv6:

  • RFC 4941 aka "Adresse de confidentialité" permet aux connexions sortantes d'utiliser des adresses temporaires, générées aléatoirement (qui font l'objet d'une rotation toutes les quelques heures).
  • RFC 7217 permet à l'adresse primaire principale d'être générée à partir d'un hachage opaque qui ne révèle aucune information.

Au moins une, mais de plus en plus les deux méthodes sont supportées par les systèmes d'exploitation populaires.

Notez que ces fonctionnalités sont orthogonales. Vous pouvez utiliser les deux en même temps, si vous le souhaitez.

Adresses privées stables

Dans certains systèmes d'exploitation, l'adresse MAC (EUI-48) n'est tout simplement plus utilisée pour les identificateurs d'interface. A la place, un identifiant aléatoire ou basé sur un hachage est utilisé, généralement conformément à la RFC 7217.

  • Windows utilise par défaut un modèle personnalisé commençant par Windows Vista.

    Pour vérifier si la fonctionnalité est active, exécutez une commande PowerShell:

    Get-NetIPv6Protocol | fl RandomizeIdentifiers
    

    Pour activer/désactiver la fonctionnalité:

    Set-NetIPv6Protocol -RandomizeIdentifiers Enabled
    Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
    
  • Linux (NetworkManager) prend en charge la RFC 7217 à partir de NetworkManager version 1.2.0, en utilisant l'UUID du profil de connexion dans le germe. Cette fonctionnalité est active par défaut dans les versions récentes NM.

    Pour activer ou désactiver cette fonctionnalité:

    nmcli con modify "<profilename>" ipv6.addr-gen-mode stable-privacy
    nmcli con modify "<profilename>" ipv6.addr-gen-mode eui64
    
  • Linux (noyau SLAAC) prend en charge la RFC 7217 à partir de la version 4.1.0 du noyau; cependant, il doit être activé manuellement en stockant la graine secrète via sysctl.

    La clé secrète est une chaîne hexadécimale de 128 bits (en forme d'adresse IPv6), qui doit être stockée dans le net.ipv6.conf.default.stable_secret sysctl. Pour le rendre persistant, il pourrait être mis dans /etc/sysctl.d/50-rfc7217.conf ou similaire:

    net.ipv6.conf.default.stable_secret = 84a0:d5aa:52b0:4d35:k567:3aa6:7af5:474c
    

    La définition du secret active automatiquement ce mode pour toutes les interfaces réseau. Pour vérifier si la fonctionnalité est active, recherchez "addrgenmode stable_secret" dans ip -d link ou la valeur "2" dans sysctl net.ipv6.conf.<ifname>.addr_gen_mode.

Adresses privées temporaires

Comme défini dans la RFC 4941, les adresses de confidentialité temporaires sont générées aléatoirement et pivotées toutes les quelques heures.

  • Windows prend en charge les adresses temporaires à partir de Windows XP SP2.

    Pour activer/désactiver cette fonctionnalité:

    netsh interface ipv6 set privacy state=enabled
    netsh interface ipv6 set privacy state=disabled
    

    Notez que Windows n'utilise plus les adresses principales basées sur les adresses MAC à partir de Windows Vista.

  • Linux (NetworkManager) : Les versions récentes de NetworkManager gèrent l'autorité d'enregistrement elles-mêmes, bien que les deux valeurs ci-dessous aient des significations identiques à sysctl (2 = adresse de confidentialité préférée, 1 = adresse principale préférée):

     nmcli con modify <name> ipv6.ip6-privacy 2
    

    En outre, à partir de la version 1.2.0, un meilleur mode est devenu disponible, ce qui change l'adresse principale} pour qu'elle ne soit plus basée sur MAC, mais unique pour chaque réseau (RFC 7217):

    (Notez que l'adressage de confidentialité est orthogonal au mode addr-gen; il est possible d'utiliser les deux.)

    Note secondaire: À partir de la version 1.4.0, NM permet également de randomiser l'adresse MAC elle-même. Définissez wifi.cloned-mac-address sur stable pour avoir un MAC différent pour chaque réseau (recommandé), ou random pour le randomiser pour tous connexion (peut causer des problèmes).

    Dans tous les cas, <name> doit être le nom de la connexion, par exemple. WiFi SSID ou "Wired Connection 1". Utilisez nmcli con pour tout lister.

    Pour que ceci soit la valeur par défaut pour les nouvelles connexions, à partir de la version 1.2.0, vous pouvez modifier /etc/NetworkManager/NetworkManager.conf:

     [connection]
     ipv6.addr-gen-mode=stable-privacy
     wifi.cloned-mac-address=stable
    
  • Linux (noyau SLAAC) prend en charge les adresses temporaires, mais ne les utilise pas par défaut. Ils peuvent être activés via sysctls.

    Pour activer les adresses temporaires et leur attribuer préféré pour les connexions sortantes:

     sysctl net.ipv6.conf.all.use_tempaddr=2
     sysctl net.ipv6.conf.default.use_tempaddr=2
    

    Pour activer la génération temporaire d’adresses tout en conservant l’adresse statique SLAAC:

     sysctl net.ipv6.conf.all.use_tempaddr=1
     sysctl net.ipv6.conf.default.use_tempaddr=1
    

    La partie all ou default peut être remplacée par un nom d'interface spécifique; par exemple. net.ipv6.conf.eth0.use_tempaddr.

    (J'ai utilisé ip link set eth0 down && ip link set eth0 up pour forcer une affectation d'adresse, mais vous pouvez également exécuter rdisc6 eth0 ou simplement attendre quelques minutes pour la prochaine publication périodique du routeur.)

  • Mac OS X - activé par défaut depuis OS X 10.7 Lion:

     sysctl -w net.inet6.ip6.use_tempaddr=1
    

    Les adresses temporaires, si activées, seront préférées.

  • FreeBSD :

     sysctl net.inet6.ip6.use_tempaddr=1
    
     sysctl net.inet6.ip6.prefer_tempaddr=1
    
  • NetBSD :

     sysctl -w net.inet6.ip6.use_tempaddr=1
    

    Préférence d'adresses temporaires? Je n'ai aucune idée. L'adresse autoconf semble être préférée. ifconfig ne semble pas répertorier les propriétés d’adresse.

  • OpenBSD - support ajouté dans 5.2 ; activé et préféré par défaut dans 5.3 .

     ifconfig em0 autoconfprivacy
    

    ifconfig affiche "autoconfprivacy" à côté des adresses temporaires.

Remarques sur la configuration:

  • Sous Linux, OS X et tous les BSD, éditez /etc/sysctl.conf pour rendre le paramètre permanent.

  • Sous Windows, les modifications persisteront automatiquement. (Vous pouvez ajouter store=active à la commande netsh si vous souhaitez qu'il ne dure que jusqu'au redémarrage.)}


Partiellement basé sur Systèmes d'exploitation IPv6 sur IPv6INT.net. Voir aussi Notes générales sur IPv6


Si l'adresse matérielle est utilisée dans l'adresse IPv6, cela signifie généralement que votre réseau utilise la configuration automatique sans état IPv6. Dans ce cas, vous pouvez simplement choisir votre propre suffixe d'adresse et configurer manuellement IPv6.

Cependant, même si l'adresse ajoutée manuellement ne contiendra pas vos informations matérielles, elles resteront statiques (contrairement à Privacy Addressing, qui change d'adresse de temps en temps). De plus, les adresses statiques peuvent être pénibles dans un réseau de plus de 2-3 appareils.

132
grawity

Pour votre information, cela ne s'applique qu'à certains schémas d'adressage IP. Il est plus que probable que vous (ou votre fournisseur de services Internet) utilisez la configuration automatique IPv6, qui nécessite un bloc d’adresses IP assez volumineux. La solution pourrait être de désactiver cette fonctionnalité. Votre fournisseur de services Internet peut également utiliser DHCP pour attribuer des adresses, ce qui est toujours possible avec IPv6.

1
Ernie Dunbar