Обзор развертывания Apache Guacamole + Xfce на сервере¶
Предварительные условия и основные требования¶
Для развертывания требуется сервер под управлением дистрибутивов на базе Debian (Ubuntu/Xubuntu) или RHEL. Должны быть соблюдены следующие системные требования:
| Требование | Спецификация |
|---|---|
| Привилегии | Требуются права root or sudo для установки пакетов и управления сервисами |
| Домен | hostkey.in |
| Внутренний порт | 8080 (Tomcat) |
| Внешний порт | 443 (HTTPS через Nginx/Certbot) |
FQDN финальной панели в домене hostkey.in¶
Приложение доступно через поддомен по следующему шаблону: <prefix><Server ID>.hostkey.in
В соответствии с конфигурацией, путь для веб-интерфейса Guacamole установлен как /guacamole/.
Структура файлов и директорий¶
Система использует определенные директории для конфигурации, бинарных файлов и пользовательских данных:
| Путь | Описание |
|---|---|
/etc/guacamole | Основная директория конфигурации (Home) |
/etc/guacamole/extensions | Расширения Guacamole |
/etc/guacamole/lib | Библиотечные файлы Guacamole |
/var/lib/tomcat9/webapps/ | Папка развертывания веб-приложения Tomcat |
/root/nginx | Директория конфигурации Nginx и Docker Compose |
/data/nginx/user_conf.d | Пользовательские конфигурации Nginx |
Процесс установки приложения¶
Приложение устанавливается путем компиляции Guacamole Server из исходного кода и развертывания файла Guacamole Client WAR через Tomcat 9.
-
Guacamole Server: Последняя версия
guacamole-serverзагружается из официального репозитория Apache, распаковывается в/root/, настраивается с параметром--with-init-dir=/etc/init.d, компилируется с помощьюmakeи устанавливается в систему. -
Guacamole Client: Соответствующий
.warфайл загружается и развертывается в директорию webapps Tomcat 9 под именемguacamole.war. -
Tomcat 9: Выступает в роли контейнера сервлетов для приложения Guacamole.
Права доступа и безопасность¶
Безопасность обеспечивается на нескольких уровнях:
-
Firewall/Proxy: Контейнер Nginx с Certbot обеспечивает терминацию SSL (SSL termination) на порту 443.
-
Аутентификация пользователей: Аутентификация настроена через
user-mapping.xmlс использованием паролей в хеше MD5. -
Системные пользователи: Для доступа к рабочему столу Xfce создается выделенный системный пользователь с именем
user, входящий в группыuserиssl-cert(для XRDP). -
Права сервисов: Директории
/etc/guacamoleзащищены режимом прав0750или0755.
Базы данных¶
Текущая реализация использует локальный конфигурационный файл для сопоставления пользователей:
-
Конфигурационный файл:
/etc/guacamole/user-mapping.xml -
Метод аутентификации: Хеширование паролей методом MD5 внутри XML-файла.
Docker-контейнеры и их развертывание¶
Для управления обратным прокси (reverse proxy) и жизненным циклом SSL-сертификатов используется Docker Compose с образом jonasal/nginx-certbot:latest.
Развертывание выполняется из директории /root/nginx:
Конфигурация контейнера:
-
Image:
jonasal/nginx-certbot:latest -
Network Mode:
host -
Volumes:
-
nginx_secrets:/etc/letsencrypt(Внешний volume для SSL-сертификатов) -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d
-
Прокси-серверы¶
Система использует контейнеризированный экземпляр Nginx, выступающий в роли обратного прокси для обеспечения поддержки HTTPS через Let's Encrypt.
-
Управление SSL: Выполняется с помощью Certbot, интегрированного в контейнер Nginx.
-
Пользовательские домены: Настраиваются через пользовательские файлы в
/data/nginx/user_conf.d. -
Email для Certbot:
hkadm@hostkey.com
Настройки прав доступа¶
Применяются специфические права доступа для обеспечения стабильности и безопасности сервисов:
| Файл/Директория | Права | Владелец/Группа |
|---|---|---|
/etc/guacamole | 0750 | root:root |
/etc/guacamole/extensions | 0750 | root:root |
/etc/guacamole/lib | 0750 | root:root |
/etc/guacamole/user-mapping.xml | 0755 | root:root |
/var/lib/tomcat9/webapps/guacamole.war | 0755 | root:root |
Доступные порты для подключения¶
Системные компоненты используют следующие порты:
-
443 (TCP): Внешний доступ по HTTPS через Nginx.
-
8080 (TCP): Внутренний сервисный порт Tomcat.
-
3389 (TCP): Протокол RDP, используемый для подключений Guacamole к удаленным хостам.
Запуск, остановка и обновление¶
Управление сервисами осуществляется с помощью systemd.
Guacamole Server (guacd):
systemctl start guacd # Запустить сервис
systemctl stop guacd # Остановить сервис
systemctl enable guacd # Включить автозагрузку при старте системы
Tomcat 9:
Nginx Proxy (через Docker):