Bearbeiten von „Firewall Piercing“

Aus UUGRN

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 7: Zeile 7:
 
__TOC__
 
__TOC__
  
== SSH als Transportmedium einsetzen ==
+
== via SSH ==
 
SSH kann nicht nur selbst auf verschiedenen Transportmedien arbeiten, sondern kann auch selbst als Transportmedium dienen. So kann man beispielsweise auf die eine oder andere Weise eine SSH-Verbindung zu einem speziellen Shellserver herstellen und durch die SSH-Verbindung hindurch dann weitere Tunnelmechanismen verwenden.
 
SSH kann nicht nur selbst auf verschiedenen Transportmedien arbeiten, sondern kann auch selbst als Transportmedium dienen. So kann man beispielsweise auf die eine oder andere Weise eine SSH-Verbindung zu einem speziellen Shellserver herstellen und durch die SSH-Verbindung hindurch dann weitere Tunnelmechanismen verwenden.
  
=== SSH als SOCKS Proxy einsetzen ===
+
=== SOCKS Proxy ===
OpenSSH kann als SOCKS-Proxy fungieren.
+
{{FIXME|Beschreiben, wie man mit einem OpenSSH-Client einen SOCKS-Proxy einrichtet}}
  
Entweder auf der Kommandozeile:
+
=== PPP over SSH ===
# ssh -D localhost:1080 -N user@[[UUGRN:Jails/shell|shell.uugrn.org]]
 
 
 
oder über die {{man|freebsd|5|ssh_config}}:
 
 
 
Host [[UUGRN:Jails/shell|shell.uugrn.org]]
 
    [... weitere Optionen ... ]
 
    DynamicForward localhost:1080
 
    [... weitere Optionen ... ]
 
 
 
=== PPP durch SSH ===
 
 
{{FIXME|Beschreiben, wie eine PPP-Verbindung durch die Terminalverbindung von SSH funktioniert}}
 
{{FIXME|Beschreiben, wie eine PPP-Verbindung durch die Terminalverbindung von SSH funktioniert}}
  
=== IP Tunnel mit SSH ===
+
=== IP Tunnel ===
 
{{FIXME|Beschreiben, wie man mit Hilfe einer OpenSSH-Sitzung ein tun(4)-Device einrichtet}}
 
{{FIXME|Beschreiben, wie man mit Hilfe einer OpenSSH-Sitzung ein tun(4)-Device einrichtet}}
  
=== SSH-Missbrauch verhindern? ===
+
=== wie verhindern? ===
 
{{FIXME|Beschreiben, wie man Tunnelmechanismen Client- oder Serverseitig unterbinden kann}}
 
{{FIXME|Beschreiben, wie man Tunnelmechanismen Client- oder Serverseitig unterbinden kann}}
  
== Einen Webproxy als Transportweg verwenden ==
+
== via Webproxy ==
 
In komplexeren Firewallsetups gehört ein oder mehrere in Reihe geschaltete Webproxies normalerweise zum Gesamtkonzept, sofern das zu schützende Netz seinen Nutzern den Zugriff auf das World-Wide-Web erlauben will. Der Zugriff auf Webseiten erfolgt überlicherweise über 2 verschiedene Arten, der ungesicherte Zugriff auf tcp Port 80, besser bekannt als [[http]], der durch [[SSL]] gesicherte Zugriff auf Webserver auf Port 443, besser bekannt auch als [[https]].
 
In komplexeren Firewallsetups gehört ein oder mehrere in Reihe geschaltete Webproxies normalerweise zum Gesamtkonzept, sofern das zu schützende Netz seinen Nutzern den Zugriff auf das World-Wide-Web erlauben will. Der Zugriff auf Webseiten erfolgt überlicherweise über 2 verschiedene Arten, der ungesicherte Zugriff auf tcp Port 80, besser bekannt als [[http]], der durch [[SSL]] gesicherte Zugriff auf Webserver auf Port 443, besser bekannt auch als [[https]].
  
Zeile 88: Zeile 78:
 
  HTTP/1.0 200 Connection established
 
  HTTP/1.0 200 Connection established
  
: Der gesamte darauf folgende Traffic ist 1:1 vom Server, in diesem Beispiel ist es nicht ganz [[https]], sondern die Klartext-Antwort des [[sshd]] von [[UUGRN:Jails/shell|shell.uugrn.org]]
+
: Der gesamte darauf folgende Traffic ist 1:1 vom Server, in diesem Beispiel ist es nicht ganz [[https]], sondern die Klartext-Antwort des [[sshd]] von [[shell.uugrn.org]]
 
  SSH-2.0-OpenSSH_4.5p1 FreeBSD-20061110
 
  SSH-2.0-OpenSSH_4.5p1 FreeBSD-20061110
  
 
:;Wichtig zu wissen ist: Der Webproxy stellt auf die Anfrage CONNECT hin die Verbindung zum gewünschten Server auf dem gewünschten Port her und antwortet einzeilig mit der Nachricht, dass die Verbindung hergestellt wurde. Nach einer weiteren Leerzeile erscheint auf der Verbindung dann bitsauber der Datenverkehr des jeweiligen Remotehosts. Bitsauber beudetet, dass SSL fehlerfrei funktioniert, aber auch jedes andere Protokoll, welches auf eine bitgenaue, d.h. nicht zeilenbasierte Übermittlung der Daten angewiesen ist.
 
:;Wichtig zu wissen ist: Der Webproxy stellt auf die Anfrage CONNECT hin die Verbindung zum gewünschten Server auf dem gewünschten Port her und antwortet einzeilig mit der Nachricht, dass die Verbindung hergestellt wurde. Nach einer weiteren Leerzeile erscheint auf der Verbindung dann bitsauber der Datenverkehr des jeweiligen Remotehosts. Bitsauber beudetet, dass SSL fehlerfrei funktioniert, aber auch jedes andere Protokoll, welches auf eine bitgenaue, d.h. nicht zeilenbasierte Übermittlung der Daten angewiesen ist.
  
=== [[SSH]] über Webproxy ===
+
=== [[SSH]] ===
 
Das SSH-Protokoll erlaubt es neben einer Terminalsitzung auch weitere Daten zu übertragen. Das kann von SSH basierten Anwendungen über einfaches Portforwarding und SOCKS-Proxy Fähigkeiten bis hin zu gerouteten IP-Verbindungen ([[OpenSSH]]) gehen. Wichtig für die Anwendung ist, dass die SSH-Verbindung irgendwie zustande kommt. Mögliche Transportwege für SSH sind neben einer direkten TCP-Verbindung auch Verbindungen via SOCKS-Proxy oder eben Webproxy oder alle andere Möglicheiten, die einen ''bitsauberen'' Transport ermöglichen.
 
Das SSH-Protokoll erlaubt es neben einer Terminalsitzung auch weitere Daten zu übertragen. Das kann von SSH basierten Anwendungen über einfaches Portforwarding und SOCKS-Proxy Fähigkeiten bis hin zu gerouteten IP-Verbindungen ([[OpenSSH]]) gehen. Wichtig für die Anwendung ist, dass die SSH-Verbindung irgendwie zustande kommt. Mögliche Transportwege für SSH sind neben einer direkten TCP-Verbindung auch Verbindungen via SOCKS-Proxy oder eben Webproxy oder alle andere Möglicheiten, die einen ''bitsauberen'' Transport ermöglichen.
  
==== [[OpenSSH]] über Webproxy ====
+
==== [[OpenSSH]] ====
 
OpenSSH kennt die '''ProxyCommand'''-Direktive. Hiermit ist es möglich, ein externes Hilfsprogramm einzubinden, welches die Kommunikation zum Proxy-Server übernimmt. Das folgende Beispiel verwendet das bei *BSD mitgelieferte Programm {{man|freebsd|1|nc}}, auch bekannt unter dem Namen ''netcat''.
 
OpenSSH kennt die '''ProxyCommand'''-Direktive. Hiermit ist es möglich, ein externes Hilfsprogramm einzubinden, welches die Kommunikation zum Proxy-Server übernimmt. Das folgende Beispiel verwendet das bei *BSD mitgelieferte Programm {{man|freebsd|1|nc}}, auch bekannt unter dem Namen ''netcat''.
  
Zeile 106: Zeile 96:
 
  ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p
 
  ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p
  
==== [[PuTTY]] über  Webproxy ====
+
==== [[PuTTY]] ====
 
[[PuTTY]] kann neben direkten TCP-Verbindungen auf Port 22 auch über verschiedene andere Wege mit dem SSH-Server kommunizieren, dazu gehören:
 
[[PuTTY]] kann neben direkten TCP-Verbindungen auf Port 22 auch über verschiedene andere Wege mit dem SSH-Server kommunizieren, dazu gehören:
 
* Webproxy, auch mit Authentifizierung
 
* Webproxy, auch mit Authentifizierung
Zeile 118: Zeile 108:
 
Die Anwendung und Konfigurationsbeispiele befinden sich im Artikel [[PuTTY]].
 
Die Anwendung und Konfigurationsbeispiele befinden sich im Artikel [[PuTTY]].
  
=== [[OpenVPN]] über Webproxy ===
+
=== [[OpenVPN]] ===
 
OpenVPN ist ein Tunnelprotokoll. Durch eine OpenVPN-Verbindung lassen sich IP-Verbindungen, je nach Tunneltyp sogar Ethernet-Bridges realisieren.  
 
OpenVPN ist ein Tunnelprotokoll. Durch eine OpenVPN-Verbindung lassen sich IP-Verbindungen, je nach Tunneltyp sogar Ethernet-Bridges realisieren.  
 
OpenVPN selbst arbeitet standardmäßig auf UDP Port 1194, kann aber auch auf anderen Ports oder TCP-Verbindungen, sogar durch Proxyverbindungen hindurch arbeiten.
 
OpenVPN selbst arbeitet standardmäßig auf UDP Port 1194, kann aber auch auf anderen Ports oder TCP-Verbindungen, sogar durch Proxyverbindungen hindurch arbeiten.
Zeile 124: Zeile 114:
 
Das [http://openvpn.net/index.php/documentation/howto.html#http OpenVPN HowTo beschreibt die Konfiguration einer Verbindung via http-Proxy].
 
Das [http://openvpn.net/index.php/documentation/howto.html#http OpenVPN HowTo beschreibt die Konfiguration einer Verbindung via http-Proxy].
  
=== [[httptunnel]] über Webproxy ===
+
=== [[httptunnel]] ===
 
{{FIXME|Beschreibung von [[httptunnel]]}}
 
{{FIXME|Beschreibung von [[httptunnel]]}}
  
=== Verbindungen über Webproxies erkennen und verhindern ===
+
=== wie verhindern? ===
 
Web-Proxies sollten die CONNECT-Methode nur auf "echte" HTTP-SSL Ports erlauben. Überlicherweise ist dies der Port 443. Der Zugriff insbesondere auf Ports < 1024 sollte mit CONNECT darüber hinaus nicht möglich sein.
 
Web-Proxies sollten die CONNECT-Methode nur auf "echte" HTTP-SSL Ports erlauben. Überlicherweise ist dies der Port 443. Der Zugriff insbesondere auf Ports < 1024 sollte mit CONNECT darüber hinaus nicht möglich sein.
  
==== [[squid]] absichern ====
 
 
[[squid]] liefert eine squid.conf mit, die folgende acls enthält:
 
[[squid]] liefert eine squid.conf mit, die folgende acls enthält:
  
Zeile 162: Zeile 151:
 
Durch konsequente Auswertung dieses Logfiles kann auch nachträglich der Zugriff auf "berüchtigte" Ports erkannt und über eine Blacklist im Firewall künftig unterbunden werden. Etwas radikaler wäre, Zugriffe auf HTTP-SSL auf bekannte Webseiten zuzulassen, d.h. über eine Whitelist.
 
Durch konsequente Auswertung dieses Logfiles kann auch nachträglich der Zugriff auf "berüchtigte" Ports erkannt und über eine Blacklist im Firewall künftig unterbunden werden. Etwas radikaler wäre, Zugriffe auf HTTP-SSL auf bekannte Webseiten zuzulassen, d.h. über eine Whitelist.
  
=== Mehr zum Thema Webproxy ===
+
=== weiterführende Informationen ===
 
* Durch die Verwendung eines oder mehrerer offenener Proxies im Internet können Verbindungen "umgeleitet" werden. Die Verwendung fremder (offener) Proxys ist üblicherweise nicht legal.  
 
* Durch die Verwendung eines oder mehrerer offenener Proxies im Internet können Verbindungen "umgeleitet" werden. Die Verwendung fremder (offener) Proxys ist üblicherweise nicht legal.  
 
* In seinem Vortrag '''OpenSSH Teil 3: Firewalls durchbohren'''<ref>Johannes Franken: [http://www.jfranken.de/homepages/johannes/vortraege/ssh3_inhalt.de.html OpenSSH Teil 3: Firewalls durchbohren]</ref> beschreibt Johannes Franken sehr detailliert die Funktionsweise von '''OpenSSH via Webproxy'''.
 
* In seinem Vortrag '''OpenSSH Teil 3: Firewalls durchbohren'''<ref>Johannes Franken: [http://www.jfranken.de/homepages/johannes/vortraege/ssh3_inhalt.de.html OpenSSH Teil 3: Firewalls durchbohren]</ref> beschreibt Johannes Franken sehr detailliert die Funktionsweise von '''OpenSSH via Webproxy'''.
  
== SOCKS Proxy als Transportmedium nutzen ==
+
== via SOCKS ==
 
Manche Firewallsysteme bieten für Applikationen einen SOCKS-Proxy an. Sehr viele Applikationen, die per TCP kommunizieren können auch via SOCKS-Proxy kommunizieren, zum Beispiel auch SSH, aber auch Messenger, Tauschbörsen, Mailclients.
 
Manche Firewallsysteme bieten für Applikationen einen SOCKS-Proxy an. Sehr viele Applikationen, die per TCP kommunizieren können auch via SOCKS-Proxy kommunizieren, zum Beispiel auch SSH, aber auch Messenger, Tauschbörsen, Mailclients.
 
{{FIXME|Beschreiben, wie man einen SOCKS-Proxy nutzt}}
 
{{FIXME|Beschreiben, wie man einen SOCKS-Proxy nutzt}}
  
=== [[OpenSSH]] über SOCKS Proxy ===
+
=== wie verhindern? ===
OpenSSH kann mit Hilfe von {{man|freebsd|1|nc}} bzw. ''netcat'' einen Verbindungsaufbau über einen SOCKS-Proxy herstellen. Ähnlich wie bei OpenSSH-via-HTTP-Proxy geht es hier leicht abgewandelt auch mit 2 SOCKS-Versionen:
+
{{FIXME|Strategie für den sicheren Betrieb eines SOCKS-Proxys}}
 
 
; SOCKS4:
 
ProxyCommand /usr/bin/nc -X 4 -x 10.11.12.13:1080 %h %p
 
; SOCKS5:
 
ProxyCommand /usr/bin/nc -X 5 -x 10.11.12.13:1080 %h %p
 
 
 
=== [[PuTTY]] über SOCKS Proxy ===
 
[[PuTTY]] kann von Haus aus über verschiedene Proxies arbeiten, das Proxy-Protokoll ist hier nur eine einfache Auswahl im Setup-Dialog.
 
Details dazu stehen unter [[PuTTY#Proxy]].
 
 
 
=== Missbrauch eines SOCKS-Proxys verhindern? ===
 
Der Betrieb eines SOCKS-Proxies sollte genau geplant sein. Zugriffsberechtigungen sollten über Firewalls oder Zugangskontrollen geregelt werden.
 
  
{{FIXME|Strategien für den sicheren Betrieb eines SOCKS-Proxys}}
 
  
== DNS als Transportmedium nutzen ==
+
== via DNS ==
 
DNS ist üblicherweise auch in stark abgeschirmten Netzwerken möglich. Selbst wenn es keine direkte Route zwischen den Netzwerken gibt kann man davon ausgehen, dass innerhalb des Sicherheitskonzepts innere DNS-Server über externe DNS-Server weitergeleitet werden. Ein speziell präparierter Client kann über standardkonforme DNS-Requests Verbindungen zu einem speziellen DNS-Server herstellen, der Nutzdaten wie z.B. einzelne IP-Pakete per Request vom Client erhält und per Response dem Client zurückschickt.   
 
DNS ist üblicherweise auch in stark abgeschirmten Netzwerken möglich. Selbst wenn es keine direkte Route zwischen den Netzwerken gibt kann man davon ausgehen, dass innerhalb des Sicherheitskonzepts innere DNS-Server über externe DNS-Server weitergeleitet werden. Ein speziell präparierter Client kann über standardkonforme DNS-Requests Verbindungen zu einem speziellen DNS-Server herstellen, der Nutzdaten wie z.B. einzelne IP-Pakete per Request vom Client erhält und per Response dem Client zurückschickt.   
  
=== TCP Portforwarding mit [[dns2tcp]] ===
+
=== dns2tcp ===
 
[[dns2tcp]] ist ein Netzwerktool zum Vermitteln von TCP Verbindungen über DNS-Datenverkehr. Die Datenkapselung findet auf TCP-Ebene statt, das bedeutet dass kein TUN oder TAP Treiber benötigt werden und dementsprechend auch keine besonderen Systemrechte erforderlich sind.
 
[[dns2tcp]] ist ein Netzwerktool zum Vermitteln von TCP Verbindungen über DNS-Datenverkehr. Die Datenkapselung findet auf TCP-Ebene statt, das bedeutet dass kein TUN oder TAP Treiber benötigt werden und dementsprechend auch keine besonderen Systemrechte erforderlich sind.
 
Dns2tcp besteht aus 2 Teilen, einem Server und einem Client. Serverseitig sind verschiedene Ressourcen in einer Konfigurationsdatei hinterlegt, entweder als lokaler oder remote Dienst für TCP Verbindungen. Der Client nimmt auf einem vordefinierten Port TCP Verbindungen an und leitet ("tunnelt") diese durch die DNS-Verbindung zum eigentlichen Ziel<ref name="dns2tcp">Mehr über [[dns2tcp]] auf der {{Homepage2|www.hsc.fr/ressources/outils/dns2tcp/|dns2tcp}}</ref>.
 
Dns2tcp besteht aus 2 Teilen, einem Server und einem Client. Serverseitig sind verschiedene Ressourcen in einer Konfigurationsdatei hinterlegt, entweder als lokaler oder remote Dienst für TCP Verbindungen. Der Client nimmt auf einem vordefinierten Port TCP Verbindungen an und leitet ("tunnelt") diese durch die DNS-Verbindung zum eigentlichen Ziel<ref name="dns2tcp">Mehr über [[dns2tcp]] auf der {{Homepage2|www.hsc.fr/ressources/outils/dns2tcp/|dns2tcp}}</ref>.
  
=== Weiterführende Informationen zu DNS ===
+
=== Weblinks ===
 
* {{Homepage2|www.hsc.fr/ressources/outils/dns2tcp/|dns2tcp}}
 
* {{Homepage2|www.hsc.fr/ressources/outils/dns2tcp/|dns2tcp}}
 
* [http://netzhure.de/2007/10/22/127-TCP-over-DNS-mit-dns2tcp.html TCP over DNS mit dns2tcp] von mømø
 
* [http://netzhure.de/2007/10/22/127-TCP-over-DNS-mit-dns2tcp.html TCP over DNS mit dns2tcp] von mømø
  
=== Mißbrauch des DNS-Serves erkennen und verhindern? ===
+
=== wie verhindern? ===
 
{{FIXME|Strategie zur Erkennung und Vermeidung von Sicherheitslücken im DNS-Verkehr}}
 
{{FIXME|Strategie zur Erkennung und Vermeidung von Sicherheitslücken im DNS-Verkehr}}
  
== TOR Netzwerk als Transportmedium nutzen ==
+
== via TOR ==
 
{{FIXME|Beschreiben, wie das TOR Netzwerk funktioniert}}
 
{{FIXME|Beschreiben, wie das TOR Netzwerk funktioniert}}
  
Zeile 209: Zeile 185:
 
* [[Firewall]]
 
* [[Firewall]]
 
* [[Proxy]]
 
* [[Proxy]]
* [[SSH auf Port 443]]
 
* [[netcat]]
 
* [[/Beispiele]]
 
  
== Weblinks zum Thema FirewallPiercing ==
+
== Weblinks ==
* Rainer W. Gerling in der Vortragsreihe "Datenschutz und Datensicherheit": {{Weblink|www.informatik.fh-muenchen.de/datenschutz/vortraegeSS06/Firewall_Piercing.pdf|Firewall Piercing: Wie man Firewalls umgeht}}
+
<!-- allgemeine Weblinks zum Thema Firewall Piercing -->
* Oliver Karow im Magazin ''kakin9'': {{Weblink|www.hdm-stuttgart.de/~ms096/hakin9-umgehung_von_netzwerkfirewalls.pdf|Umgehung von Netzwerkfirewalls}}
 
* Michael Renner, heise.de: {{Weblink|1=www.heise.de/netze/artikel/Netzzensur-per-SSL-Tunnel-aushebeln-1412967.html?view=print|2=Netzzensur per SSL-Tunnel aushebeln}}
 
  
 
== Fußnoten ==
 
== Fußnoten ==
<small><references /></small>
+
<references />
  
 
[[Kategorie:Netzwerk]]
 
[[Kategorie:Netzwerk]]
 
[[Kategorie:Security]]
 
[[Kategorie:Security]]

Bitte kopiere keine Inhalte, die nicht Deine eigenen sind!

Du gibst uns hiermit Deine Zusage, dass
  • Du den Text nicht aus Wikipedia kopiert hast
  • Du den Text selbst verfasst hast
  • oder der Text entweder
    • Allgemeingut (public domain) ist
    • oder der Copyright-Inhaber seine Zustimmung gegeben hat.
Wichtig
  • Benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Copyright-Inhabers!
  • Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der 'Diskussion:'-Seite darauf hin.
  • Bitte beachte, dass alle UUGRN-Beiträge automatisch unter der der Creative Commons Lizenz stehen.
  • Falls Du nicht möchtest, dass Deine Arbeit hier von anderen verändert und verbreitet wird, dann drücke nicht auf "Artikel Speichern".

Bitte beantworte die folgende Frage, um diese Seite speichern zu können (weitere Informationen):

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)