IPv6

Aus LaborWiki
Wechseln zu: Navigation, Suche

Im Labor steht IPv6 per ra oder dhvpv6 bereit und fast alle Dienste lassen sich darüber nutzen


Sicherheit[Bearbeiten]

Alle bei euch laufenden Dienste sind aus dem Internet erreichbar, also denkt daran die Ports dicht zu machen. Es sollte jedoch tunlichst ipv6-icmp erlaubt sein, sonst kann man nicht automatisch eine Adresse aushandeln lassen (router advertisement kommt gut).

Beispiel:

iptables -A INPUT -p ipv6-icmp -j ACCEPT

Privatsphäre[Bearbeiten]

Da IPv6 Adressen in der Linux-Kernel Standardkonfiguration mit Hilfe der MAC Adresse gebildet werden, kann es sinnvoll sein das Verbreiten seiner MAC zu unterbinden. Einzelne Nutzer lassen sich sonst einfach über ihre MAC identifizieren - auch aus verschiedenen Netzen.

Beispiel:

MAC: 00:e0:18:a4:29:21
IPv6: 2001:6f8:13cb:1:2e0:18ff:fea4:2921


Zufällige Adressen[Bearbeiten]

sysctl net.ipv6.conf.ethX.use_tempaddr=$wert

Eine Konfiguration über "all" oder "default" hat keine Auswirkungen.

  • $wert=0 disable Privacy Extensions
  • $wert=1 enable Privacy Extensions, but prefer public addresses over temporary addresses.
  • $wert=2 enable Privacy Extensions and prefer temporary addresses over public addresses.

Es wird erst eine neue Adresse generiert nachdem man die Adresse mit Gültigkeitsbereich:Global / Scope:Global gelöscht hat.

ifconfig ethX inet6 del ipv6/64

Mit Hilfe des Befehls

ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
   inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
   link/ether 00:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
   inet 10.0.1.230/24 brd 10.2.0.255 scope global eth0
   inet6 2001:x:x:x:1166:8a68:371b:672/64 scope global secondary dynamic 
      valid_lft 2088sec preferred_lft 1088sec
   inet6 2001:x:x:x:2xx:xxff:fexx:xxxx/64 scope global dynamic 
      valid_lft 2994sec preferred_lft 1994sec
   inet6 fe80::2xx:xxff:fexx:xxxx/64 scope link 
      valid_lft forever preferred_lft forever

lassen sich die aktuellen Adressen mit ihrer Gültigkeitsdauer anzeigen.

Konfig beim booten[Bearbeiten]

  • ipv6 in /etc/modules da sysctl sonst vor dem laden des Moduls ausgeführt wird
  • use_tempaddr in /etc/sysctl.d/10-network-security.conf eintragen

Kurzinfo IPv6[Bearbeiten]

warum IPv6[Bearbeiten]

Das Standardargument ist der größere Addressraum. Meist wird das ausser kraft gesetzt mit "Ich benutze NAT und habe das Problem nicht". Darauf kommt dann ein "NAT ist die Pest auf Erden" oder etwas vergleichbares. Jedem sollte allerdings klar sein, das NAT in der IPv4 die temporäre Lösung für ein paar Probleme ist und somit nicht die Frage sein sollte "Wie macht IPv6 NAT?" sondern "Was sind die Probleme die NAT löst und wie werden sie bei IPv6 gelöst?". NAT versucht folgende Probleme zu lösen:

  • nicht genug Addressen
  • verstecken der Netzwerkinfrastruktur
  • bereitstellen von externer Konnektivität bei weniger IPs als Rechner (z.B. wenn 10 Rechner hinter einem DSL-Anschluss liegen)
  • privater, im Internet nicht gerouteter Netzwerktraffic
  • Annonymität
  • Sicherheit

Na... klingelt es schon? Nein? OK! IPv6 stellt ein paar mehr Addressen bereit. Verstecken der internen Netzwerkstruktur ergibt sich aus der Vergabe von ULA (Unique Local Address) - etwa das was die privaten Addressen in IPv4 sind. Jetzt stellt sich natürlich die Frage "Wenn ich eine private Addresse verwende, es aber kein NAT gibt, wie soll der Rechner dann ins Internet kommen?". Dafür wird einfach eine zweite IP vergeben. Eine die sowohl extern als auch intern zu erreichen ist. Wenn du also im lokalem Netz unterwegs bist, verwendest du automatisch die ULA, verbindest du dich zu einem Rechner, der nicht in deinem Segment liegt, wird die öffentliche IP verwendet. Da stellt sich natürlich sofort die Frage "Wozu brauche ich zwei IPs? Ich könnte doch einfach einen Router hin stellen der dann für mich NAT macht!", ja könnte man. Aber NAT ist die Pest ;-) , denn:

  • Ende zu Ende verbindungen sind faktisch nicht möglich, da immer einer dazwischen sitzt der die IPs verbiegt
  • Zustandsorientiert Protokolle wie FTP sind gar nicht möglich, da hier der Client dem Server mitteilt wohin verbunden wird - ein NAT-Gerät muss also deep package inspection machen um diese Information zu bekommen und entsprechent verbiegen. Identd ist auch so ein Fall (die leute die IRC benuten kennen das sicherlich)
  • Authentitizität/Integrität kann auch nicht sicher gestellt werden, da das Paket sowohl beim verlassen des eigenen Netzwerkes, als auch beim empfangen an der Grenze zum eigenem Netzwerk manipuliert werden muss

Betrifft die meisten sicherlich nicht. Aber schon mal das Gefühl gehabt, dass dein Traffic langsamer wird je mehr Verbindungen du offen hast? Ein Teil davon geht sicherlich auf die höher Anzahl von Protokollheadern. Aber nicht so viel, als dass man das wirklich merken könnte. Es ist eher der Fall, dass dein NAT-Device gerade etwas wärmer wird, weil es nicht nur die IP austauschen muss, sondern in der Konsequenz auch noch die Header Checksum wieder gerade biegen muss. Ferner darf sich das NAT-Device auch noch merken, welche IPs wie ausgetauscht werden soll. Wie gesagt: "NAT ist die Pest auf Erden!"
Dann wäre da der Punkt mit der Annoymität. Sorry, aber wer das Argument bringt und gerade das Heimnetzwerk verdrahtet hat tut mir leid... Egal wer aus dem Netzwerk es war, ob deine kleine Schwester, die gerade das Pentagon auseinander nimmt oder der Wardriver von nebenan, es fällt immer auf die zurück die den Anschluss bezahlen. Bleibt noch der Punkt mit der Sicherheit. Es ist offensichtlich klar, dass wenn nicht die Möglichkeit besteht sich zu einer IP zu verbinden dies auch von remote kein Angriffsziel sein kann. Automatisierte Hacks gegen Dienste die sich hinter einem NAT-Device befinden greifen also nicht. Also gibt es genau zwei Möglichkeiten entweder man greift von aussen das NAT-Device an und nutzt hier eine nicht behobene Sicherheitslücke aus, oder, und das ist der einfache Weg, man installiert auf *einem* Rechner hinter dem NAT-Device einfach einen Trojaner. Stimmt NAT bietet einen gewissen schutz, der aber durch eine Firewall wesentlich besser und umfangreicher abgebildet werden kann. Willst du, dass ein Service von aussen erreichbar ist, muss dies durch Portforwarding resp PAT auf dem NAT-Device konfiguriert werden. Entwedwer in der Web-GUI auf dem NAT-Device, via UPNP oder eben direkt auf der Konsole. Zwei unterschiedliche Server die den gleichen Dienst anbieten hinter einer NAT-Addresse? Z.B. zwei Gameserver - Viel spass!

mehr als IP verwalten[Bearbeiten]

"Und ausserdem ist es doch viel zu viel aufwand zwei IPs zu verwalten weil mit DHCP bekomme ich ja nur eine und zweite dann von Hand einzutragen - *grusel*" Und jetzt der Schock: DHCPv4 ist nicht kompatiebel mit DHCPv6 resp mit Router Advertisment in IPv6 ;-). Nein ernsthaft in IPv6 ist es per Design vorgesehen, dass mehr als eine IP vorhanden ist. Daher ist die Konfiguration auch ähnlich trivial. Es ist nichtmal notwendig, dass du einen DHCP-client startest, denn der IPv6 Stack sieht vor, dass automatisch konfiguriert wird.