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 Trasport vermöglichen.
 
 
==== [[OpenSSH]] über Webproxy ====
 
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''.
 
  
;Aus {{man|freebsd|5|ssh_config}}:
+
==== [[OpenSSH]] ====
:;ProxyCommand:
+
{{FIXME|Perlscript und Configanleitung für OpenSSH-Client}}
::This directive is useful in conjunction with nc(1) and its proxy
 
::support.  For example, the following directive would connect via
 
::an HTTP proxy at 192.0.2.0:
 
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 101:
 
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 107:
 
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.
+
{{FIXME|Strategie zur Vermeidung oder Aufspüren ungewollter Zugriffe über den Webproxy}}
 
 
==== [[squid]] absichern ====
 
[[squid]] liefert eine squid.conf mit, die folgende acls enthält:
 
 
 
acl SSL_ports port 443
 
 
 
acl Safe_ports port 80          # http
 
acl Safe_ports port 21          # ftp
 
acl Safe_ports port 443        # https
 
acl Safe_ports port 70          # gopher
 
acl Safe_ports port 210        # wais
 
acl Safe_ports port 1025-65535  # unregistered ports
 
acl Safe_ports port 280        # http-mgmt
 
acl Safe_ports port 488        # gss-http
 
acl Safe_ports port 591        # filemaker
 
acl Safe_ports port 777        # multiling http
 
 
 
# Deny requests to unknown ports
 
http_access deny !Safe_ports
 
# Deny CONNECT to other than SSL ports
 
http_access deny CONNECT !SSL_ports
 
 
 
Mit dieser Voreinstellung ist der erforderliche CONNECT ("https-Methode") nur auf Port 443 möglich.
 
 
 
;Einschränkung: Die vorige Methode unterbindet zwar wirkungsvoll den '''CONNECT auf Port 22''' (!Safe_ports), ist aber wirkungslos bei [[SSH auf Port 443]]. Ein Firewall müsste in den Verbindungsaufbau '''reinlauschen''' und den Protokollheader von SSH erkennen bzw. abfangen, der im Klartext erscheint, z.B. [[SSH auf Port 443|shell.uugrn.org:443]]:
 
SSH-2.0-OpenSSH_4.5p1 FreeBSD-20061110
 
  
Squid schreibt nach Verbindungsabbau eine Zeile in das access.log, in dem der CONNECT und die Menge der übertragenen Daten protokolliert werden:
+
=== 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.
  
1209763269.836  5325 10.11.12.13 TCP_MISS/200 158155 CONNECT www.example.com:443 - DIRECT/208.77.188.166 -
+
== via SOCKS ==
 
 
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 ===
 
* 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'''.
 
 
 
== SOCKS Proxy als Transportmedium nutzen ==
 
 
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}}
+
== via DNS ==
 
 
== DNS als Transportmedium nutzen ==
 
 
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]] ===
+
=== Weblinks ===
[[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.
+
* [http://netzhure.de/2007/10/22/127-TCP-over-DNS-mit-dns2tcp.html TCP over DNS mit dns2tcp] von mømø
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 ===
 
* {{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ø
 
  
=== 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}}
 
 
== siehe auch ==
 
* [[PuTTY]]
 
* [[Firewall]]
 
* [[Proxy]]
 
* [[SSH auf Port 443]]
 
* [[netcat]]
 
* [[/Beispiele]]
 
 
== Weblinks zum Thema FirewallPiercing ==
 
* 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}}
 
* 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 ==
 
<small><references /></small>
 
  
 
[[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)