Aufgabe: Als Datenbank für Apache Guacamole soll ein MS SQL Server 2019 statt der bestehenden MySQL verwendet werden.
In diese Umgebung liegt einen geclusterte MS SQL Datenbank vor, um hier mehr Ausfall Sicherheit zu erhalten wird diese Datenbank nun auch für Guacamole verwendet.
Ablauf:
Voraussetzung: Guacamole installiert nach folgender Anleitung ⇒ Eine Oracle System Umgebung mit Apache Guacamole auf Oracle Linux 8.7 verwalten
Zu ODBC/MS Tools unter Linux siehe auch ⇒ Oracle 12c RAC Real Application Cluster Datenbank über einen Datenbank Link mit einer MS SQL 2017 Datenbank verbinden - Oracle Database Gateway unter Oracle Linux 7 einsetzen und https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
MS SQL Tools installieren:
# als root curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo dnf remove unixODBC-utf16 unixODBC-utf16-devel ACCEPT_EULA=Y dnf install -y msodbcsql18 ACCEPT_EULA=Y dnf install -y mssql-tools18
Zuvor Java Version prüfen:
java -version openjdk version "1.8.0_362"
Und passende Lib laden von z.B. https://central.sonatype.com/namespace/com.microsoft.sqlserver
Für meine Umgebung habe ich am Ende die „mssql-jdbc-8.4.0.jre8.jar“ verwendet (https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/8.4.0.jre8/).
Im ersten Schritt natürlich den aktuellsten Treiber mssql-jdbc-12.2.0.jre8.jar von https://learn.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver16 verwendet.
ABER:
13:25:08.768 [ajp-nio-127.0.0.1-8009-exec-7] WARN o.a.g.e.AuthenticationProviderFacade - The "sqlserver" authentication provider has encountered an internal error which will halt the authentication process. If this is unexpected or you are the developer of this authentication provider, you may wish to enable debug-level logging. If this is expected and you wish to ignore such failures in the future, please set "skip-if-unavailable: sqlserver" within your guacamole.properties. 13:25:08.771 [ajp-nio-127.0.0.1-8009-exec-7] ERROR o.a.g.rest.RESTExceptionMapper - Unexpected internal error: ### Error querying database. Cause: com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target". ClientConnectionId:c4a1b75a-de43-4989-8f01-778e10ccb428
Daher nun eine viel älteren Version verwendet, es ist mir nicht gelungen das in Guacamole so zu konfigurieren das des auch mit dem neusten Treiber klappt.
Vermutlich ist jetzt aber die Verbindung zur DB nicht verschlüsselt!
Auf der MSSQL DB Umgebung einen User und eine Datenbank „guacamole“ anlegen lassen, für das Setup den User „guacamole“ SYSADMIN Rechte einräumen lassen, diese aber nach der Installation wieder entfernen!
Test ob ein Konnect zur DB möglich ist:
/opt/mssql-tools/bin/sqlcmd -S msdbCluster -U guacamole -P xxxDASGeheimePWDxx use guacamole go SELECT NAME FROM sys.sysdatabases; go
Schema installieren über die DB Skripte von Guacamole:
# In das zuvor ausgepackte Verzeichnis wechseln cd /srv/guacamole-client-1.5.0/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/schema/ /opt/mssql-tools/bin/sqlcmd -S msdbCluster -U guacamole -d guacamole -i ./001-create-schema.sql # Admin User guacadmin anlegen /opt/mssql-tools/bin/sqlcmd -S msdbCluster -U guacamole -d guacamole -i ./002-create-admin-user.sql # Login User guacamole_user anlegen /opt/mssql-tools/bin/sqlcmd -S msdbCluster -U guacamole CREATE LOGIN guacamole_user WITH PASSWORD = 'SehrStrengGeheimesPWD'; GO USE guacamole; GO CREATE USER guacamole_user; GO ALTER ROLE db_datawriter ADD MEMBER guacamole_user; ALTER ROLE db_datareader ADD MEMBER guacamole_user; GO quit
Unter „/etc/guacamole“ die Datei guacamole.properties anpassen:
... # SQL Server properties sqlserver-hostname: msdbCluster sqlserver-port: 1433 sqlserver-database: guacamole sqlserver-username: guacamole_user sqlserver-password: SehrStrengGeheimesPWD sqlserver-default-max-connections-per-user: 0 sqlserver-default-max-group-connections-per-user: 0 sqlserver-user-required: false ...
Die notwendigen Lib „mssql-jdbc-8.4.0.jre8.jar“ für den JDBC Connect nach „/etc/guacamole/lib“ kopieren.
Die Extension für die MSQL Server Anbindung „guacamole-auth-jdbc-sqlserver-1.5.0.jar“ nach „/etc/guacamole/extensions“ kopieren.
Als root starten:
systemctl stop tomcat.service systemctl start tomcat.service
Prüfen:
cd /srv/tomcat/tomcat/conf/logs tail -f catalina.out