====== 🌐 Apache Guacamole (Clientless Remote Desktop) ====== In diesem Kapitel wird die Architektur und Einrichtung von **Apache Guacamole** dokumentiert. Das System fungiert als "Clientless Remote Desktop Gateway" und ermöglicht SSH-, RDP- und VNC-Verbindungen direkt über den Webbrowser, ohne dass zusätzliche Software auf dem Endgerät installiert werden muss. ===== 1. Systemarchitektur ===== Guacamole besteht nicht aus einem einzelnen Programm, sondern aus mehreren miteinander verbundenen Schichten: * **Webbrowser:** Die Benutzeroberfläche für den Anwender. * **Nginx (Reverse Proxy):** Übernimmt das Routing und leitet den Datenverkehr sicher weiter. * **Apache Tomcat:** Der Webserver, der die Java-basierte Webanwendung von Guacamole ausführt. * **guacd:** Das Herzstück des Systems. Ein Proxy-Dienst im Hintergrund, der den Web-Traffic in echte SSH- oder RDP-Protokolle übersetzt. * **MariaDB:** Die Datenbank zur Speicherung von Benutzerdaten, Passwörtern und Verbindungseinstellungen. ===== 2. Installation & Konfiguration ===== **Schritt 1: Datenbank-Vorbereitung (MariaDB)**\\ Für die Verwaltung der Benutzer wurde eine dedizierte Datenbank (''guacamole_db'') erstellt. Anschließend wurden die erforderlichen Guacamole-Tabellen (Schemas) importiert und Benutzerrechte definiert. **Schritt 2: Tomcat & Java-Anwendung**\\ Da das aktuelle Betriebssystem (Debian 13) Kompatibilitätsprobleme mit der neuesten Tomcat-Version (Tomcat 10) verursachte, wurde eine alternative Lösung implementiert: * Die ältere, aber stabile Version **Tomcat 9** wurde manuell im Verzeichnis ''/opt/tomcat9'' installiert. * Die Guacamole-Webanwendung (die ''.war''-Datei) wurde erfolgreich in dieses Verzeichnis bereitgestellt. **Schritt 3: Der Übersetzungsdienst (guacd)**\\ Der Dienst ''guacd'' wurde installiert, um die Verbindungen zu übersetzen. * **Kritische Anpassung:** Anfänglich versuchte der Dienst nur über IPv6 zu kommunizieren. In der Konfigurationsdatei (''guacd.conf'') wurde er explizit so konfiguriert, dass er nur über das lokale IPv4-Interface (''127.0.0.1'') lauscht. ===== 3. Nginx Reverse Proxy Integration ===== Um das System professionell und ohne Eingabe von speziellen Ports (wie Port 8080) über den Standard-Webport erreichbar zu machen, wurde Nginx konfiguriert: * **WebSocket Support:** Diese Funktion wurde im Reverse Proxy zwingend aktiviert. Ohne WebSockets würde die ständige Echtzeit-Verbindung zwischen Browser und Server abbrechen. ===== 4. Fehlerbehebung & Tests (Troubleshooting) ===== Während der Einrichtung traten technische Herausforderungen auf, die erfolgreich gelöst wurden: * **Zertifikats-Ungenauigkeiten:** Bei der Verbindung zu Ziel-Servern wurden die SSH-Schlüssel als "unbekannte Quelle" eingestuft und blockiert. * **Lösung:** In den Guacamole-Verbindungseinstellungen wurden Parameter wie "Ignore Server Certificate" aktiviert und die "Host Keys" manuell hinterlegt. * **Falsche Limit-Fehler:** Wenn eine Verbindung aufgrund von Zertifikatsfehlern fehlschlug, meldete das System fälschlicherweise ein "erreichtes Verbindungslimit" (False-Positive). Dies wurde bei der Fehlersuche berücksichtigt. **Erfolgreiche Tests:**\\ Nach der Fehlerbehebung wurden lokale SSH-Verbindungen auf den eigenen Server sowie externe SSH- und RDP-Verbindungen auf weitere Ziel-Server im internen Netzwerk erfolgreich über den Webbrowser durchgeführt.