SSH Tunnel & SSH/SSL Multiplexer

Version: 0.1
Getestet: Ubuntu 8.04 LTS

Bei der Verwendung von öffentlichen Wlan Hot-Spots sollte man unbedingt seine eigenen Verbindungen absichern. Hierzu eignet sich beispielsweise die Tunnelung des eigenen Traffics durch SSH über den HTTPS Port 443, welcher in der Regel immer offen ist und zudem bei kostenpflichtigen Hot-Spots nicht immer über ein Captive Portal geroutet wird.

Diese Anleitung beschreibt, wie ein eigener (Web)Server als "Tunnelpartner" dienen kann. Es wird ein Protokoll-Multiplexer eingesetzt, damit der SSH Tunnel auf Port 443 auch auf einem aktiven HTTP(S)Server terminiert werden kann. Zusätzlich wird noch ein HTTP Proxy auf einem entfernten/eigenen Server eingesetzt, welche die HTTP Request weiterleitet und beantwortet.

Wie so oft, gibt es auch hier ein Dual-Use. Aber auf diese Möglichkeit oder andere, wie HTTP-Connect Tunnel und MAC Spoofing wird hier nicht eingegangen. Der geneigte Nerd surft und schweigt ;-).

Diese Anleitung soll nur der Absicherung der eigenen Verbindungen dienen!

SSH/SSL Multiplexer sslh

http://www.rutschle.net/tech/sslh.shtml

sslh auf einem Server installieren
apt-get install libwrap0-dev
wget http://www.rutschle.net/tech/sslh-1.7a.tar.gz
tar xvzf sslh-1.7a.tar.gz
cd sslh-1.7a
make
cp scripts/etc.default.sslh /etc/default/sslh
cp scripts/etc.init.d.sslh /etc/init.d/sslh
/etc/default/sslh
LISTEN=<externe IP>:443
SSH=localhost:22
SSL=localhost:443
/etc/init.d/sslh
...
PREFIX=/usr/local/bin
DAEMON=$PREFIX/sslh
...
/etc/ssh/sshd_config
ListenAddress 127.0.0.1:22
ListenAddress
<externe IP>:22
/etc/apache2/ports.conf
Listen 80
<IfModule mod_ssl.c>
    Listen localhost:443
</IfModule>
/etc/apache2/conf.d/*.conf
<VirtualHost  localhost:443>
Reload Apache und SSHD
/etc/init.d/apache2 restart
kill -HUP pid-of-sshd

Perl HTTP Proxy

/usr/local/bin/http_proxy.pl
#!/usr/bin/perl
use HTTP::Proxy;
my $proxy = HTTP::Proxy->new( port => 53128);
$proxy->start;

SSH Tunnel

Tunnel aufbauen und http_proxy starten

localhost:58080 als Proxyaddresse nutzen

ssh -v user@<externe IP> -p 443 -L58080:localhost:53128 'http_proxy.pl'
http_proxy killen
ssh -v user@<externe IP> -p 443 'killall -v /usr/bin/perl'

CC-GNU GPL | CC-by

maec.de