Ubuntu 14.04.x LTS - GateOne SSH Client installieren mit Apache Reverse Proxy - lokal
Aus znilwiki
Noch ein Hinweis: ich arbeite als root - also ggf. die sudo
nicht vergessen!
Voraussetzungen schaffen
Alles was gateOne so zum betrieb braucht:
apt-get install python-tornado python-pip dtach python-openssl python-kerberos python-dev git build-essential apt-get purge python-tornado pip install tornado pip install futures
Ja - wir installieren erst python-tornado um es wieder zu löschen ... um es wieder zu installieren -> nehmt es so hin.
GateOne herunterladen
cd /usr/src git clone https://github.com/liftoff/GateOne.git
Es wird ein Verzeichnis GateOne angelegt welches den letzten Entwicklungstand enthält
GateOne Installieren
cd /usr/src/GateOne ./setup.py install
Damit wird GateOne nach
/usr/local/bin/
Installiert. Es wird zum dem ein Start/Stop Script angelegt
/etc/init.d/gateone
GateOne konfigurieren
Tja, die Konfigurationsdateien gibt es noch nicht - die legt gateOne erst beim ersten Start an ... leider startet GateOne damit auf Port 443.
Hilft nichts, GateOne einmal starten:
service gateone start
Wenn schon etwas auf Port 443 läuft (wie bei mir mein Apache-Webserver mit diversen Seiten) geht das schief - er richtet aber trotzdem alles ein.
Es gibt nun ein Log unter
tail -n 1000 -f /var/log/gateone/gateone.log
In welchen bei mir etwas in der Mitte steht wie:
[I 141107 23:53:43 configuration:705] Gate One settings are incomplete. A new <settings_dir>/10server.conf will be generated. [I 141107 23:53:43 server:4167] Gate One License: AGPLv3 (http://www.gnu.org/licenses/agpl-3.0.html) [I 141107 23:53:43 server:4176] Imported applications: Terminal ... ... [I 141107 23:53:47 server:4470] Listening on https://*:443/ [E 141107 23:53:47 server:4532] Could not listen on 0.0.0.0:443 (address:port is already in use by another application). [E 141107 23:53:47 server:4546] Exception was: (98, 'Address already in use') [I 141107 23:53:48 server:4553] Clearing cache_dir: /tmp/gateone_cache [I 141107 23:53:48 server:4556] pid file removed.
Aber trotzdem Prima - denn nun gibt es auch die Konfigurationsdateien!
Wir ändern nun den Port - dazu editieren wir die Datei
nano /etc/gateone/conf.d/10server.conf
Und suchen die Zeile
"port": 443,
und ändern diese, z.B. in
"port": 17443,
Und wo wir schon mal drin sind auch die Zeile:
"locale": "en_US",
in
"locale": "de_DE",
Speichern - und den Dienst wieder starten:
service gateone start
Die letzten Zeilen im Log sollten nun wie folgt sein:
tail -f /var/log/gateone/gateone.log
Ausgabe:
... ... [I 141108 00:00:42 server:4470] Listening on https://*:17443/ [I 141108 00:00:42 server:4523] Process running with pid 4855
Sehr schön.
Ein kleiner Test auf Port 17443:
Automatischen Start beim booten einrichten
Der fehlt noch, einfach mit
update-rc.d gateone defaults
einrichten.
GateOne hinter Apache Reverse Proxy einrichten
Mein Webserver läuft mit ISPConfig - es geht natürlich auch ohne.
Ich habe eine Subdomain ssh.znil.net eingerichtet als Apache vHost.
Diese habe ich mit einem SSL-Zertifikat abgesichert - welches ich zuvor mit ISPConfig erstellt habe.
Wie man ansonsten ein Zertifikat für den Apache erstellt findet Ihr auch im Internet - aber nicht an dieser Stelle.
Testet einmal ob die Webseite sich mit dem Zertifikat aufrufen lässt (also über https://) - da müsste die Standard-Seite von Apache oder ISPConfig kommen.
Apache vorbereiten
Apache sollte mindestens Version 2.4.7 sein!
Wir müssen die folgenden Module aktiviert haben:
a2enmod rewrite a2enmod proxy_http a2enmod proxy_wstunnel a2enmod ssl
Danach den Apache neu starten!
service apache2 restart
GateOne SSL deaktivieren und Subdomain eintragen
In dem Apache Reverse Proxy Modul proxy_wstunnel gibt es scheinbar zur Zeit noch einen Fehler - und zwar funktionierent das bei SSL Verbindungen nicht richtig.
Deshalb müssen wir in GateOne selbst SSL deaktivieren:
nano /etc/gateone/conf.d/10server.conf
und die Zeile
"disable_ssl": false,
in
"disable_ssl": true,
ändern.
Ausserdem müssen wir ihm noch sagen über welche externe Subdomain wir kommen (welchen Namen wir im Webbrowser eintippen),
In der Zeile
"origins": ["localhost", "127.0.0.1", "webserver.znil.local", "webserver", "192.168.42.10"],
also eure Subdomain ergänzen - bei mir also ssh.znil.net
"origins": ["localhost", "127.0.0.1", "ssh.znil.net", "webserver.znil.local", "webserver", "192.168.42.10"],
Dann den Dienst neu starten:
service gateone restart
Die Kommunikation zwischen GateOne und dem Apache ist damit unverschlüsselt. Nach Außen hin, also von extern zum Apache ist diese dann aber verschlüsselt.
Da beides lokal auf dem gleichen Server läuft ist die Gefahr gering das da einer zwischen kommt.
Apache .vhost konfigurieren
Meine Subdomain heist ja
ssh.znil.net
also finde ich die .vhost Datei unter
nano /etc/apache2/sites-available/ssh.znil.net.vhost
und ändere die wie folgt ab:
<VirtualHost 192.168.42.10:80> ServerName ssh.znil.net ServerAdmin webmaster@znil.net RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] </VirtualHost> <VirtualHost 192.168.42.10:443> ServerName ssh.znil.net ServerAdmin webmaster@znil.net SSLEngine on SSLProtocol All -SSLv2 -SSLv3 SSLCertificateFile /var/www/clients/client0/web20/ssl/ssh.znil.net.crt SSLCertificateKeyFile /var/www/clients/client0/web20/ssl/ssh.znil.net.key ProxyPass / ws://localhost:17443/ ProxyPassReverse / ws://localhost:17433/ ProxyPass / wss://localhost:17443/ ProxyPassReverse / wss://localhost:17433/ ProxyPass / http://localhost:17443/ ProxyPassReverse / http://localhost:17443/ </VirtualHost>
Ändern müsst Ihr eigentlich nur
- die IP 192.168.42.10 in eure externe IP / IP des Servers mit dem Apache Reverse Proxy
- alle localhost:17443 in die Adresse / IP plus Port eurer GateOne-Installation
Speichern und dann den Apache wieder neu starten:
service apache2 restart
Und nun solltet Ihr über eure Subdomain über https:// auf GateOne zugreifen können.
Falls der Zugriff über http erfolgt wird dabei automatisch auf https umgeleitet.
--Bernhard Linz 01:25, 8. Nov. 2014 (CET)