=====Apache Guacamole unter Oracle Linux 8 mit dem MS SQL Server verwenden===== 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: * MS Repository hinterlegen * MS ODBC installieren (für die ms-Tools) * MS Tools installieren (für die DB Konfiguration) * Auf dem MSSQL Server eine Datenbank und einen Eigentümer für die DB anlegen * Guacamole Datenbank Objekte installieren * Guacamole MS SQL User für den Connect zur DB anlegen * MS SQL Properties in der guacamole.conf hinterlegen * MS SQL JDBC Treiber hinterlegen * Guacamole Erweiterung für den MS SQLServer hinterlegen * Neu Starten und konfigurieren Voraussetzung: Guacamole installiert nach folgender Anleitung => [[linux:oracle_linux_8_guacamole|Eine Oracle System Umgebung mit Apache Guacamole auf Oracle Linux 8.7 verwalten]] ---- ====Vorbereitung MS SQLServer Umgebung auf dem Linux Rechner ==== Zu ODBC/MS Tools unter Linux siehe auch => [[dba:db_link_linux_ms_sql_12c|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 ===Für Oracle Linux 8=== 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 ===JDBC jar bereitstellen === 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/). ==Problem mit dem aktuellsten Treiber "mssql-jdbc-12.2.0.jre8.jar"== 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 dem MSSQL Server eine Datenbank und einen Eigentümer für die DB anlegen==== 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 ---- ====Guacamole Datenbank Objekte installieren==== 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 ---- ====Guacamole konfigurieren ==== 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 ... == JDBC Lib hinterlegen == Die notwendigen Lib "mssql-jdbc-8.4.0.jre8.jar" für den JDBC Connect nach "/etc/guacamole/lib" kopieren. == Extension Lib hinterlegen == Die Extension für die MSQL Server Anbindung "guacamole-auth-jdbc-sqlserver-1.5.0.jar" nach "/etc/guacamole/extensions" kopieren. === Neu starten === Als root starten: systemctl stop tomcat.service systemctl start tomcat.service Prüfen: cd /srv/tomcat/tomcat/conf/logs tail -f catalina.out ---- ---- ==== Quellen ==== Doku: * https://guacamole.apache.org/doc/gug/jdbc-auth.html#creating-the-guacamole-database