SSLH example

From Linuxwiki
Jump to navigation Jump to search

What?

sslh ist quasi ein Y-Stück, mit dem ein Service auf 2 unterschiedlichen Ports laufen kann. Anwendungsfall ist z.B. ein sshd vor einer Firewall

Beispiel

Ein Client hinter einer Firewall möchte auf einen Web-Server im Internet zugreifen, auf dem ein sshd läuft. Die Firewall blockiert aber den Port 22. Port 80 ist dagegen offen.

scenario

Vorgehen

- sslh installieren
- Port 80 des Webservers auf localhost laufen lassen
- Y-Stück für Port 80 einbauen

sslh installieren

apt install ssld

Apache vorbereiten

Port 80 auf localhost

ports.conf:

Listen 127.0.0.1:80
#Listen 80
<IfModule ssl_module>
       Listen 443
</IfModule>

<IfModule mod_gnutls.c>
       Listen 443
</IfModule>

Virtual hosts anpassen

sites-enabled:

<VirtualHost 127.0.0.1:80> #<<<<<<<< **nicht** *:80
       Define NAME     wordpress.example.de
       Define EMAIL    root@example.de

       ServerAdmin ${EMAIL}
       ServerName ${NAME}

       Include /etc/apache2/conf-available/rewrite-http-to-https.conf

       CustomLog ${APACHE_LOG_DIR}/wordpress-access.log combined
       ErrorLog ${APACHE_LOG_DIR}/wordpress-error.log
</VirtualHost>

oder - wenn mehrere virtual hosts:

cd /etc/apache2/sites-enabled
sed -i 's|VirtualHost \*:80|VirtualHost 127.0.0.1:80|' *.conf

sslh konfigurieren

/etc/default/sslh:

DAEMON=/usr/sbin/sslh
Run=yes
DAEMON_OPTS="--user sslh --listen <public IP des Servers>:80 --ssh 127.0.0.1:22 --http 127.0.0.1:80 --pidfile /var/run/sslh/sslh.pid"
# --tls 127.0.0.1:443 # wenn 443 statt 80 verwendet werden soll

Services neu starten

systemctl restart apache2 sslh

Verbindung vom Client aus

ssh -p 80 user@server