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 |