Guacamole für Debian / Ubuntu
Das Guacamole Projekt ist eine HTML5 Remote-Access Applikation, die als zentrale Verwaltungskonsole entfernter Computer verwendet werden kann. Unterstützt werden derzeit die Protokolle VNC, RDP, SSH wie auch Telnet.
Mit der Version 0.9.10 ist die Verwendung von WebSockets nun auch fester Bestandteil, was besonders bei grafisch aufwendigen Verbindungen bemerkbar wird.
Installation von Guacamole 0.9.13
Die folgende Installation wurde für Ubuntu 16.04 / Debian 9 geschrieben. ACHTUNG: Wird Guacamole auf Ubuntu 14.04 installiert, so muss als Webserver Tomcat7 anstelle von Tomcat8 verwendet werden.
Vorbereitungen für Guacamole
Um überhaupt einen funktionierenden Betrieb von Guacamole zu gewährleisten, werden zu Beginn erst einmal alle von Guacamole gebrauchten Päckli installiert:
# apt-get install -y libjpeg-dev libcairo2-dev libossp-uuid-dev libpng-dev libfreerdp-dev libssh2-1-dev libssh-dev libwebp-dev libpulse-dev libavcodec-dev libavutil-dev libswscale-dev libpango1.0-dev libvncserver-dev maven tomcat8 tomcat8-admin tomcat8-user default-jdk default-jre java-common mariadb-server libtool dh-autoreconf git libvorbis-dev
Direkt nach der Installation der Päckli, sichern wird als erstes die lokale MySQL Datenbank ab.
Generieren eines neuen MaiaDB-Root Passwortes:
# openssl rand -base64 30 > /root/.mariadb-root-pw && cat /root/.mariadb-root-pw
Tb/qprITSryJDHEp29XHr7/IuxMxZhGke/LZXEEJ
# systemctl start mysql.service # systemctl enable mysql.service # mysql_secure_installation
Enter current password for root (enter for none): Enter Set root password? [Y/n]: Y New password: ****************************** Re-enter new password: ****************************** Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y All done!
Zum Schluss der Vorbereitungen werden noch die drei Guacamole Kern-Komponenten sowie den MySQL Connector zum herstellen der Guacamole Datenbankverbindung heruntergeladen.
# mkdir ~/build ; cd ~/build # wget https://www.blackgate.org/guac/guacamole-0.9.13-incubating.war # wget https://www.blackgate.org/guac/guacamole-auth-jdbc-0.9.13-incubating.tar.gz # wget https://www.blackgate.org/guac/guacamole-server-0.9.13-incubating.tar.gz # wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.44.tar.gz
Kompilieren des Guacd - Servers
Als erstes wird das tar Archiv, indem sich der Server Sourcecode befindet lokal entpackt, anschliessend kompiliert und installiert. Darauf folgend erstellen wir zwei wichtige Verzeichnisse die von unserem Server später gebraucht werden.
# tar -xvf guacamole-server-0.9.13-incubating.tar.gz # cd guacamole-server-0.9.13-incubating/ # ./configure --with-init-dir=/etc/init.d # make # make install # cd .. # mkdir -p /etc/guacamole/extensions # mkdir /etc/guacamole/lib
WICHTIG: RDP Workaround aufgrund von Kompatibilitätsproblemen unter Debian / Ubuntu:
# mkdir /usr/lib/x86_64-linux-gnu/freerdp # ln -s /usr/local/lib/freerdp/guac* /usr/lib/x86_64-linux-gnu/freerdp/ # ldconfig
Einrichten der Guacamole Datenbank
In diesem Schritt wird mit dem DB-root Benutzer auf den MySQL Server verbunden und die Datenbank Guacamole erstellt und abgefüllt. Weiter wird aus Security Grünen einen eigenen Benutzer dazu erstellt, welcher ausschliesslich auf die Guacamole DB berechtigt wird. So wird verhindert, dass dieser Benutzer Veränderungen an der Server eigenen DB Struktur vornehmen kann.
# mysql -u root --password=$(cat /root/.mariadb-root-pw)
CREATE DATABASE guacamole; CREATE USER 'guacamole'@'localhost' IDENTIFIED BY 'v2gjMrY/2XmgJwhNE56scymqTiC337XkVKOHtYw9'; GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole.* TO 'guacamole'@'localhost'; FLUSH PRIVILEGES; quit
Nun wird die Guacamole DB Authentifizierungs-Library jdbc entpackt, in die Installation integriert und anschliessend die Datenbank abgefüllt. Zum Schluss wird dann noch der offizielle MySQL Connector driver ebenfalls mit einbezogen.
# tar -xvf guacamole-auth-jdbc-0.9.13-incubating.tar.gz # cd guacamole-auth-jdbc-0.9.13-incubating/mysql/ # cp guacamole-auth-jdbc-mysql-0.9.13-incubating.jar /etc/guacamole/extensions/ # cat schema/*.sql | mysql -u root -p guacamole # cd ../.. # tar -xvf mysql-connector-java-5.1.44.tar.gz # cd mysql-connector-java-5.1.44 # cp mysql-connector-java-5.1.44-bin.jar /etc/guacamole/lib/ # cd ..
Einrichten des Web-Clients
Nun kann der Web-Client (das User Interface) von Guacamole auf dem System eingerichtet werden. Hierzu wird das selbst-entpackende *.war File welches den Client beinhaltet ins Webverzeichnis von Tomcat8 verlinkt. Zu guter letzt wird dann noch das Guacamole HOME als Tomcat-Umgebungsvariable festgelegt.
# cp guacamole-0.9.13-incubating.war /etc/guacamole/guacamole.war # ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/ # mkdir /usr/share/tomcat8/.guacamole # touch /etc/guacamole/guacamole.properties # ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat8/.guacamole/ # echo GUACAMOLE_HOME=/etc/guacamole >> /etc/default/tomcat8
Befüllen der Haupt-Konfigurationsdatei von Guacamole. Alle Änderungen die hier hineingeschrieben werden, überschreiben lediglich den Default Wert von Guacamole. (Würde also auch wenn keine DB Authentifizierung verwendet würde ohne etwas zu ergänzen funktionieren.)
# vim /etc/guacamole/guacamole.properties
# MySQL properties mysql-hostname: localhost mysql-port: 3306 mysql-database: guacamole mysql-username: guacamole mysql-password: YOUR-PASSWORD
Zum Schluss, müssen die zwei Hauptdienste noch enabled und gestartet werden!
# systemctl enable tomcat8.service guacd.service # systemctl start tomcat8 guacd
Der Server sollte nun unter folgendem Link erreichbar sein: http://your_IP:8080/guacamole
Für weitere Details, Hilfestellungen: Offizielles Guacamole Manual
ACHTUNG: Das Standard Passwort von Guacamole muss unbedingt noch geändert werden!
Username: guacadmin
Passwort: guacadmin
Weiteres
- Wie wird die Two Level Authentication aktiviert?
- Wie wird eine LDAP authentication ermöglicht?
- Grosses Troubleshooting mit Guacamole
Upgrade auf neue Version von Guacamole
Um auf die neue Version von Guacamole zu upgraden, kann eigentlich wie oben bei der Neuinstallation vorgegangen werden. Es wird jedoch empfohlen, das Upgrade wie unten in den einzelnen Schritten beschrieben durchzuführen; Um auch alle gespeicherten Verbindungen und User zu erhalten, braucht es nämlich trotzdem die einte oder andere kleine Abänderung.
WICHTIG: Ein grosser unterschied besteht darin, dass der gesammte DB Create Part übersprungen wird und anstelle von diesem Abschnittes hier die Schritte aus dem Punkt MySQL-DB Upgrade
durchgeführt werden.
Vorbereitungen für das Upgrade
Vor dem Beginn werden erstmals die zwei Haupt-Services die Guacamole auszeichnen gestoppt.
# service tomcat8 stop # service guacd stop
Ist dies erledigt, kann man mit dem Upgrade eigendlich sofort beginnen.. Will man noch seine DB-Credentials nachschauen, kann man dies im guacamole.properties tun.
# cat /etc/guacamole/guacamole.properties
mysql-hostname: localhost mysql-port: 3306 mysql-database: xxxxxxxxx mysql-username: xxxxxxxxx mysql-password: xxxxxxxxx
Asl erstes, werden die alten Dateien / Verzeichnisse gelöscht, welche nicht mehr von der neuen Guacamole Version unterstützt, gebraucht werden:
# rm -rf /etc/guacamole/extensions/* # rm -f /var/lib/tomcat8/webapps/guacamole.war # rm -rf /var/lib/tomcat8/webapps/guacamole # rm -f /etc/guacamole/guacamole.war
Zum durchführen des Upgrades, wird nun weiter folgendermassen vorgegangen:
- Herunterladen der neuen Versionen (
Server
,WebClient
,jdbc
und falls gebrauchtduo
)# cd ~/build # wget https://www.blackgate.org/guac/guacamole-server-0.9.14.tar.gz # wget https://www.blackgate.org/guac/guacamole-auth-jdbc-0.9.14.tar.gz ##DOWNLOAD JUST ONE VERSION, HARDENED BY MICHAEL OR ORIGINAL VERSION:## # wget https://www.blackgate.org/guac/guacamole-0.9.14.war # wget https://www.blackgate.org/guac/guacamole-0.9.14_hardened.war # wget https://www.blackgate.org/guac/guacamole-auth-duo-0.9.14.tar.gz
- Entpacken des Server Sourcecodes und der Extentions
# tar -xvf guacamole-server-0.9.14.tar.gz # tar -xvf guacamole-auth-jdbc-0.9.14.tar.gz # tar -xvf guacamole-auth-duo-0.9.14.tar.gz
- Server kompilieren und installieren.
# cd guacamole-server-0.9.14/ # ./configure --with-init-dir=/etc/init.d # make # make install # cd ..
- Neue Versionen der Erweiterungen, aus den Source Ordnern in /ect/guacamole/extension kopieren! (z.B. auth-jdbc & auth-duo)
# cd guacamole-auth-jdbc-0.9.14/mysql/ # cp guacamole-auth-jdbc-mysql-0.9.14.jar /etc/guacamole/extensions/ # cd ../.. # cp guacamole-auth-duo-0.9.14/guacamole-auth-duo-0.9.14.jar /etc/guacamole/extensions/
- Neuer WebClient nach /etc/guacamole/ kopieren und Symlinks erneuern. ACHTUNG: Nur eine Version kopieren!
##COPY JUST ONE VERSION, SAME YOU DESIDED ABOVE!: (HARDENED BY MICHAEL OR ORIGINAL VERSION)## # cp guacamole-0.9.14_hardened.war /etc/guacamole/guacamole.war # cp guacamole-0.9.14.war /etc/guacamole/guacamole.war # ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/
- Falls nötig, DB-Upgrade durchführen. Ansonsten Dienste (wie unten beschrieben) wieder starten.
MySQL-DB Upgrade
Um nun ein MySQL Upgrade von Version 0.9.13 auf Version 0.9.14 durchzuführen, muss man wie folgt vorgehen:
# cd guacamole-auth-jdbc-0.9.14/mysql/schema/upgrade # cat upgrade-pre-0.9.14.sql | mysql -u root -p guacamole
ACHTUNG: Wenn zwei db Aktualisierungen notwendig sind; wie z.B. beim Upgrade von Guacamole 0.9.9 auf 0.9.13, muss die DB IMMER zuerst auf die erste vorherige Version in dem Fall 0.9.10 upgedated werden, noch bevor, schlussendlich auf die neuste Release Version 0.9.13 aktualisiert werden kann!
Nach dem erfolgreichen Upgrade, kann der Guacamole Server (nach einem daemon-reload) sowie der Tomcat8 Webserver anschliessend wieder gestartet werden!
# systemctl daemon-reload # service guacd start # service tomcat8 start