it-swarm.com.de

Müssen wir mit IPv6 NAT mehr) verwenden?

Ich frage mich, wie man NAT mit IPv6 verwendet. Scheint, dass Sie es nicht einmal mehr benötigen. Was genau ist das Konzept hinter Firewall-Konfigurationen in IPv6-Umgebungen?

54
キツネ

Es gibt einige weit verbreitete Verwirrung über NAT .

NAT war nie als Sicherheitsmerkmal gedacht. Es kommt jedoch vor, dass in den meisten Fällen (nicht allen), wenn ein Computer nur über NAT Zugriff auf das Internet hat, der Computer irgendwie "geschützt" ist. Es ist, als wäre das NAT - System von Natur aus auch eine Firewall.

Mal sehen, wie es funktioniert:

  • Ein IP-Paket hat eine Quell- und eine Zieladresse. Jeder Router entscheidet, nachdem er die Zieladresse gesehen hat, an welchen nachfolgenden Router das Paket gesendet werden soll.
  • Wenn ein Router NAT implementiert, leitet er ausgehende Pakete unter einem Deckmantel weiter. Die Pakete tragen nämlich die externe IP des Routers als Quelladresse, nicht die eigentliche Quelle. Bei eingehenden Paketen führt der Router den umgekehrten Vorgang aus. Die TCP/UDP Portnummern werden verwendet, um zu wissen, auf welchen internen Host sich die Pakete beziehen.
  • Aus Sicht des Routers verfügen die internen Hosts jedoch über (private) IP-Adressen, die direkt erreichbar sind. NAT dient zur Kommunikation zwischen den internen Hosts und Maschinen darüber hinaus dem Router.

Nehmen wir ein Beispiel:

Inner <---> HomeRouter <---> ISPRouter <---> The Internet

"Inner" ist Ihr PC. "HomeRouter" ist der Router, der das NAT ausführt. "ISPRouter" ist der Router bei Ihrem ISP.

Der "Firewall-Effekt" ist folgender: normalerweise, auch wenn "Inner" einen offenen Port hat (er läuft) Bei einem remote erreichbaren Dienst, z. B. einem lokalen Webserver an Port 80), können Personen aus dem "Internet" keine Verbindung herstellen. Der Grund ist folgender: Es gibt zwei Möglichkeiten, wie ein IP-Paket von HomeRouter an Inner übertragen werden kann:

  • Ein eingehendes Paket kann mit der Adresse von HomeRouter als Ziel geliefert werden und auf einen Port abzielen, von dem HomeRouter weiß, dass er mit einer ausgehenden Verbindung von Inner zu irgendwo im Internet verbunden ist. Dies funktioniert nur für eine Verbindung, die von Inner initiiert wurde, und dies impliziert, dass der Port nicht mit dem des Servers übereinstimmt, der auf Inner ausgeführt wird.

  • Ein IP-Paket enthält die private IP-Adresse von Inner als Ziel und wird irgendwie HomeRouter zur Kenntnis gebracht. ISPRouter kennt jedoch die private IP von Inner nicht und würde ein für diese Adresse bestimmtes IP-Paket nicht an HomeRouter weiterleiten. Quellrouting kann verwendet werden, um ein Paket mit der privaten IP-Adresse von Inner als Ziel zu kennzeichnen und Die öffentliche IP-Adresse von HomeRouter als Zwischenhost. Wenn ISPRouter das Quellrouting unterstützt, erreicht ein solches Paket unabhängig von NAT Inner. Es kommt also vor, dass fast kein ISP das Quellrouting unterstützt.

Daher beruht der "Firewall-Effekt" von NAT auf zwei Eigenschaften:

  • Angreifer sind weit: Angreifer injizieren keine Pakete direkt auf die Verbindung zwischen dem Heimrouter und dem ISP; Alle ihre Versuche müssen über die ISP-Router erfolgen.
  • ISP erlaubt kein Quellrouting. Dies ist der (sehr) häufige Fall.

Also in der Praxis gibt es viele Maschinen in Privathaushalten und kleinen Unternehmen, in die innerhalb von Sekunden gehackt werden kann, außer dass sie davon profitieren der "Firewall-Effekt" von NAT.


Was ist mit IPv6? NAT wurde entwickelt und bereitgestellt ( weit verbreitet bereitgestellt), um mit der Knappheit an freien IPv4-Adressen fertig zu werden. Ohne NAT hätte die IP-Kalypse bereits die Zivilisation zerstört (oder möglicherweise die tatsächliche Nutzung von IPv6 ausgelöst). IPv6 verwendet 128-Bit-Adressen anstelle der mageren 32-Bit-IPv4-Adressen, damit keine groben Problemumgehungen wie NAT verwendet werden müssen.

Sie können NAT mit IPv6 verwenden, aber es macht wenig Sinn - wenn Sie mit NAT leben können, warum sollten Sie überhaupt zu IPv6 wechseln?

Ohne NAT gibt es jedoch keinen "Firewall-Effekt", so schwach er auch sein mag. Die meisten Betriebssysteme sind jetzt IPv6-fähig und verwenden es automatisch, wenn die Möglichkeit dazu besteht. Wenn sich ein ISP dazu entschließt, IPv6 einfach so einzuschalten, sind viele Computer, die bisher hinter einem NAT "versteckt" waren, von außen erreichbar. Dies könnte zu einer weltweiten Hacking-Orgie werden. Es ist kein Wunder, dass ISP etwas ... zurückhaltend sind.

Um zu IPv6 nice zu wechseln, müssen Sie die Aktivierung mit einigen soliden, gut durchdachten Firewall-Regeln koppeln, die eingehende Verbindungen verhindern, die in einer NAT Welt (mit) nicht möglich waren die oben erläuterten Vorbehalte), sind aber jetzt dank der Magie von IPv6 machbar. Das operative Wort hier ist "denken": Dies wird einige Zeit von einigen Leuten erfordern, und das ist nicht kostenlos.

Es kann also vorausgesagt werden, dass IPv4 verwendet und beibehalten wird, solange es toleriert werden kann, und dank NAT und transparenten Proxys wird dies eine lange Zeit sein (insbesondere wenn es uns gelingt, die menschliche Bevölkerung unter 10 Milliarden zu halten).

69
Tom Leek

Das größte Problem beim Entfernen von NAT ist die Einschränkung des Datenschutzes. Mit IPv6 stelle ich fest, dass alle meine LAN-Geräte eine eindeutige öffentliche IPv6-Adresse haben, mit der jedes Gerät in einem LAN eindeutig identifiziert werden kann ermöglicht dann eine einfachere Identifizierung einzelner Geräte und Benutzer.

Auswirkungen auf den Datenschutz wie die Möglichkeit, Ihre Aktivitäten domänenübergreifend zu verfolgen. Anzeigenanbieter führen diese Art der Nachverfolgung offensichtlich bereits mit Cookies durch, aber das Entfernen von NAT) erleichtert die Nachverfolgung eines einzelnen Geräts.

9
Carl

Hinweis: Bei den Details dieser Antwort wird davon ausgegangen, dass Sie eine Linux-Box als Firewall verwenden. Wenn Sie eine andere Plattform verwenden, können die Details variieren, aber die meisten Prinzipien sollten weiterhin gelten.

Ich frage mich, wie man NAT mit IPv6 verwendet).

Nat für ipv6 wird von der IETF stark abgeraten. Trotzdem gibt es Implementierungen, wenn Sie es wirklich wollen. Zum Beispiel hat Linux es in Version 3.7 hinzugefügt.

Die Linux-Implementierung funktioniert im Wesentlichen genauso wie die Linux-Implementierung NAT für IPv4. Ich kann nicht mit anderen Implementierungen sprechen.

Scheint, dass Sie es nicht einmal mehr brauchen.

Menschen verwenden NAT aus verschiedenen Gründen.

  1. Bei Verfügbarkeit von Adressen möchten sie mehr Adressen für interne Hosts als öffentliche Adressen.
  2. Adressunabhängigkeit: Sie möchten ihre internen Adressen unabhängig von Änderungen an ihrer Konnektivität beibehalten.
  3. Datenschutz möchten sie die Details ihres internen Netzwerks verbergen und von welchem ​​internen Host die Anfrage von außen gestellt wird.
  4. Sicherheit, a NAT fungiert letztendlich als grobe Stateful-Firewall (obwohl es möglicherweise keine sehr gute ist). Außerdem ist es wahrscheinlich, dass sie geschlossen geschlossen wird, wenn NAT Regeln können nicht geladen werden. Das wahrscheinliche Ergebnis ist das Fehlen einer Konnektivität anstelle einer offenen Konnektivität.

Gleichermaßen hat NAT eine Reihe von Nachteilen (und zumindest einige dieser Nachteile haben Auswirkungen auf die Sicherheit).

  1. Einige Protokolle können durch NAT) beschädigt werden (obwohl dies auch für Stateful Firewalls gelten kann)
  2. Jede Verbindung muss nachverfolgt werden, und es gibt nur eine begrenzte Anzahl von Ports. Dies kann zu Denial-of-Service-Schwachstellen führen.
  3. Wenn Missbrauch erkannt wird NAT kann die Quelle des Missbrauchs verbergen.
  4. Die Handhabung eingehender Dienste kann problematisch sein. Der Zugriff lokaler Clients auf externe IP-Adressen kann ein besonderer Komplexitätspunkt sein.

Ipv6 behebt den Adressengpass. Es löst das Problem der ISP-Unabhängigkeit, indem Sie öffentliche und private Adressen parallel ausführen können (dies führt jedoch zu eigenen Problemen). Datenschutzerweiterungen verbergen, auf welchem ​​Computer in einem Subnetz eine Anfrage gestellt wird, verbergen jedoch nicht, in welchem ​​Subnetz sie sich befinden.

Was genau ist das Konzept hinter Firewall-Konfigurationen in IPv6-Umgebungen?

Sie können eine Stateful-Paketfilterung ohne NAT durchführen, z. B. eine Grundkonfiguration, um alle ausgehenden Verbindungen zuzulassen und eingehende Verbindungen zu verbieten.

ip6tables -P FORWARD DROP
ip6tables -A FORWARD -i ethinternal -j ACCEPT
ip6tables -A FORWARD -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT

Die Firewall verfolgt weiterhin Verbindungen auf die gleiche Weise wie ein Nat, verwendet diese Informationen jedoch nur zum Filtern von Paketen und nicht zum Durchführen von Übersetzungen.

Eine Sache, bei der Sie vorsichtig sein müssen, ist sicherzustellen, dass Ihre Firewall nicht geschlossen ist. Ich würde vorschlagen, dass Sie die Weiterleitung NICHT in sysctl.conf aktivieren, sondern am Ende Ihres Firewall-Skripts aktivieren und "set -e" in Ihrem Firewall-Skript verwenden. Auf diese Weise wird die Weiterleitung nur aktiviert, wenn das Firewall-Skript erfolgreich ausgeführt wird.

Wenn Sie auch den Datenverkehr zur/von der Firewall selbst filtern möchten, müssen Sie über ICMP nachdenken. Einige Arten von ICMP müssen von der lokalen Verbindung zugelassen werden, da sonst das Netzwerk stark beschädigt wird.

Abgesehen davon unterscheidet es sich nicht wesentlich von ipv4. Entscheiden Sie, was Sie zulassen möchten, und lassen Sie es zu.

8
Peter Green

NATs sind nicht wirklich magisch sicherer als öffentliche Adressen (und haben aufgrund der Art der Adressübersetzung viele eigene böse Warzen). Um zu Ihrer privaten IPv4-Adresse zu gelangen, muss ein Angreifer lediglich auf Ihren Router zeigen, und dann liegt es ganz bei der Firewall, diesen Datenverkehr herauszufiltern.

Der Wechsel zu ipv6 ändert diesbezüglich nichts, außer dass Ihr gefiltertes Subnetz nicht nur von Angreifern, sondern von der Welt routbar ist. Alles andere bleibt gleich - wenn Sie ein IPv6-Subnetz einschränken müssen, unterklassifizieren Sie Ihre/64 und wenden Firewall-Regeln an, um herauszufiltern, welcher Datenverkehr darauf zugreifen darf.

5
mricon

NAT ist eine Technik, mit der ein Router den über ihn verbundenen Hosts die Freigabe einer einzelnen IP-Adresse ermöglichen kann.

Der Router verfolgt, welche Hosts Verbindungen haben, und Hosts können verlangen, dass bestimmte Daten an sie weitergeleitet werden. Bei Spielen wird beispielsweise normalerweise die Umleitung des UDP-Datenverkehrs an einem bestimmten Port angefordert.

Umgekehrt wird jedes Paket verworfen, das anscheinend nicht für jemanden bestimmt ist, den der Router kennt (wie ein Brief ohne lesbare Adresse). Dadurch funktioniert es wie eine Firewall.

IPv6 hat praktisch unbegrenzte Adressen, und Haushalte/Router werden wahrscheinlich viel zu verteilen haben. NAT wird nicht mehr benötigt.

Dadurch wird der Firewall-Effekt entfernt. Es wird wahrscheinlich durch geeignete Firewalls ersetzt, die ebenso restriktiv wie ärgerlich sind, um dummen Endbenutzern eine ähnliche Sicherheit zu bieten. Richtige Firewalls zu haben, ist ein großer Schritt voraus, und ich hoffe, dass dies eher früher als später geschieht.

2
Lodewijk

Das grundlegende Problem, das die Internetarchitekten mit NAT) unbehaglich macht, ist, dass es im Widerspruch zum End-to-End-Prinzip zu stehen scheint. Dies besagt im Grunde, dass Router der Zwischenschicht 3 den Verbindungsstatus der Schicht 4 ignorieren sollten, damit Pakete kann effizient über alternative Routen geroutet werden. NAT ist jedoch im Kontext einer Stateful Firewall einfach zu implementieren, und so sollte es angezeigt werden.

Der Bedarf an Firewalls wurde deutlich, als sich das Internet Ende der 80er Jahre seinem 20. Geburtstag näherte. Heutzutage müssen alle Daten, die in ein privates Netzwerk ein- und ausgehen, eine Firewall passieren, die den Verbindungsstatus verfolgen muss, um Pakete effektiv filtern zu können.

Obwohl es 1994 überhaupt nicht klar war, ist NAT eine Firewall-Funktion, deren Hauptzweck darin besteht, zu verhindern, dass private Daten das private Netzwerk verlassen), wenn Sie die Anforderung zur Wiederverwendung von Adressen aufheben.

Insbesondere wenn ein Client eine Verbindung zu einem externen Server herstellt, darf der private Teil der Quelladresse (Routing-Präfix, Host-ID und Port), der im privaten Netzwerk verwendet wird, niemals in ein externes Netzwerk gelangen.

Die Linux Ip6tables NAT ist seit Kernel Version 3 verfügbar und erledigt einen durch und durch professionellen Job, z. B. indem eindeutige zufällige Hostadressen erstellt werden, die nur für eine einzelne Sitzung gültig sind.

Leider wurde diese Funktion nicht vollständig dokumentiert, da niemand einen Anwendungsfall entwickelt hat! Nun, hier ist es. Und wenn Sie schon dabei sind, können Sie auch sicherstellen, dass die Portnummern enthalten sind.

Bei dieser Betrachtung muss die Firewall den Status halten, und NAT wird von der Firewall ausgeführt, sodass es nie ein NAT Router. Das End-to-End-Prinzip gilt nicht.

Ich denke, die Lehre ist, dass Internetarchitekten beim Entwerfen von Internetprotokollen bleiben und das Firewall-Design Sicherheitsarchitekten überlassen sollten.

0
Terry Horridge

IPv6 macht die Notwendigkeit des Ziels NAT für eingehende Verbindungen) überflüssig und liefert sie stattdessen an Hosts auf der lokalen Verbindung mit intakter (öffentlicher) Zieladresse. Nach außen gerichtete Router kündigen extern verfügbare Präfixe für alle internen an Hosts und dann Hosts können Adressen mit diesen Präfixen zu ihren Schnittstellen auf der lokalen Verbindung hinzufügen, um die eingehenden Verbindungen zu empfangen.

Ich bin nicht davon überzeugt, dass wir die Notwendigkeit von source NAT für ausgehende Pakete) beseitigt haben. Die Standardeinstellung scheint zu erfordern, dass der Client sich auf die gleiche Weise eine öffentliche Adresse zuweist und diese der Außenwelt durch Verwendung derselben Host-ID wie die lokalen Linkadressen.

Nun, es tut mir leid, dass private Informationen an das öffentliche (nicht vertrauenswürdige) Internet weitergegeben werden, was in meinem Buch einen Verstoß gegen die Vertraulichkeit darstellt - eine der drei Säulen der Sicherheit, wie wir sie heute verstehen.

Ich glaube, NAT sollte verwendet werden, um den privaten Teil der Quelladresse (Routing-Präfix, Host-ID und Port) in einen zufälligen Wert auf einer Firewall zu übersetzen, die die Grenze zwischen dem öffentlichen Internet und einem privaten schützt Netzwerk.

0
Terry Horridge