Schutz gegen gefaelschte Router Advertisements
Schutz gegen gefaelschte Router Advertisements
In IPv6-Netzen konfigurieren sich Hosts ueber SLAAC (Stateless Address Autoconfiguration) selbst. Grundlage dafuer sind Router Advertisements (RA, ICMPv6 Typ 134), die ein Router periodisch und auf Anfrage (Router Solicitation, Typ 133) verschickt. Darin stehen Praefix, Default-Gateway, MTU und optional DNS-Server (RDNSS).
Das Problem: RAs sind standardmaessig nicht authentifiziert. Jeder Rechner im Segment kann RAs verschicken. Ein gefaelschter RA (Rogue RA) traegt beim Opfer ein falsches Gateway oder ein falsches Praefix ein. Damit wird der Angreifer zum Man-in-the-Middle oder legt die Konnektivitaet lahm (DoS). Haeufig passiert so etwas auch unabsichtlich, z.B. durch ein falsch konfiguriertes Windows mit Internet Connection Sharing oder eine fehlkonfigurierte VM.
Angriff im Labor zeigen
Zum Vorfuehren eignet sich das THC-IPv6-Toolkit.
- Paket installieren (Debian)
apt install thc-ipv6
- Einen einzelnen gefaelschten Router ankuendigen (Praefix und LL-Adresse frei gewaehlt)
- fake_router6 eth0 2001:db8:bad::/64
- Das Segment mit vielen zufaelligen RAs fluten (DoS, treibt CPU der Hosts hoch)
- flood_router26 eth0
Nach dem Start von fake_router6 sieht man auf einem ungeschuetzten Client eine zusaetzliche IPv6-Adresse aus dem Fremd-Praefix und einen zweiten Default-Eintrag.
- Auf dem Opfer kontrollieren
- ip -6 addr show dev eth0
- ip -6 route show
Schutz auf dem Switch: RA Guard
Der wirksamste Schutz sitzt auf dem Access-Switch, weil er den gefaelschten RA abfaengt, bevor er die anderen Hosts erreicht.
RA Guard (RFC 6105) klassifiziert jeden Switchport als Host-Port oder als Router-Port. RAs, die an einem Host-Port hereinkommen, werden verworfen. Nur an definierten Uplink-/Router-Ports sind RAs erlaubt.
Bei Cisco ist das Teil der "IPv6 First Hop Security":
ipv6 nd raguard policy HOST-POLICY
device-role host
!
interface GigabitEthernet0/1
ipv6 nd raguard attach-policy HOST-POLICY
Der Uplink zum echten Router bekommt stattdessen device-role router.
- Wichtig
Die erste RA-Guard-Generation liess sich mit IPv6 Extension Headers und Fragmentierung umgehen: Der RA wurde fragmentiert, sodass der Typ 134 fuer den Switch nicht sofort erkennbar war. RFC 7113 schliesst diese Luecke, indem fragmentierte Neighbor-Discovery-Pakete grundsaetzlich verworfen werden. Fuer den Produktiveinsatz also auf aktuelle Firmware achten.
Weitere First-Hop-Security-Mechanismen
RA Guard schuetzt nur gegen gefaelschte RAs. Das IPv6-Pendant zu ARP-Spoofing und zu Rogue-DHCP braucht weitere Bausteine, die meist aus derselben Switch-Feature-Familie stammen:
- DHCPv6 Guard
- Verwirft DHCPv6-Server-Antworten an Host-Ports (gegen Rogue-DHCPv6)
- ND Inspection / IPv6 Snooping
- Baut eine Binding-Tabelle (MAC - IPv6 - Port) auf und verwirft
gefaelschte Neighbor Advertisements (gegen NA-Spoofing)
- Source Guard
- Laesst an einem Port nur die per Snooping gelernten Adressen als
Absender zu (gegen Adress-Spoofing)
Host-seitiger Schutz unter Linux
Wo kein RA-Guard-faehiger Switch verfuegbar ist, kann man einen statisch konfigurierten Host so haerten, dass er RAs gar nicht auswertet oder nur die des echten Routers akzeptiert.
- RAs vollstaendig ignorieren (nur sinnvoll bei statischer Konfiguration)
- sysctl -w net.ipv6.conf.eth0.accept_ra=0
- Dauerhaft setzen
echo "net.ipv6.conf.eth0.accept_ra = 0" > /etc/sysctl.d/90-ra.conf
sysctl --system
Alternativ mit nftables nur RAs von der bekannten Link-Local-Adresse des echten Routers zulassen und alle anderen verwerfen. Die Link-Local-Adresse des Gateways vorher ermitteln:
- Gateway-Link-Local-Adresse anzeigen
- ip -6 route show default
- nftables-Regel (fe80
- :1 durch die echte Router-Adresse ersetzen)
table inet raguard {
chain input {
type filter hook input priority 0; policy accept;
icmpv6 type nd-router-advert ip6 saddr != fe80::1 drop
}
}
SEND: der kryptografische Ansatz
SEND (Secure Neighbor Discovery, RFC 3971) authentifiziert Router und Nachbarn kryptografisch ueber CGA (Cryptographically Generated Addresses) und Router-Zertifikate. Technisch sauber, in der Praxis aber kaum relevant: Es gibt fast keine Betriebssystem- und Switch-Unterstuetzung. Fuer die Vollstaendigkeit erwaehnt, als Produktivloesung spielt heute RA Guard die Hauptrolle.
Zusammenfassung
- Gefaelschte RAs sind ein ernstes IPv6-Risiko (MitM oder DoS)
- Primaerschutz: RA Guard auf dem Switch (Host-Ports verwerfen RAs)
- Auf RFC 7113 bzw. aktuelle Firmware achten (Fragmentierungs-Bypass)
- Ergaenzend: DHCPv6 Guard, ND Inspection, Source Guard
- Ohne managebaren Switch: Host-Haertung ueber accept_ra=0 oder nftables
- SEND ist die saubere, aber praktisch ungenutzte Krypto-Loesung