linux-security security networking ipv6 firewall privacy-extensions

IPv6 Security: Beyond NAT (Artikel 335)

Sicherheitsaspekte von IPv6 in Linux-Umgebungen. Erfahren Sie alles über Neighbor Discovery Risiken, den Wegfall von NAT und die korrekte Absicherung von IPv6-Schnittstellen.

# IPv6 Security Mastery: Sicherheit im Next-Gen Netzwerk

TL;DR / Management Summary Viele Admins glauben, dass IPv6 “einfach wie IPv4 nur mit längeren Adressen” ist. Das ist ein gefährlicher Irrtum. Der Wegfall von NAT bedeutet, dass jeder Server theoretisch direkt aus dem Internet erreichbar ist. Zudem ersetzt das Neighbor Discovery Protocol (NDP) das alte ARP und bringt neue Angriffsvektoren mit. In diesem Modul lernen wir, wie wir IPv6 auf Linux-Hosts wasserdicht machen, Privacy Extensions richtig einsetzen und den IPv6-Datenstrom in der Firewall konsequent bändigen.


# 1. Einführung & Architektur

Das Ende des Versteckspiels.

In der IPv4-Welt bot NAT einen (trügerischen) Basisschutz. Bei IPv6 hat jedes Gerät eine Global Unicast Address (GUA).

# Die Bedrohungs-Matrix (Mermaid)

graph TD
    A[Internet: IPv6 Attacker] -->|Direct Access| B[Global Unicast Address]
    B --> C{Firewall: ip6tables / nftables}
    C -->|No Rule| D[EXPOSED: Internal Service]
    subgraph "Local Network Threats"
        E[Rouge Router] -->|False RA| F[Traffic Redirection]
        G[Neighbor Discovery] -->|Spoofing| H[MITM Attack]
    end
    F/H --> B

# 2. Die Firewall-Pflicht

Kein NAT ist kein Pardon.

Da es keine “natürliche Barriere” mehr gibt, muss die Host-Firewall (Artikel 091/309) für IPv6 absolut strikt sein.

# Best Practice: In nftables

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        
        # ICMPv6 ist ÜBERLEBENSWICHTIG für IPv6 (Nachbarschaftssuche)
        # Nicht einfach alles blockieren!
        icmpv6 type { 
            destination-unreachable, packet-too-big, 
            time-exceeded, parameter-problem, 
            echo-request, echo-reply, 
            nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert 
        } accept
        
        # SSH & Web
        tcp dport { 22, 80, 443 } accept
    }
}

# 3. IPv6 Privacy Extensions (RFC 4941)

Verschleierung vs. Management.

Privacy Extensions generieren zufällige, temporäre IPv6-Adressen für ausgehende Verbindungen.

  • Clients (Laptop): AN. Verhindert Tracking durch Webseiten.
  • Server: AUS. Ein Server muss für Firewalls und Monitoring eine feste Identität haben.

# Deaktivierung auf SLES/Arch

Datei: /etc/sysctl.d/10-ipv6-privacy.conf

net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
net.ipv6.conf.eth0.use_tempaddr = 0

# 4. Day-2 Operations: RA Guard & Discovery

Das Netz sauber halten.

# Router Advertisement (RA) Filterung

Ein Server sollte niemals selbst zum Router werden oder unautorisierte RAs annehmen.

# Akzeptiere nur RAs von bekannten Routern (Sysctl)
net.ipv6.conf.eth0.accept_ra = 1

# 5. Troubleshooting & “War Stories”

Wenn IPv6 das LAN flutet.

# Story 1: “Der unsichtbare Eindringling”

Symptom: Ein Admin hat eine perfekte IPv4 Firewall (iptables). Dennoch wird der Server gehackt. Ursache: IPv6 war aktiv, hatte aber keine Regeln (ip6tables war leer). Der Angreifer kam über die globale IPv6-Adresse direkt auf den Datenbank-Port. Lösung: Nutzen Sie immer die inet Familie in nftables (Artikel 309). Sie wendet Regeln automatisch auf v4 und v6 an.

# Story 2: “Das Duplicate Address (DAD) Desaster”

Symptom: Ein Server ist sporadisch nicht erreichbar. ip -6 addr zeigt den Status tentative. Ursache: Ein anderer Host im Netz nutzt die gleiche statische IPv6-Adresse. Der Linux-Kernel deaktiviert das Interface, um Kollisionen zu vermeiden. Lösung: Nutzen Sie EUI-64 (basierend auf MAC) für statische IPs oder prüfen Sie Ihr IP-Adress-Management (IPAM).


# 6. Fazit & Empfehlung

  • Symmetrie: Behandeln Sie IPv6 in Ihrer Firewall-Policy mit der gleichen Priorität wie IPv4.
  • ICMPv6: Blockieren Sie ICMPv6 niemals komplett. Ohne NDP/RA funktioniert IPv6 nicht.
  • Wahl: Deaktivieren Sie IPv6 nur, wenn Sie es absolut nicht kontrollieren können. Ein “halb-konfiguriertes” IPv6 ist das größte Sicherheitsrisiko.

# Anhang: Cheatsheet

Aufgabe Befehl
IPv6 Adressen sehen ip -6 addr
Routing Tabelle v6 ip -6 route
Nachbarn sehen (ARP) ip -6 neighbor
IPv6 Ping ping -6 google.com
Privacy Status sysctl net.ipv6.conf.all.use_tempaddr
Socket Listen v6 ss -tln6
Traceroute v6 traceroute6 oder tracepath6
Multicast Gruppen ip -6 maddr
Firewall Regeln v6 ip6tables -L oder nft list ruleset