Jak uniknąć ujawnienia mojego adresu MAC podczas korzystania z IPv6?

140

Na moich komputerach Mac każdy adres IPv6 zawiera adres MAC określonego komputera ( nie mojego routera). Strony takie jak ipv6-test.com nie tylko go pokazują, ale nawet mówią mi, że należy do komputera Apple.

To wydaje się być super ciasteczkiem i może dotyczyć również innych systemów operacyjnych. Jak mogę uniknąć ujawnienia moich adresów MAC?

Tło: adres MAC nie jest widoczny . Jak dla 2001:0db8:1:2:60:8ff:fe52:f9d8:

  • Weźmy ostatnie 64 bity (identyfikator hosta) i dodać zer: 0060:08ff:fe52:f9d8.
  • Zdejmij ff:feczęść ze środka. Jeśli tych bajtów nie ma, to nie ma adresu MAC.
  • Dla pierwszego bajtu: uzupełnij drugi bit niskiego rzędu (bit uniwersalny / lokalny; jeśli bit jest 1, ustaw go na 0, a jeśli jest 0, ustaw go na 1). Tak więc: 0x00(00000000) staje się 0x02(00000010).
  • Presto: 60:8ff:fe52:f9d8tłumaczy z powrotem na adres MAC 02:60:08:52:f9:d8.

Uwaga: od czasu macOS 10.12 Sierra, według Ars Technica, Apple wprowadził nowy sposób generowania stabilnych adresów, które nie są oparte na adresie MAC , co Windows najwyraźniej robił już od lat.


To pytanie było pytaniem superużytkownika tygodnia .
Przeczytać wpis w blogu więcej szczegółów lub przyczynić się do bloga samemu

Arjan
źródło
14
Wow, nie wiedziałem tego o IPV6, fajne znalezisko.
Supercereal,
18
Oczywiście pokazuje komputer Apple. W końcu jest to adres MAC.
Graeme Perrow
@Kronos, obraz zaginął we wpisie na blogu; blog.superuser.com/2011/02/11/... Dodanie „.stack” do adresu URL pomaga: i.stack.imgur.com/RNXoA.png
Arjan,
... ale @KronoS, dodanie „.stack” powoduje, że kolejny obraz z tego samego postu na blogu zniknął, taki jak i.imgur.com/vjK73.png (dobra) kontra i.stack.imgur.com/vjK73.png ( nie dobrze). Innymi słowy: może wszystkie obrazy na blogu, które obecnie nie są używane, .stackpowinny zostać ponownie przesłane ...?
Arjan,
@Arjan Nie jestem pewien. Będę musiał to sprawdzić. Chciałbym, aby funkcja polegała na tym, że wszystkie obrazy przesyłane na blogu są automatycznie przesyłane na konto imgur stosu. Podobne do tego, co obecnie robią zwykłe strony
James Mertz

Odpowiedzi:

134

Rozwiązuje to dwa rozszerzenia IPv6:

  • RFC 4941 aka „Prywatne adresowanie” pozwala połączeniom wychodzącym używać tymczasowych, losowo generowanych adresów (które są zmieniane co kilka godzin).
  • RFC 7217 pozwala na generowanie podstawowego, statycznego adresu z nieprzezroczystego skrótu, który nie ujawnia żadnych informacji.

Popularne systemy operacyjne obsługują co najmniej jedną, ale coraz częściej obie metody.

Pamiętaj, że te funkcje są ortogonalne. Możesz użyć obu jednocześnie, jeśli chcesz.

Stabilne adresy prywatne

W niektórych systemach operacyjnych adres MAC (EUI-48) po prostu nie jest już używany do identyfikacji interfejsów. Zamiast tego stosuje się losowy lub oparty na skrócie identyfikator, ogólnie zgodnie z RFC 7217.

  • System Windows domyślnie korzysta ze schematu niestandardowego, zaczynając od systemu Windows Vista.

    Aby sprawdzić, czy funkcja jest aktywna, uruchom polecenie PowerShell:

    Get-NetIPv6Protocol | fl RandomizeIdentifiers
    

    Aby włączyć / wyłączyć tę funkcję:

    Set-NetIPv6Protocol -RandomizeIdentifiers Enabled
    Set-NetIPv6Protocol -RandomizeIdentifiers Disabled
    
  • Linux (NetworkManager) obsługuje RFC 7217 od NetworkManager v1.2.0, wykorzystując UUID profilu połączenia jako część materiału źródłowego. Ta funkcja jest domyślnie aktywna w najnowszych wersjach NM.

    Aby włączyć lub wyłączyć tę funkcję:

    nmcli con modify "<profilename>" ipv6.addr-gen-mode stable-privacy
    nmcli con modify "<profilename>" ipv6.addr-gen-mode eui64
    
  • Linux (jądro SLAAC) obsługuje RFC 7217 od jądra v4.1.0; należy go jednak ręcznie aktywować, przechowując tajne nasiona za pomocą sysctl.

    Tajny klucz to 128-bitowy ciąg szesnastkowy (w kształcie adresu IPv6), który musi być przechowywany w net.ipv6.conf.default.stable_secretsysctl. Aby był trwały, można go umieścić w /etc/sysctl.d/50-rfc7217.confpodobny sposób:

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

    Ustawienie hasła automatycznie aktywuje ten tryb dla wszystkich interfejsów sieciowych. Aby sprawdzić, czy funkcja jest aktywna, poszukaj „addrgenmode stable_secret” w ip -d linklub wartości „2” w sysctl net.ipv6.conf.<ifname>.addr_gen_mode.

Tymczasowe adresy prywatne

Jak zdefiniowano w RFC 4941, tymczasowe adresy prywatności są generowane losowo i zmieniane co kilka godzin.

  • System Windows obsługuje adresy tymczasowe od wersji Windows XP SP2.

    Aby włączyć / wyłączyć tę funkcję:

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

    Należy pamiętać, że system Windows nie używa już adresów podstawowych opartych na adresach MAC, począwszy od systemu Windows Vista.

  • Linux (NetworkManager) : Najnowsze wersje NetworkManager obsługują RA samodzielnie, chociaż dwie poniższe wartości mają identyczne znaczenie jak sysctl (2 = preferuj adres prywatności, 1 = preferuj adres główny):

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

    Ponadto od wersji 1.2.0 udostępniono lepszy tryb, który zmienia adres główny na nie oparty na MAC, ale unikalny dla każdej sieci (RFC 7217):

    (Pamiętaj, że adresowanie prywatności jest ortogonalne w trybie addr-gen; możliwe jest użycie obu).

    Uwaga dodatkowa: Począwszy od wersji 1.4.0, NM również pozwala na losowe przydzielanie samego adresu MAC. Ustaw, wifi.cloned-mac-addressaby stablemieć inny MAC dla każdej sieci (zalecane) lub randomlosowo dla każdego połączenia (może powodować problemy).

    We wszystkich przypadkach <name>musi być nazwą połączenia, np. SSID Wi-Fi lub "Wired Connection 1". Użyj, nmcli conaby wyświetlić listę wszystkich.

    Aby ustawić tę opcję jako domyślną dla nowych połączeń, od wersji 1.2.0 możesz zmienić /etc/NetworkManager/NetworkManager.conf:

     [connection]
     ipv6.addr-gen-mode=stable-privacy
     wifi.cloned-mac-address=stable
    
  • Linux (jądro SLAAC) obsługuje adresy tymczasowe, ale domyślnie ich nie używa. Można je aktywować za pomocą sysctls.

    Aby włączyć adresy tymczasowe i ustawić je jako preferowane dla połączeń wychodzących:

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

    Aby włączyć tymczasowe generowanie adresu, ale zachowaj statyczny adres SLAAC zgodnie z preferencjami:

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

    Część alllub defaultmożna zastąpić określoną nazwą interfejsu; np net.ipv6.conf.eth0.use_tempaddr.

    (Kiedyś ip link set eth0 down && ip link set eth0 upwymuszałem przypisanie adresu, ale możesz także uruchomić rdisc6 eth0lub poczekać kilka minut na następną okresową reklamę routera).

  • Mac OS X - domyślnie włączony od OS X 10.7 Lion:

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

    Preferowane będą adresy tymczasowe, jeśli są włączone.

  • FreeBSD :

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

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

    Preferencje adresów tymczasowych? Nie mam pojęcia. Adres automatycznego uwierzytelnienia wydaje się być preferowany. ifconfignie wyświetla żadnych właściwości adresu.

  • OpenBSD - obsługa dodana w 5.2 ; włączony i preferowany domyślnie w 5.3 .

     ifconfig em0 autoconfprivacy
    

    ifconfig pokazuje „autoconfprivacy” obok adresów tymczasowych.

Uwagi dotyczące konfiguracji:

  • W systemie Linux, OS X i wszystkich plikach BSD dokonaj edycji, /etc/sysctl.confaby ustawić to na stałe.

  • W systemie Windows zmiany zostaną zachowane automatycznie. (Możesz dołączyć store=activedo netshpolecenia, jeśli chcesz, aby trwało tylko do ponownego uruchomienia.)


Częściowo oparty na systemach operacyjnych IPv6 w IPv6INT.net. Zobacz także Ogólne uwagi dotyczące IPv6


Jeśli adres sprzętowy jest używany w adresie IPv6, zwykle oznacza to, że twoja sieć używa bezstanowej autokonfiguracji IPv6. W takim przypadku możesz po prostu wybrać własny sufiks adresu i ręcznie skonfigurować IPv6.

Jednak nawet jeśli ręcznie dodany adres nie będzie zawierał informacji o twoim sprzęcie, nadal będzie statyczny (w przeciwieństwie do Adresowania Prywatności, które zmienia adresy co jakiś czas). Ponadto adresy statyczne mogą stanowić problem w sieci większej niż 2-3 urządzenia.

grawitacja
źródło
2
Niezły efekt uboczny na moim komputerze Mac i routerze FRITZ! Box 7340: dostaję dwa adresy ifconfig. Połączenia wychodzące używają losowego autoconf temporaryadresu, który zmienia się co jakiś czas. Dobry! Ale w przypadku połączeń przychodzących (po otwarciu w routerze) nadal mogę używać autoconfadresu. Nie mam nic przeciwko ujawnieniu tego w rekordach DNS (choć może mógłbym nawet w jakiś sposób wybrać inny adres).
Arjan
Ahh, po spamowaniu Whois otrzymujemy teraz spamowanie IPv6: dig -t AAAA www.v6.facebook.com ;-)
Arjan
6
@Arjan: Adresy IPv6 na wzór de4d:b33fnie są takie złe do zapamiętywania; są one również wprowadzane przez ich właściciela, podczas gdy whoisspam jest a) denerwujący i b) spowodowany przez osoby z zewnątrz, które nie mają kontroli nad Twoją domeną.
grawitacja
1
Nawiasem mówiąc: wydaje się (niektóre), że powyższe może powiedzieć systemowi operacyjnemu, że woli adres tymczasowy, ale aplikacje mogą nadal zastępować tę preferencję .
Arjan
AFAICS korzystający z adresów tymczasowych (prywatność IPv6) jest efektywnie nieużywany przez niektórych dostawców usług internetowych z powodu reklam routera o absurdalnie krótkim maksymalnym czasie życia wynoszącym 40s, co zastępuje ustawienia jądra. Linux zobaczyć ip ana preferred_lft. Tak więc sshpołączenia będą przerywać co 40s, jeśli włączysz tę funkcję. Nie jest to nawet przydatne dla zwykłych internautów, ponieważ każde pobieranie musi zostać ukończone w ciągu 40 lat.
Tino
1

Do Twojej wiadomości odnosi się to tylko do niektórych schematów adresowania IP. Bardziej niż prawdopodobne jest, że ty (lub twój dostawca usług internetowych) korzystasz z autokonfiguracji IPv6, co wymaga przede wszystkim dość dużego bloku adresów IP. Rozwiązaniem może być wyłączenie tej funkcji. Twój dostawca usług internetowych może również używać DHCP do przypisywania adresów, co jest nadal możliwe w przypadku IPv6.

Ernie Dunbar
źródło
3
Co do dużych bloków: według Wikipedii w „Ogólnym przydziale”: RIR przypisują mniejsze bloki dostawcom usług internetowych, którzy następnie dystrybuują to w częściach o rozmiarze / 48 do swoich klientów. Rzeczywiście, mój dostawca usług internetowych przypisuje również / 48 prefiksów subskrybentom klasy konsumenckiej. Nie jest to więc zbyt dziwne?
Arjan
3
Następnie obwiniaj Wikipedię i plany adresowania IPv6 przez Arina : Wszyscy klienci otrzymują jeden / 48, chyba że mogą wykazać, że potrzebują więcej niż 65 000 podsieci. Ale także: jeśli masz wielu klientów konsumenckich, możesz chcieć przypisać / 56 do prywatnych witryn zamieszkania - co wciąż jest więcej niż kiedykolwiek potrzebuję. ;-) Ale rzeczy mogą się zmienić: mój dostawca usług internetowych nigdy tego nie obiecał , chociaż oczywiście ich klienci skonfigurowali modem / routery na tej podstawie.
Arjan
3
Myślę, że kiedy Arin mówi „klient”, mają na myśli „ISP”. Każdy dostawca usług internetowych (w tym bardzo, bardzo duże) może przydzielić jeden / 64 dla całej sieci i zrobić to z nim. Nie wymaga dalszego routingu. Jednak przydzielanie bloków adresów IP w bilionach przeciętnym klientom mieszkalnym jest wręcz niemądre.
Ernie Dunbar,
3
Najwyraźniej jeden powód, aby przypisać przynajmniej/56 : „Dostawcy usług internetowych, którzy rozdają tylko jednego /64, w ogóle uniemożliwiają podsieci. Jeśli /64jest to interfejs WAN, nigdy nie uzyskasz przyzwoitego IPv6 w sieci LAN. ISP przyczepić i powinni to naprawić poprzez rozdawanie przyzwoitą kwotę ( /48lub /56) adresów.”
Arjan
7
A / 64 nie jest „dość dużym blokiem”; jest to najmniejszy rozsądny blok alokacji dla podsieci. Kilka funkcji IPv6 wymaga, aby być podsieć / 64, i zapomnieli (lub nie zrozumiał), że IPv6 został zaprojektowany w dużej mierze zapobiec ktoś kiedykolwiek nigdy wyczerpaniu adresów. Musisz uwolnić swój umysł od dawnego myślenia o konieczności zachowania cennych adresów; nie ma miejsca w IPv6.
Michael Hampton