IPv6 address provisioning: theory and practice

Everybody who starts (consciously) integrating IPv6 in their network has to decide how to provision IPv6 addresses, default routes and recursive DNS server (RDNSS) information to all clients.

To make this simple and automated, IPv6 includes SLAAC (StateLess Address Auto Configuration). This is a good thing, but it’s stateless, so you no longer manage your IP address provisioning centrally (as you did with DHCP in IPv4) and thus lose traceability (i.e. which node has which IP at any given time). Moreover, SLAAC supports provisioning of RDNSS information only since RFC 6106 (November 2010), and not everybody supports this. For example, Microsoft doesn’t, and it doesn’t seem to have any intention of changing this.

Many believe this is reason enough to forget about SLAAC – or at least try to – and use DHCP just like in the good old IPv4-only days. Indeed, there is such a thing as DHCPv6, but unfortunately it doesn’t provision default router information, and, once again, not everybody supports it. For example, Android doesn’t, and it doesn’t seem to have any intention of changing this.

This means most of us will end up with a mixture of SLAAC and DHCPv6 (either the stateless or stateful variant), which is not a problem in theory because IPv6 Router Advertisements (the ICMPv6 message type used for SLAAC) have flags for that.

ICMPv6 Type 134 (Router Advertisement) flags:
  • M – Managed Address Configuration. DHCPv6 is available for IPv6 address allocation.
  • O – Other Configuration. Other configuration information is available through DHCPv6 (e.g. the RDNSS).

Flags in prefix information option:

  • A – Address Configuration flag. The prefix can be used for stateless address configuration (SLAAC).
  • L – On-Link flag. The prefix can be used for on-link determination (other IPv6 addresses with the same prefix are on the same L2 subnet).

But how do implementations behave if the information provided by Router Advertisement conflicts with that from DHCPv6 due to human error, conflicting default settings or an attacker? And how do such conflicts affect network stability and security?

This is what the talk from Enno Rey at the last Tech Talk of the Swiss IPv6 Council in Zurich was about. Enno presented the results of the research he and his team conducted in their IPv6 lab at ERNW in Heidelberg.

Some examples of the findings:
  • Windows 8.1 configures IPv6 address from DHCPv6, despite the fact that the Management flag (M) in the Router Advertisement is not set.
  • If both SLAAC and DHCPv6 provide RDNSS information and M/A/O flags are set, Fedora, Centos and OS X configure RDNSS information from both sources, Ubuntu only from the RAs, and Windows only from DHCPv6.
  • If two routers send RAs with conflicting M/O flags, basically all operating systems behave differently.

Continue reading “IPv6 address provisioning: theory and practice”

IPv6 Adress-Autokonfiguration aus Security-Sicht

Wer in seiner Organisation IPv6 einführt, muss sich darüber Gedanken machen, wie die Adressvergabe für Server und Clients geregelt werden soll. Dabei spielen auch Sicherheits- und Privatsphären-Aspekte eine Rolle. In diesem Beitrag wollen wir dazu die Themen Adress-Autokonfiguration und Privacy Extensions etwas näher betrachten.

SLAAC – Autokonfiguration

Neben den von IPv4 bekannten Möglichkeiten – statische Adresskonfiguration oder DHCP – gibt es für IPv6 zusätzlich den Mechanismus der Adress-Autokonfiguration (RFC 4862: IPv6 Stateless Address Autoconfiguration, SLAAC). Dieser bedarf weder einer manuellen Konfiguration auf dem Client noch einer zentralen Instanz, welche die Adressen zuteilt. Der lokale Teil der IPv6-Adresse (Interface Identifier, IID, 64 Bit) wird dabei lokal auf dem Host gebildet, und zwar gemäss Standard abgeleitet von der MAC-Adresse des Interfaces nach dem Modified EUI-64 Verfahren.

ipv6adresse
IPv6-Adresse bestehend aus Präfix (Global Routing Präfix + Subnet ID) und Interface ID. Die Interface ID ist hier aus der MAC-Adresse 3c:07:54:5d:45:67 abgeleitet nach dem Modified EUI-64-Verfahren.

Da die MAC-Adresse in aller Regel gleich bleibt, hat nun der Host – beispielsweise der Laptop eines Geschäftsreisenden – weltweit eine IPv6-Adresse, deren letzten 64 Bit immer konstant bleiben. Dadurch hat man neben den existierenden Tracking-Mechanismen (Cookies, Browser-Fingerprint, etc.) noch ein statisches Datum, mit dem der Client auf Ressourcen zugreift – und damit dauerhaft und weltweit trackbar ist. Ein Problem für die Privatsphäre des Nutzers. Continue reading “IPv6 Adress-Autokonfiguration aus Security-Sicht”