Overlaynetzwerke
Aus BraLUG-Wiki
Strohi (Diskussion | Beiträge) (Artikel erstellt) |
Strohi (Diskussion | Beiträge) (→Problemlösungen/Konzepte: krypto exkurs angefangen) |
||
(4 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 17: | Zeile 17: | ||
* Darknets | * Darknets | ||
− | == Motivation und | + | == Motivation und Fokus == |
− | Über die Jahre habe ich viele, teils vom Ansatz her grundlegend | + | Über die Jahre habe ich viele, teils vom Ansatz her grundlegend verschiedene Lösungen kennengelernt. Da einige davon nützliche Helfer im Alltag geworden sind und andere unerlässlich und permanent laufen gibt es darüber nun einen Überblick. |
− | Am Ende soll einem bewusst sein, dass es nicht nur OpenVPN und kommerzielle VPN Lösungen gibt, sondern viele nützliche Tools die sowohl dem Hacker als auch | + | Am Ende soll einem bewusst sein, dass es nicht nur OpenVPN und kommerzielle VPN Lösungen gibt, sondern viele nützliche Tools die sowohl dem Hacker als auch Anwender den Alltag und bei besonderen Herausforderungen dienlich zur Seite stehen. |
== Motivation und Szenarien == | == Motivation und Szenarien == | ||
Zeile 33: | Zeile 33: | ||
[szenarien.png] | [szenarien.png] | ||
− | == | + | == Historisches == |
− | In der Fachliteratur wird auch immer über die alten Zeiten | + | In der Fachliteratur wird auch immer über die alten Zeiten erzählt, also auch hier. |
− | + | Ganz früher mussten direkt Leitungen zwischen Unternehmensstandorten angemietet (leased lines) oder eigene Verlegt werden. | |
Für Außendienstmitarbeiter bestand die Möglichkeit sich per Modem über eine DFÜ-Verbindung in die Firma einzuwählen. Hierzu mussten aber entsprechende Leitungen und Farmen an Modems vorgehalten werden. Zudem wurde DFÜ mit dem aufkommen von DSL und (TV)Kabelleitungen unattraktiv weil die sehr langsam sind. | Für Außendienstmitarbeiter bestand die Möglichkeit sich per Modem über eine DFÜ-Verbindung in die Firma einzuwählen. Hierzu mussten aber entsprechende Leitungen und Farmen an Modems vorgehalten werden. Zudem wurde DFÜ mit dem aufkommen von DSL und (TV)Kabelleitungen unattraktiv weil die sehr langsam sind. | ||
Zeile 42: | Zeile 42: | ||
Einwahlverbindungen und leased lines sind aber teuer, ersteres sogar verdammt langsam. Daher wurde aufbauend auf dem vorhandenem Netzwerk (gemeinhin Internet) aufgesetzt und virtuelle Netzwerktechnik entwickelt. | Einwahlverbindungen und leased lines sind aber teuer, ersteres sogar verdammt langsam. Daher wurde aufbauend auf dem vorhandenem Netzwerk (gemeinhin Internet) aufgesetzt und virtuelle Netzwerktechnik entwickelt. | ||
− | Dadurch wird man unabhängiger von Unwetter und Streiks, man kann von quasi Überall in andere nicht öffentliche Netzwerke. Desweiteren führt man | + | Dadurch wird man unabhängiger von Unwetter und Streiks, man kann von quasi Überall in andere nicht öffentliche Netzwerke. Desweiteren führt man in der Regel eh mindestens ein Computer (Telefon), eher mehrere (Telefon, Tablet, Notebook) mit sich und ist dadurch flexibel was Bereitschaftsdienste und Arbeitsorte angeht. |
+ | |||
+ | Als noch heile Welt herschte und die Netzwerke freundlich waren, war auch Kryptografie zweitrangig. Aber nach und nach wurden Protokolle wie Telnet durch Protokolle wie SSH abgelöst. Daher schauen wir uns auch nur Lösungen mit kryptografischer Komponente an. | ||
== Problemstellungen == | == Problemstellungen == | ||
Zeile 63: | Zeile 65: | ||
== Problemlösungen/Konzepte == | == Problemlösungen/Konzepte == | ||
Hier stell ich kurz unser Blöcke/Buildingsblocks vor mit denen wir die Probleme lösen können | Hier stell ich kurz unser Blöcke/Buildingsblocks vor mit denen wir die Probleme lösen können | ||
+ | |||
+ | === Netzwerk Exkurs === | ||
Netzwerkverbindung zwischen zwei Rechnern via UDP oder TCP. Als Nutzlast/Payload wird dann unsere speziell eingepackten Nutzdaten verschickt. | Netzwerkverbindung zwischen zwei Rechnern via UDP oder TCP. Als Nutzlast/Payload wird dann unsere speziell eingepackten Nutzdaten verschickt. | ||
Zeile 69: | Zeile 73: | ||
[IP-H.][UDP-Header][Nutzdaten] oder [IP-H.][TCP-H][Nutzdaten] | [IP-H.][UDP-Header][Nutzdaten] oder [IP-H.][TCP-H][Nutzdaten] | ||
− | Sagen wir ein IP kann 1500 Bytes aufnehmen und ein UDP enthält z.b. 2 Byte Quell-Port, 2 Byte Zielport, 2 Byte Längen und 2 Byte Prüfsummen Felder. | + | Sagen wir ein IP-Paket kann 1500 Bytes aufnehmen und ein UDP-Paket enthält z.b. 2 Byte Quell-Port, 2 Byte Zielport, 2 Byte Längen und 2 Byte Prüfsummen Felder. |
Das hieße es gehen von unseren 1500 Bytes 8 Bytes ab und es bleiben 'nur' 1492 Bytes für die Datenlast über. | Das hieße es gehen von unseren 1500 Bytes 8 Bytes ab und es bleiben 'nur' 1492 Bytes für die Datenlast über. | ||
− | In einem TCP-Header werden viel mehr Informationen untergebracht. Wenn da z.b. 30 Byte mehr Informationen untergebracht werden sinkt die transportierbare Datenlast auf nur 1460 bytes. Wer das genauer wissen will, dem seien die Wikipediaseiten zu TCP/IP und UDP oder einschlägige Fachliteratur nahegelegt. | + | In einem TCP-Header werden viel mehr Informationen untergebracht. Wenn da z.b. 30 Byte mehr Informationen untergebracht werden sinkt die transportierbare Datenlast auf nur 1460 bytes. Wer das genauer wissen will, dem seien unter anderem die Wikipediaseiten zu TCP/IP und UDP oder einschlägige Fachliteratur nahegelegt. |
− | Als Quintessenz kann man sich merken, wenn man Netzwerkpakete einpackt, sind Zwangsläufig die | + | Als Quintessenz kann man sich merken, wenn man Netzwerkpakete einpackt, sind Zwangsläufig die transportierbare Nutzdatenlast. |
Originalpaket | Originalpaket | ||
Zeile 80: | Zeile 84: | ||
[IP-Header'][TCP o. UDP Header'][IP-Header][TCP o. UDP header][Nutzdatenlast ] | [IP-Header'][TCP o. UDP Header'][IP-Header][TCP o. UDP header][Nutzdatenlast ] | ||
− | + | === Krypto Exkurs === | |
− | + | Es gibt zwei grobe Konzepte wie man Daten verschlüsseln kann. Von den speziellen Algorithmen (zum Verarbeiten der Nutzdaten) einmal abgesehen liegt der Hauptunterschied beim Schlüsselmaterial. Bei symmetrischer Verschlüsselung gibt es nur einen gemeinsamen unter Kommunikationsteilnehmern geteilten Schlüssel. Bei asynchroner oder Public-Key-Kryptofrafie hat jeder Teilnehmer ein Schlüsselpaar.• | |
+ | Der öffentliche Schlüssel einer Person X dient dazu, dass andere Teilnehmer nur für Person X verschlüsseln können und der geheime Schlüssel dazu nur um an Person X gesendete Daten zu entschlüsseln. | ||
+ | Das Person X den geheimen Schlüssel für sich behalten sollte, wenn andere nicht die an sich gerichteten Daten entschlüsseln dürfen, versteht sich von selbst. | ||
+ | Der öffentliche darf und muss 'öffentlich' sein, Öffentlich insofern, dass er nicht Zwangsläufig in der Tageszeitung abgedruckt wird, aber für andere potenzielle Kommunikationspartner verfügbar ist. | ||
+ | Um einen sicheren Transportkanal zu haben, wird eine TLSverbindung aufgebaut. Mit TLS 1.2 steht einem dann ein sicherer Kanal für Nutzdaten zur verfügung. Von SSL und TLS1.0 sollte man inzwischen aber absehen. Promintestes Beispiel für so ein Konstrukt ist HTTPS. Dafür wird statt über Port 80 zu Port 443 die Verbindung aufgebaut und die eigentlichen HTTP Daten werden in TLS Nachrichten gewrapt. Am Zielrechner werden die wieder ausgepackt und zum eigentlichen Dienst weitergeleitet. | ||
+ | %beispiel grafik | ||
== Werkzeuge == | == Werkzeuge == | ||
Zeile 93: | Zeile 102: | ||
− | + | == SSH == | |
Der klassiker sind SOCKS-tunnel | Der klassiker sind SOCKS-tunnel | ||
Zeile 117: | Zeile 126: | ||
sshuttle basiert auf SSH, bringt aber gleichzeitig Iptablesregeln mit, mit derer Hilfe Datenpaketen für ganze Netze über den SSH-Tunnel transportiert werden. | sshuttle basiert auf SSH, bringt aber gleichzeitig Iptablesregeln mit, mit derer Hilfe Datenpaketen für ganze Netze über den SSH-Tunnel transportiert werden. | ||
Für den Client also transparent und ganz ohne Konfiguration von Socks oder ähnliches. | Für den Client also transparent und ganz ohne Konfiguration von Socks oder ähnliches. | ||
+ | |||
+ | Statt sshuttle lässt sich vielleicht auch autossh benutze, um SSH session automatisch nach abbruch zu erneuern. | ||
+ | http://www.harding.motd.ca/autossh/ | ||
=== Single Port geschichten / Services exponieren === | === Single Port geschichten / Services exponieren === | ||
Zeile 138: | Zeile 150: | ||
=== Zentralisierte VPN === | === Zentralisierte VPN === | ||
− | + | === OpenVPN === | |
OpenVPN eignet sich hervorragend für Master-Client Setups. Z.b. um Außendienstmitarbeiter anzubinden oder wenn man mit seinen Mobilgeräten nur in das Heimnetz zu Hause will. | OpenVPN eignet sich hervorragend für Master-Client Setups. Z.b. um Außendienstmitarbeiter anzubinden oder wenn man mit seinen Mobilgeräten nur in das Heimnetz zu Hause will. | ||
Zeile 148: | Zeile 160: | ||
− | + | === tinc === | |
Als MeshVPN benutz ich tinc. Das hat sich als robust genug erwiesen. | Als MeshVPN benutz ich tinc. Das hat sich als robust genug erwiesen. | ||
Zeile 154: | Zeile 166: | ||
== Allgemeine Anmerkungen, Nebenbedingungen == | == Allgemeine Anmerkungen, Nebenbedingungen == | ||
+ | === DNS === | ||
DNS im Zweifel auch durchtunneln. Es ist recht dämlich die DNS Anfrage über die direkte Leitung zu schicken, wenn man danach die kritischen Daten über abgesicherte Verbindung anfragt und verschleiern will was man da für Daten hat. | DNS im Zweifel auch durchtunneln. Es ist recht dämlich die DNS Anfrage über die direkte Leitung zu schicken, wenn man danach die kritischen Daten über abgesicherte Verbindung anfragt und verschleiern will was man da für Daten hat. | ||
+ | |||
+ | === Routing === |
Aktuelle Version vom 26. Oktober 2015, 11:37 Uhr
Inhaltsverzeichnis |
[Bearbeiten] Overlaynetzwerke, der Artikel zum Talk
Dieser Artikel im Nachgang zum Vortrag im 2015er Programm "Overlaynetzwerke - von Überall ins Netz" entstanden.
Die Struktur lehnt sich daher an dem Aufbau des Vortrages an.
[Bearbeiten] Welche Netze
- Eigene Netze
* zu Haus * Firma * mit Freunden * Kundennetze ...
- andere Netze
* Fremde länder * Darknets
[Bearbeiten] Motivation und Fokus
Über die Jahre habe ich viele, teils vom Ansatz her grundlegend verschiedene Lösungen kennengelernt. Da einige davon nützliche Helfer im Alltag geworden sind und andere unerlässlich und permanent laufen gibt es darüber nun einen Überblick.
Am Ende soll einem bewusst sein, dass es nicht nur OpenVPN und kommerzielle VPN Lösungen gibt, sondern viele nützliche Tools die sowohl dem Hacker als auch Anwender den Alltag und bei besonderen Herausforderungen dienlich zur Seite stehen.
[Bearbeiten] Motivation und Szenarien
Im Grunde kann man alle Szenarien auf drei Grundbedürfnisse herabbrechen.
* Services anbieten * Standorte Verbinden/Fernwartungszugriffe * aus degradierten Netzen Heraustunneln
Das Tafelbild wurde leider nicht abgelichter, daher eine Folie aus dem Draft zum Talk. [szenarien.png]
[Bearbeiten] Historisches
In der Fachliteratur wird auch immer über die alten Zeiten erzählt, also auch hier. Ganz früher mussten direkt Leitungen zwischen Unternehmensstandorten angemietet (leased lines) oder eigene Verlegt werden. Für Außendienstmitarbeiter bestand die Möglichkeit sich per Modem über eine DFÜ-Verbindung in die Firma einzuwählen. Hierzu mussten aber entsprechende Leitungen und Farmen an Modems vorgehalten werden. Zudem wurde DFÜ mit dem aufkommen von DSL und (TV)Kabelleitungen unattraktiv weil die sehr langsam sind.
Oder man war einfach vor Ort.
Einwahlverbindungen und leased lines sind aber teuer, ersteres sogar verdammt langsam. Daher wurde aufbauend auf dem vorhandenem Netzwerk (gemeinhin Internet) aufgesetzt und virtuelle Netzwerktechnik entwickelt. Dadurch wird man unabhängiger von Unwetter und Streiks, man kann von quasi Überall in andere nicht öffentliche Netzwerke. Desweiteren führt man in der Regel eh mindestens ein Computer (Telefon), eher mehrere (Telefon, Tablet, Notebook) mit sich und ist dadurch flexibel was Bereitschaftsdienste und Arbeitsorte angeht.
Als noch heile Welt herschte und die Netzwerke freundlich waren, war auch Kryptografie zweitrangig. Aber nach und nach wurden Protokolle wie Telnet durch Protokolle wie SSH abgelöst. Daher schauen wir uns auch nur Lösungen mit kryptografischer Komponente an.
[Bearbeiten] Problemstellungen
Bevor wir uns verschiedene Techniken anschauen um die in der Motivation/Szenarien abgesteckten Bedrüfnisse sicher zu stellen werden einige Probleme beleuchtet.
Warum kauft man sich nicht einfach genug öffentliche IP Adressen ein und vergibt die an allen Rechnern mit Services?
- Services direkt anbieten
* zu wenig Public (v4) Adressen verfügbar * simultan dazu v6 Deployment von vielen ISPs mangelhaft bis nicht existent. * wechselnde/dynamische IP Zuweisungen * Nicht alle Services sollen (unkontrolliert) nach außen verfügbar sein
- Sicherheit
* viele lesen viel Traffic mit (im öffentlichen Internet, siehe aktuellen Regierungsaffären und Erklärungsnöte) * komische/ alte Protokolle deployt, die nicht direkt im Internet transportiert werden sollten.
- Compliance/Richtlinien (für Branchen, von Gremien/Verbänden .. etc)
[Bearbeiten] Problemlösungen/Konzepte
Hier stell ich kurz unser Blöcke/Buildingsblocks vor mit denen wir die Probleme lösen können
[Bearbeiten] Netzwerk Exkurs
Netzwerkverbindung zwischen zwei Rechnern via UDP oder TCP. Als Nutzlast/Payload wird dann unsere speziell eingepackten Nutzdaten verschickt.
Ein Datenpaket besteht aus einem IP-Header, Protokoll-Header und Nutzlast. [IP-H.][UDP-Header][Nutzdaten] oder [IP-H.][TCP-H][Nutzdaten]
Sagen wir ein IP-Paket kann 1500 Bytes aufnehmen und ein UDP-Paket enthält z.b. 2 Byte Quell-Port, 2 Byte Zielport, 2 Byte Längen und 2 Byte Prüfsummen Felder. Das hieße es gehen von unseren 1500 Bytes 8 Bytes ab und es bleiben 'nur' 1492 Bytes für die Datenlast über. In einem TCP-Header werden viel mehr Informationen untergebracht. Wenn da z.b. 30 Byte mehr Informationen untergebracht werden sinkt die transportierbare Datenlast auf nur 1460 bytes. Wer das genauer wissen will, dem seien unter anderem die Wikipediaseiten zu TCP/IP und UDP oder einschlägige Fachliteratur nahegelegt.
Als Quintessenz kann man sich merken, wenn man Netzwerkpakete einpackt, sind Zwangsläufig die transportierbare Nutzdatenlast.
Originalpaket [IP-Header ][TCP o. UDP Header ][Nutzlast ] eingepacktes paket [IP-Header'][TCP o. UDP Header'][IP-Header][TCP o. UDP header][Nutzdatenlast ]
[Bearbeiten] Krypto Exkurs
Es gibt zwei grobe Konzepte wie man Daten verschlüsseln kann. Von den speziellen Algorithmen (zum Verarbeiten der Nutzdaten) einmal abgesehen liegt der Hauptunterschied beim Schlüsselmaterial. Bei symmetrischer Verschlüsselung gibt es nur einen gemeinsamen unter Kommunikationsteilnehmern geteilten Schlüssel. Bei asynchroner oder Public-Key-Kryptofrafie hat jeder Teilnehmer ein Schlüsselpaar.• Der öffentliche Schlüssel einer Person X dient dazu, dass andere Teilnehmer nur für Person X verschlüsseln können und der geheime Schlüssel dazu nur um an Person X gesendete Daten zu entschlüsseln.
Das Person X den geheimen Schlüssel für sich behalten sollte, wenn andere nicht die an sich gerichteten Daten entschlüsseln dürfen, versteht sich von selbst. Der öffentliche darf und muss 'öffentlich' sein, Öffentlich insofern, dass er nicht Zwangsläufig in der Tageszeitung abgedruckt wird, aber für andere potenzielle Kommunikationspartner verfügbar ist.
Um einen sicheren Transportkanal zu haben, wird eine TLSverbindung aufgebaut. Mit TLS 1.2 steht einem dann ein sicherer Kanal für Nutzdaten zur verfügung. Von SSL und TLS1.0 sollte man inzwischen aber absehen. Promintestes Beispiel für so ein Konstrukt ist HTTPS. Dafür wird statt über Port 80 zu Port 443 die Verbindung aufgebaut und die eigentlichen HTTP Daten werden in TLS Nachrichten gewrapt. Am Zielrechner werden die wieder ausgepackt und zum eigentlichen Dienst weitergeleitet.
%beispiel grafik
[Bearbeiten] Werkzeuge
Folgend werden einige Werkzeuge vorgestellt. Als fiktive IP hat der Rechner dem ich sitze die IP 14 . tunnelbox hat die IP 25
[Bearbeiten] SSH
Der klassiker sind SOCKS-tunnel
ssh -ND user@tunnelbox
wieistmeineip.de zeigt die 25 als
Portbasierte Weiterleitung
ssh -L 9001:bralug.de:80 user@tunnelbox
auf localhost:9001 wird die Website bralug.de erreicht
Wenn man nicht nur einzelne Ports weiterleiten will oder das Programm keine Unterstützung für Sockstunnel mitbringt kann man zum einen tsocks ausprobieren oder sshuttle.
tsocks selbst beschrieben als: tsocks is a wrapper between the tsocks library and the application what you would like to run socksified.
Über LD_PREALOAD wird der Anwendung der Sockstunnel untergeschoben. Aufgerufen wird das z.B. mit:
tsocks nc wieistmeineip.de 80
sshuttle basiert auf SSH, bringt aber gleichzeitig Iptablesregeln mit, mit derer Hilfe Datenpaketen für ganze Netze über den SSH-Tunnel transportiert werden. Für den Client also transparent und ganz ohne Konfiguration von Socks oder ähnliches.
Statt sshuttle lässt sich vielleicht auch autossh benutze, um SSH session automatisch nach abbruch zu erneuern. http://www.harding.motd.ca/autossh/
[Bearbeiten] Single Port geschichten / Services exponieren
mit socat kann man über diverse Transportprotokolle Daten verschicken. Als Server z.b. socat UDP-LISTEN:1337,fork,reuseaddr stdio lauscht Port 1337 und gibt nach STDIO aus.
Der Client: socat READLINE UDP:127.0.0.1:1337 nimmt Eingaben von der standardinput mit Readline-support auf und schickt es per UDP nach 127.0.0.1 auf port 1337.
Anstatt UDP können auch IPv6 Datagrams,Socks, SCTP etc verwenden werden.
Ich nutz das ganz gerne um z.b. größere Daten im internern Netz zu verschicken. Z.b. eine Festplatte per dd auslesen und zu einen Rechner mit viel Speicher schicken. Dafür nutz ich keine Crypto und will möglichst viel Nutzlast pro Paket unter bekommen!
stunnel wird gerne benutzt wenn man für einen Dienst einen TLS-Tunnel brauch, aber die Software das nicht selbst anbieten kann.
Z.b. kann ich mit in TCL ein Script schreiben was Sensordaten ausliest und per HTTP-Befehle abrufbar macht.
HTTPS will oder kann ich aber nicht in TCL machen und nutze daher stunnel. Dann kann ich das mit einem beliebigen Client der HTTPS kann anfragen.
[Bearbeiten] Zentralisierte VPN
[Bearbeiten] OpenVPN
OpenVPN eignet sich hervorragend für Master-Client Setups. Z.b. um Außendienstmitarbeiter anzubinden oder wenn man mit seinen Mobilgeräten nur in das Heimnetz zu Hause will.
Zwei Standorte können auch Site-to-Site verbunden werden. Bei mehreren Standorten müssen aber welche als Hop benutzt werden oder n*n-1 Verbindungen konfiguriert werden.
[Bearbeiten] MeshVPN
Das Problem mit den vielen Konfigurationen wird durch sogenannte Meshing VPNs gelöst. In diesen Ansatz sind alle Knoten weitestgehend gleich wertig, ohne Masterinstanz und die Verbdinungen werden dynamisch untereinander gehändelt. Wie in einem Maschennetz.
[Bearbeiten] tinc
Als MeshVPN benutz ich tinc. Das hat sich als robust genug erwiesen.
[Bearbeiten] Allgemeine Anmerkungen, Nebenbedingungen
[Bearbeiten] DNS
DNS im Zweifel auch durchtunneln. Es ist recht dämlich die DNS Anfrage über die direkte Leitung zu schicken, wenn man danach die kritischen Daten über abgesicherte Verbindung anfragt und verschleiern will was man da für Daten hat.