Bearbeiten von „Firewall Piercing/Beispiele/OpenSSH via HTTPS-Proxy als SOCKS Proxy verwenden

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. Ein eigenes Benutzerkonto hat eine ganze Reihe von Vorteilen.

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

Aktuelle Version Dein Text
Zeile 2: Zeile 2:


== Voraussetzungen für dieses Beispiel ==
== Voraussetzungen für dieses Beispiel ==
Das ''[http://rhein-neckar.wiki Rhein-Neckar-Wiki]'' läuft in einem Jail auf dem Server der ''[http://www.stadtwiki.info/ Stadtwiki Gesellschaft e.V.]'' ('''rnw.stwserv.de'''). Die Wiki-Jails sind aus Sicherheitsgründen per Firewall von extern nur auf 80/tcp und 443/tcp erreichbar und können selbst nur über einen Proxy-Server ('''relay.stwserv.de''') mit der Aussenwelt kommunizieren. Der Proxy-Server ist ein HTTP-Proxy und erlaubt zusätzlich die für HTTPS erforderliche CONNECT-Methode auf Port 443/tcp (https)
Das ''[http://rhein-neckar.wiki Rhein-Neckar-Wiki]'' läuft in einem Jail auf dem Server der ''[http://www.stadtwiki.info/ Stadtwiki Gesellschaft e.V.]'' ('''rnw.stwserv.de'''). Die Wiki-Jails sind aus Sicherheitsgründen per Firewall von extern nur auf 80/tcp und 443/tcp erreichbar und können selbst nur über einen Proxy-Server ('''relay.stwserv.de''') mit der Aussenwelt kommunizieren. Der Proxy-Server ist ein HTTP-Proxy und erlaubt zusätzlich die für HTTPS erforderliche CONNECT-Methode auf '''[[SSH auf Port 443|Port 443/tcp]]''' (https)


Ferner existiert ein Shell-Account auf '''[[UUGRN:Jails/shell|shell.uugrn.org]]'''. Der dortige OpenSSH-Daemon läuft zusätzlich zum Standardport 22/tcp auch auf '''[[SSH auf Port 443|Port 443/tcp]]'''.
Ferner existiert ein Shell-Account auf '''[[UUGRN:Jails/shell|shell.uugrn.org]]'''. Der dortige OpenSSH-Daemon läuft zusätzlich zum Standardport 22/tcp auch auf '''443/tcp'''.


Es soll zu Demonstrationszwecken gezeigt werden, wie man unter diesen Voraussetzungen mit OpenSSH und BSD-netcat als Hilfstool eine SSH-Verbidung auf einen mehr oder weniger beliebigen Server im Internet herstellen kann, sofern man dort grundsätzlich Login-Rechte hat.
Es soll zu Demonstrationszwecken gezeigt werden, wie man unter diesen Voraussetzungen mit OpenSSH und BSD-netcat als Hilfstool eine SSH-Verbidung auf einen mehr oder weniger beliebigen Server im Internet herstellen kann, sofern man dort grundsätzlich Login-Rechte hat.


== SSH-Client Konfiguration ==
== SSH-Client Konfiguration ==
zumächst legen wir folgende ~/.ssh/config an (oder ergänzen die vorhandene entsprechend):
zumächst legen wir volgende ~/.ssh/config an (oder ergänzen die vorhandene entsprechend):
<pre>
<pre>
[rabe@rnw ~]$ cat .ssh/config  
[rabe@rnw ~]$ cat .ssh/config  
Zeile 32: Zeile 32:
Das Profil '''rabe.socks''' ist so angelegt, dass es auf '''rabe@rabe.uugrn.org:22''' einloggt unter Verwendung des SOCKS(5)-Proxys auf '''127.0.0.1:1080'''.
Das Profil '''rabe.socks''' ist so angelegt, dass es auf '''rabe@rabe.uugrn.org:22''' einloggt unter Verwendung des SOCKS(5)-Proxys auf '''127.0.0.1:1080'''.


== Verbindungsaufbau ==
 
== Initialer Verbindungsaufbau ==
;nach shell.uugrn.org via HTTPS-Proxy:
;nach shell.uugrn.org via HTTPS-Proxy:
<pre>
<pre>
Zeile 66: Zeile 67:




=== Ad-hoc ===
== Ad-hoc ==
Man will möglicherweise nicht für jeden einzelnen Zielrechner, auf den man per SSH ''ausbrechen'' will erst in der ~/.ssh/config anlegen. Die erforderlichen Direktiven kann man auch mit ''-o 'Direktive Parameter' '' als Kommandozeilenparameter für den OpenSSH-Client angeben.
Man will möglicherweise nicht für jeden einzelnen Zielrechner, auf den man per SSH ''ausbrechen'' will erst in der ~/.ssh/config anlegen. Die erforderlichen Direktiven kann man auch mit ''-o 'Direktive Parameter' '' als Kommandozeilenparameter für den OpenSSH-Client angeben.


Zeile 147: Zeile 148:
Der Standardwert für ''ServerAliveCountMax 3'' ist für unseren Anwendungsfall ausreichend, als ''ServerAliveInterval'' benötigen wir einen Wert, der definitiv geringer ist als der Timeout vom HTTPS-Proxy. Auf der sicheren Seite sind wir bei 5 min oder 300 sec.
Der Standardwert für ''ServerAliveCountMax 3'' ist für unseren Anwendungsfall ausreichend, als ''ServerAliveInterval'' benötigen wir einen Wert, der definitiv geringer ist als der Timeout vom HTTPS-Proxy. Auf der sicheren Seite sind wir bei 5 min oder 300 sec.


;Nebenbei bemerkt: Manche Router mit ''Stateful Firewall'' oder ''NAT'' vergessen bei inaktiven SSH-Sessions die TCP Verbindungsparameter. Hiergegen hilft manchmal ''TCPKeepAlive yes''. Manchmal genügt das allerdings nicht, weil kein Payload übertragen wird. Hier hilft dann normalerweise  ''ServerAliveInterval 30'' recht zuverlässig. Braucht man sehr kurze Intervalle, können SSH-Sessions bei temporärem Netzausfall (zB 90 sec) verloren gehen. Hier sollte man dann zusätzlich ''ServerAliveCountMax 10'' oder noch höher setzen, je nachdem, wie lange man einen temporären Netzausfall tolerieren möchte (z.B. Funkloch bei UMTS).
Die Datei '''~/.ssh/config''' sollte daher mindestens um ''ServerAliveInterval 300'' ergänzt werden:
Die Datei '''~/.ssh/config''' sollte daher mindestens um ''ServerAliveInterval 300'' ergänzt werden:
<pre>
<pre>
Zeile 158: Zeile 161:
         ProxyCommand /usr/bin/nc -X connect -x relay.stwserv.de:3128 %h %p
         ProxyCommand /usr/bin/nc -X connect -x relay.stwserv.de:3128 %h %p
</pre>
</pre>
;Nebenbei bemerkt: Manche Router mit ''Stateful Firewall'' oder ''NAT'' vergessen bei inaktiven SSH-Sessions die TCP Verbindungsparameter. Hiergegen hilft manchmal ''TCPKeepAlive yes''. Manchmal genügt das allerdings nicht, weil kein Payload übertragen wird. Hier hilft dann normalerweise  ''ServerAliveInterval 30'' recht zuverlässig. Braucht man sehr kurze Intervalle, können SSH-Sessions bei temporärem Netzausfall (zB 90 sec) verloren gehen. Hier sollte man dann zusätzlich ''ServerAliveCountMax 10'' oder noch höher setzen, je nachdem, wie lange man einen temporären Netzausfall tolerieren möchte (z.B. Funkloch bei UMTS).


=== Netzwerk ===
=== Netzwerk ===
Zeile 214: Zeile 214:
01:09:29.938917 IP 195.49.138.67.54677 > 195.49.138.100.443: tcp 0
01:09:29.938917 IP 195.49.138.67.54677 > 195.49.138.100.443: tcp 0
</pre>
</pre>
[[Kategorie:OpenSSH]]
[[Kategorie:Firewall]]
[[Kategorie:Proxy]]
[[Kategorie:Anwendungsbeispiel]]

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)

Folgende Vorlagen werden auf dieser Seite verwendet: