IPv6/Privacy Extension

Aus Foxwiki

Privacy-Extensions

Privacy Extensions nach RFC 4941

Erzeugung des Interface-Identifiers
  • Die Erzeugung des Interface-Identifiers aus der global eindeutigen MAC-Adresse ermöglicht die Nachverfolgung von Benutzern
Privacy-Extensions (PEX, RFC 4941)
  • hebt die permanente Kopplung der Benutzeridentität an die IPv6-Adressen auf
Zufällig generiert und regelmäßig gewechselt
  • Indem der Interface-Identifier zufällig generiert wird und regelmäßig wechselt, soll ein Teil der Anonymität von IPv4 wiederhergestellt werden
Täglich wechselndes Präfix wünschenswert
  • Im Privatbereich lässt das Präfix allein recht sicher auf einen Nutzer schließen
  • Daher ist aus Datenschutzgründen ein vom Provider dynamisch zugewiesenes Präfix wünschenswert
    • in Verbindung mit den Privacy Extensions
    • z. B. täglich wechselnd
Whois-Datenbank
  • Statische Adresszuteilung erfordern meist ein Eintrag in der öffentlichen Whois-Datenbank
  • In Deutschland hat der Deutsche IPv6-Rat Datenschutzleitlinien formuliert, die auch eine dynamische Zuweisung von IPv6-Präfixen vorsehen

Stateless Address Autoconfiguration (SLAAC)

Nutzt auf einigen Betriebssystemen per Vorgabe die Hardware-Adresse der Netzwerkschnittstelle

Solche Adressen sind im Internet leicht wiederzuerkennen
Abhilfe schaffen die Privacy Extensions
  • die zusätzliche, über Zufallszahlen generierte und wechselnde IPv6-Adressen erzeugen
Stateless Address Autoconfiguration
  • schiebt in der Mitte der nur 48 Bit langen MAC-Adresse zusätzlich die Bytes ff:fe ein
  • erzeugt daraus den Local Identifier, also die hinteren 64 Bit einer IPv6-Adresse
  • Die ersten 64 Bit gehören dem Netzwerk-Präfix, das der IPv6-Router im Netzwerk bekannt gibt und das der Rechner in die globale IPv6-Adresse übernimmt.

Privacy Extensions nach RFC 4941

Linux
  • leiten ohne Eingriff ihre globale IPv6-Adresse aus der Hardware ab
  • damit offenbaren sie Informationen über den Benutzer
Windows
  • erzeugt immer eine temporäre IPv6-Adresse
  • die dem Nutzer mehr Privatheit verschafft
Den IPv6-Entwicklern fiel schnell auf dass dieses Verfahren die Privatsphäre von Rechner und Nutzer gefährdet
  • Solche statischen IPv6-Adressen wirken wie eine eindeutige Hardware-ID, die der Rechner bei jedem Kontakt zu einem IPv6-tauglichen Server überträgt.
  • Brisant ist das bei Geräten wie Tablets oder Smartphones, denn sie werden in der Regel nur von einer Person genutzt.
  • Die für jeden Serverbetreiber und Netzbeobachter zugängliche MAC-Adresse erlaubt es damit, diese Person wiederzuerkennen.
Privacy Extensions for Stateless Address Autoconfiguration in IPv6
  • Daher definierten sie nachträglich das Verfahren "Privacy Extensions for Stateless Address Autoconfiguration in IPv6" (RFC 4941)
  • mit dem sich zusätzlich zu diesen statischen Adressen temporäre erzeugen lassen
  • die der Rechner für seine Anfragen ins IPv6-Internet einsetzt
Der Host Identifier dieser Adressen wird über Zufallszahlen ermittelt
  • Allerdings setzen längst nicht alle aktuellen Betriebssysteme diese Erweiterung ab Werk ein
Derzeit hat einzig Windows die Privacy Extensions eingeschaltet
  • Andere wie Mac OS und Linux beherrschen das Verfahren
  • man muss es aber per Hand aktivieren

Windows

Ohne dass der Nutzer eingreifen muss

Richten die Desktop-Versionen von Windows per Stateless Autoconfiguration bereits temporäre IPv6-Adressen ein.

  • Wie im RFC vorgesehen wechselt Windows diese Adressen in Intervallen
  • die sich wie auch andere IPv6-Parameter über das Kommando netsh einstellen lassen
Wechselnde Adressen auf Servern wenig sinnvoll

Daher hat Microsoft die Privacy Extensions auf Windows-Server-Versionen nicht eingeschaltet

  • Anders als andere erzeugen Windows-Rechner ihre statische IPv6-Adresse auch nicht aus der
Hardware-Adresse der jeweiligen Schnittstelle.
  • Stattdessen würfelt Windows die Adresse einmal, meist bei der Installation, aus
Abschalten

Dieses Verhalten lässt sich als Administrator ändern

  • Mit folgendem Befehl nutzt Windows für seine statische, globale IPv6-Adresse nun die MAC der Netzwerkschnittstelle
netsh interface ipv6 set global randomizeidentifiers=disabled
Nachschauen

Die aktuelle Einstellung zeigt das folgende Kommando in der Ausgabezeile an

netsh interface ipv6 show global
Aktuelle IPv6-Adressen aller Netzwerkkarten
netsh interface ipv6 show addresses
Vorgaben für die Privacy Extensions ausgeben
netsh interface ipv6 show privacy
Der aktive Status wird abgefragt...
Parameter für temporäre Adressen
------------------------------------------------
Temporäre Adresse verwenden         : enabled
Versuch, doppelte Adr. zu entdecken : 5
Maximale Gültigkeitsdauer           : 7d
Maximale bevorzugte Gültigkeitsdauer: 1d
Regenerationszeit                   : 5s
Maximale Verzögerungszeit           : 10m
Verzögerungszeit                    : 0s

Windows erzeugt seine feste IPv6-Adresse nicht über die MAC, die Privacy Extensions hat Microsoft ab Werk aktiviert.

Privacy Extensions nach RFC 4941

Windows
Die Ausgabe bestätigt, dass die Privacy Extensions (Temporäre Adresse verwenden)

aktiv sind.

Maximale bevorzugte Gültigkeitsdauer
  • legt fest, nach welcher Zeit (hier in Tagen) der Rechner eine neue temporäre Adresse erzeugt
und für ausgehende Pakete auch einsetzt.
Maximale Gültigkeitsdauer
  • Eingehende Verbindungen akzeptiert der Rechner deutlich länger auf einer temporären Adresse,
was etwa für Peer-to-Peer-Anwendungen nützlich sein kann.
Temporären IPv6-Adressen vollständig abschalten
netsh interface ipv6 set privacy state=disabled
Gültigkeitsdauer setzen
netsh interface ipv6 set privacy maxpreferredlifetime=12h
  • Schlüssel maxpreferredlifetime und maxvalidlifetime
  • Zeitangaben in Tagen (d), Stunden (h), Minuten (m) und Sekunden (s)

Linux

Alle großen Linux-Distributionen aktivieren IPv6, die Privacy Extensions jedoch nicht
  • Das bemerkt man schnell an den aus der Hardware-Adresse abgeleiteten Adressen, die im hinteren Teil die Bytes ff und fe enthalten.
Die Privacy Extensions lassen sich über das Sysctl-System dauerhaft einschalten
  • Am einfachsten gelingt das, wenn man für jede Netzwerkschnittstelle im Computer eine Zeile in die Datei /etc/sysctl.conf nachträgt.
net.ipv6.conf.IF.use_tempaddr = 2

Den Platzhalter IF müssen Sie dabei durch die Schnittstellenbezeichnung ersetzen, also etwa eth0 für die erste Ethernet-Karte oder wlan0 für das WLAN-Interface.

Testweise können Sysctl-Werte auch über die Shell eingeben werden
sysctl net.ipv6.conf.wlan0.use_tempaddr=2
  • Damit Linux die Netzwerkschnittstelle mit einer temporären IPv6-Adresse versorgt, müssen Sie die Schnittstelle einmal aus- und wieder einschalten (etwa über den Network Manager).
  • Anschließend zeigt ifconfig an der Schnittstelle eine weitere IPv6-Adresse, deren hinterer Teil
nicht mehr aus der Hardware-Adresse abgeleitet wurde.
  • Dass es sich tatsächlich um eine temporäre Adresse handelt, zeigt der Befehl ip -6 addr show
über den Bezeichner "temporary" in seinen Ausgaben an.
  • Bei Ubuntu muss zusätzlich der Wert net.ipv6.conf.default.use_tempaddr=2 in der Datei
/etc/sysctl.conf setzen.
Vorgaben ändern
Vorgaben zum Wechseln der temporären IPv6-Adresse lassen sich via sysctl

anpassen

  • Die Sysctl-Schlüssel
net.ipv6.conf.IF.temp_valid_lft
net.ipv6.conf.IF.temp_prefered_lft
  • setzen die maximale Zeit in Sekunden, in der Linux die Adresse für eingehende und
ausgehende Anfragen nutzt.
  • Der letzte Schlüssel hat typischerweise den Wert 86400 (24 Stunden), eingehende Pakete
akzeptiert Linux sieben Tage an dieser Adresse.
  • Den Platzhalter IF müssen Sie dabei wie oben durch den Schnittstellennamen ersetzen.

Android

Googles Smartphone-Betriebssystem setzt auf Linux auf
  • das zufällige und wechselnde IPv6-Adressen erzeugen kann
  • Andererseits hat Google die dafür nötigen Vorgaben nicht gesetzt, sodass bislang jede Android-
Version ohne die Privatsphäre schützenden IPv6-Adressen auskommen muss.
  • Auch lassen sie sich nicht einfach einschalten, denn die Mobilfunk-Provider und Handy-Hersteller
vernageln den dafür nötigen Root-Zugang.
  • Zwei Befehle genügen und ein gerootetes Android surft über die wechselnden und nicht aus der
Hardware abgeleitetden IPv6-Adressen.
  • Wie auch auf iPhones bleibt nur der Weg über das nachträgliche
Freischalten des Root-Zugangs oder über die Installation von
Custom-ROMs:
  • Mit dem für solche Verwaltungsaufgaben nötigen Root-Benutzer
lassen sich dann wieder die Sysctl-Werte setzen, die die
Privacy Extensions für IPv6 aktivieren.
  • Steht auf dem Telefon das Kommando sysctl bereit, reichen die Befehle
su
sysctl -w net.ipv6.conf.default.use_tempaddr=2
sysctl -w net.ipv6.conf.all.use_tempaddr=2
  • Nach einem Neustart vergisst Android diese Einstellungen jedoch wieder.
  • Man kann die beiden Befehle allerdings in eine Datei namens /data/local/userinit.sh schreiben.
  • Existiert diese Datei, führt Cyanogenmod die darin aufgelisteten Befehle beim Systemstart aus.

Mac OS X

Auch Apples Betriebssystem Mac OS X über die Privacy Extensions ermittelte IPv6-
Adressen erzeugen und einsetzen
  • Allerdings hat Apple dafür keinen Schalter vorgesehen.
  • Das Programm IPv6 Anonymizer von c't
    • zeigt den Status der Privacy Extensions,
    • schaltet sie an oder aus und
    • sorgt dafür, dass die Funktion auch
beim Neustart zur Verfügung steht.
Kommandozeile
  • Die Privacy Extensions lassen sich im Terminal (im Dienstprogramme-Ordner) mit einem Befehl aktivieren
sudo sysctl -w net.inet6.ip6.use_tempaddr=1
  • Damit das klappt, müssen Sie mit einem Benutzer angemeldet sein, der den Mac verwalten darf.
  • Leider verschwindet die Einstellung nach einem Neustart.

iPhone und iPad (IOS)

Noch schlechter als auf dem Apple-Desktop sah es bis vor kurzem unter den Mobil-
Betriebssystemen für iPhones und iPads aus
  • Bis zur Version 4.3 waren auch dort die Privacy Extensions abgeschaltet. Erst das Update aktiviert die
Erweiterung.
  • Im Unterschied zu Mac OS X steht aber auf den Mobilbetriebssystemen für iPhone und iPad kein vom
Hersteller vorgesehener Weg offen, die Privacy Extensions zu aktivieren oder abzuschalten.
  • Will man auf Geräten mit der IOS-Version kleiner als 4.3 die Privacy Extensions einschalten, hat man
nur dann eine Chance, wenn man einen Administrator-Zugang zum Betriebssystem hat (Jailbreak): In
diesem Fall reicht der Aufruf von
sudo sysctl -w net.inet6.ip6.use_tempaddr=1
  • respektive der Eintrag in die Datei /etc/sysctl.conf:
net.inet6.ip6.use_tempaddr=1
  • Starten Sie dazu im Terminal einen Editor mit root-Rechten und fügen Sie die Zeile am Ende der Datei
an.
sudo pico /etc/sysctl.conf
  • Nach einem Neustart der WLAN-Schnittstelle respektive einem Neustart des Geräts sollte die
Webseite http://ct.de/ip die zweite, über die Privacy Extensions erzeugte IPv6-Adresse anzeigen.

RFC 4291: Adressnotation

Reduktion durch Regel 3 darf nur einmal durchgeführt werden
  • Es darf höchstens eine zusammenhängende Gruppe aus Null-Blöcken in der Adresse ersetzt
werden.
2001:0db8:0:0:8d3:0:0:0

darf gekürzt werden zu

2001:db8:0:0:8d3::
oder
2001:db8::8d3:0:0:0
Wegen Mehrdeutigkeit Unzulässig
2001:db8::8d3::
2001:db8:0:0:0:8d3:0:0
  • interpretiert werden könnte
  • Es empfiehlt sich den Block mit den meisten Null-Blöcken zu kürzen.