Конфигурация удаленного рабочего стола с использованием Apache Guacamole на Debian 10 Buster

В данном руководстве описывается процесс настройки удаленного рабочего стола Guacamole на сервере под управлением Debian 10. Guacamole представляет собой бесплатный и открытый шлюз для удаленного доступа, созданный фондом Apache.

Характерные черты Guacamole

  • Обеспечивает доступ к удаленному рабочему столу через интернет-браузер без необходимости установки дополнительного ПО на клиентском устройстве.
  • Совместим с основными протоколами, такими как VNC, RDP, SSH и Kubernetes.
  • Сессии VNC можно записывать в виде графических файлов.
  • Унифицированный доступ через CAS, OpenID Connect или SAML 2.0.
  • Wake-on-LAN
  • Управление несколькими сессиями удаленного рабочего стола не составляет труда.
  • Поддерживает двухступенчатую аутентификацию с использованием TOTP.
  • Поддерживает функции буфера обмена (копирование и вставка) и возможность передачи файлов с использованием SFTP.
  • Обеспечивает возможность работы с аудио на входе и выходе.
  • и еще множество других вещей.

Гуакамоле не является протоколом для удаленного рабочего стола. Это прокси-сервер, который связывает удаленный рабочий стол с клиентом, позволяя управлять и отображать его через веб-браузер.

Создайте сервер Guacamole, используя исходный код

Зайдите на ваш сервер с Debian 10 и установите необходимые пакеты зависимостей.

sudo apt install build-essential libcairo2-dev libjpeg62-turbo-dev libpng-dev libtool-bin libossp-uuid-dev libvncserver-dev freerdp2-dev libssh2-1-dev libtelnet-dev libwebsockets-dev libpulse-dev libvorbis-dev libwebp-dev libssl-dev libpango1.0-dev libswscale-dev libavcodec-dev libavutil-dev libavformat-dev

Загрузите актуальную стабильную версию guacamole-server.

wget http://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz

Распакуйте архив.

tar - xvf guacamole-server-1.2.0.tar.gz

Откройте извлечённую папку.

cd guacamole-server-1.2.0

guacamole-server-debian-10

После этого выполните компиляцию guacamole-server.

sudo make

Установите сервер Guacamole.

sudo make install

Очистите кэш установленных системных библиотек.

sudo ldconfig

Обновите systemd, чтобы он смог обнаружить службу guacd (демон прокси Guacamole), находящуюся в директории /etc/init. d/.

sudo systemctl daemon-reload

Запустите процесс guacd.

sudo systemctl start guacd

Активируйте автоматическое выполнение при старте системы.

sudo systemctl enable guacd

Убедитесь в его состоянии.

systemctl status guacd

Как вы можете заметить, он находится в активном состоянии.

Guacd прослушивает соединения на 127.0.0.1:4822, что можно продемонстрировать с помощью утилиты ss.

sudo ss - lnpt | grep guacd

Инсталлируйте веб-приложение Guacamole

Веб-приложение Guacamole разработано на языке Java, что требует установки сервлет-контейнера, например, Apache Tomcat.

sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user

Apache Tomcat будет принимать запросы на порту 8080, что можно проверить с помощью:

sudo ss - lnpt | grep java

Если на порту 8080 уже работает другое программное обеспечение, Tomcat не сможет занять этот порт. Вам следует перенастроить другой процесс на использование другого порта и затем перезапустить Tomcat с помощью команды (sudo systemctl restart tomcat9).

Затем загрузите веб-приложение Guacamole.

wget https://downloads. apache. org/guacamole/1.2.0/binary/guacamole-1.2.0.war

Перенесите файл в директорию веб-приложения (/var/lib/tomcat9/webapps) и одновременно измените его имя, убрав номер версии.

Читайте также:  Показать pid процессов пользователей root и daemon

sudo mv guacamole-1.2.0.war /var/lib/tomcat9/webapps/guacamole.war

Перезапустите службы Tomcat и guacd.

sudo systemctl restart tomcat9 guacd

Конфигурация Guacamole

Сформируйте каталог настроек для Guacamole.

sudo mkdir /etc/guacamole/

Сформируйте файл настройки.

sudo nano /etc/guacamole/guacamole. properties

Включите следующие строки в этот файл. Некоторые могут утверждать, что их добавление не требуется, так как это стандартные значения. Я представляю вам основную конфигурацию, чтобы вы могли при необходимости внести изменения.

# Имя хоста и порт прокси guacamole guacd-hostname: localhost guacd-port: 4822 # Класс провайдера аутентификации (аутентифицирует комбинацию пользователь/пароль, необходимый при использовании предоставленного экрана входа) auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider basic-user-mapping: /etc/guacamole/user-mapping. xml

Сохраните файл и закройте его. По умолчанию модуль аутентификации Guacamole извлекает имена пользователей и пароли из XML-документа, расположенного по пути: /etc/guacamole/user-mapping. xml. Прежде чем создать данный файл, необходимо сгенерировать хеш MD5 для вашего пароля, используя следующую команду. Замените your_password на выбранный вами пароль.

echo - n your_password | openssl md5

(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517

После этого сформируйте XML-файл для соответствия пользователей.

sudo nano /etc/guacamole/user-mapping.xml

Добавьте указанные строки. В этом разделе мы определяем, что серверная часть будет использовать протокол VNC (Virtual Network Computing). Не забудьте заменить имя пользователя и хэш пароля. Пароль для VNC мы создадим позже.

vnc localhost 5901 vnc_password

Закройте файл после сохранения. Перезапустите Tomcat и guacd.

sudo systemctl restart tomcat9 guacd

Настройте рабочую среду на сервере с Debian 10

Для настройки удаленного рабочего стола требуется наличие рабочей среды. Перед установкой убедитесь, что на вашем сервере достаточно оперативной памяти. Существует несколько вариантов рабочих сред. Легковесная XFCE показала себя отлично в работе с VNC, поэтому её можно установить с использованием следующей команды.

sudo apt update sudo apt install xfce4 xfce4-goodies

При установке возможно потребуется выбрать дисплейный менеджер по умолчанию. Этот выбор не играет существенной роли, так как экран входа не будет отображаться в сессии VNC.

Так как на сервере используется графическая среда, рекомендуется настроить брандмауэр, например UFW, чтобы контролировать доступ и оставить открытыми только нужные порты для внешнего подключения. В следующем руководстве можно узнать, как активировать и настроить UFW на Debian.

  • Использование брандмауэра UFW на Debian, Ubuntu и Linux Mint

Настройка VNC-сервера на Debian 10

Для пользователей Linux доступно несколько программ VNC-серверов. Мы выбрали TigerVNC, так как он наиболее совместим с Guacamole.

sudo apt install tigervnc-standalone-server

Используйте следующую команду для запуска VNC-сервера.

vncserver

При первом запуске TigerVNC вам предложат установить пароль для подключения. Важно помнить, что длина пароля не должна превышать 8 символов. После этого можно решить, требуется ли пароль только для просмотра.

Теперь необходимо внести изменения в файл /etc/guacamole/user-mapping. xml и обновить пароль для VNC. После этого перезапустите Tomcat и guacd.

Читайте также:  Как использовать команду chown в Linux для изменения владельца и группы файлов

sudo systemctl restart tomcat9 guacd

Пакет tigervnc-standalone-server содержит файл /etc/X11/Xvnc-session, который информирует TigerVNC о необходимости запуска X-сервера при инициализации.

Сервер TigerVNC не содержит системных единиц systemd. Для его автоматического запуска при загрузке необходимо создать юнит systemd.

Вставьте указанные строки в файл. Не забудьте заменить username на ваше фактическое имя пользователя.

[Unit] Description=обертка для запуска X-сервера для VNC After=syslog. target network. target [Service] Type=forking User=username Group=username WorkingDirectory=/home/username ExecStartPre=-/usr/bin/vncserver - kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver - depth 24 - geometry 1280x800 - localhost :%i ExecStop=/usr/bin/vncserver - kill :%i [Install] WantedBy=multi-user. target

Сохраните изменения и закройте документ. Прекратите работу текущего экземпляра сервера VNC.

vncserver - kill :1

Запустите VNC-сервер с использованием systemd.

Активируйте автоматическое выполнение при старте системы.

Проверьте его текущее состояние.

Он, как вы можете заметить, активно трудится.

Сейчас сервер TigerVNC принимает подключения на порту 5901.

sudo ss - lnpt | grep vnc

Конфигурация обратного прокси для веб-приложения Guacamole

Apache Tomcat работает на порту 8080. Для удобства доступа к веб-приложению Guacamole можно настроить обратный прокси с использованием Apache или Nginx, что позволит пользователям подключаться к приложению через доменное имя. Это также облегчит установку TLS-сертификата для обеспечения шифрования соединения.

Apache

Если вы хотите использовать Apache, установите его из стандартного программного репозитория Debian.

sudo apt install apache2

Для того чтобы настроить Apache в качестве обратного прокси, необходимо активировать модули прокси и модуль обработки заголовков.

sudo a2enmod proxy proxy_http headers proxy_wstunnel

После этого создайте файл виртуального хоста для Guacamole.

sudo nano /etc/apache2/sites-available/guacamole.conf

Включите указанные строки в файл, заменив guacamole. example.com на ваше собственное доменное имя. Обязательно создайте A-запись для поддомена в вашем DNS-менеджере. Если у вас нет действующего доменного имени, рекомендую рассмотреть возможность приобретения его у NameCheap. Там низкие цены, и они предлагают бесплатную защиту конфиденциальности whois на всю жизнь.

ServerName guacamole. example.comОшибка журнала: $/guacamole_error.log; Журнал доступа: $/guacamole_access.log в комбинированном формате.Все разрешено. Прокси передает запросы на http://localhost:8080/guacamole/, включая сброс пакетов, а также выполняет обратную проксирование на тот же адрес. Запросить все разрешения. Настроить ProxyPass для ws://localhost:8080/guacamole/websocket-tunnel и ProxyPassReverse для ws://localhost:8080/guacamole/websocket-tunnel.Заголовок всегда должен отключать X-Frame-Options.

Сохраните файл и закройте его. Убедитесь в правильности синтаксиса.

sudo apachectl - t

Если синтаксис корректен, активируйте этот виртуальный хост.

sudo a2ensite guacamole.conf

sudo systemctl restart apache2

Теперь вы можете зайти на страницу входа Apache Guacamole по адресу guacamole. example.com. Если появится сообщение об ошибке «недействительный запрос» или аналогичное, это может указывать на то, что Apache Tomcat не может подключиться к порту 8080, так как он уже используется другим процессом на сервере. В таком случае вам нужно перенастроить конфликтующий процесс для использования другого порта и перезапустить Tomcat.

Читайте также:  Пять причин перейти с Windows на Linux

Nginx

Если вы выбираете Nginx, установите его из стандартного программного репозитория Debian.

sudo apt install nginx

Создайте серверный блок конфигурации для Guacamole.

sudo nano /etc/nginx/conf.d/guacamole.conf

Вставьте указанные строки в файл. Замените guacamole. example.com на ваше уникальное доменное имя. Не забудьте добавить A запись для поддомена в DNS-менеджере. Если у вас еще нет действующего домена, рекомендую рассмотреть возможность покупки на NameCheap. Цены там невысокие, и они предлагают бесплатную защиту конфиденциальности whois на всю жизнь.

server { listen 80; listen [::]:80; server_name guacamole. example.com; access_log /var/log/nginx/guac_access.log; error_log /var/log/nginx/guac_error.log; location / { proxy_pass http://127.0.0.1:8080/guacamole/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_cookie_path /guacamole/ /; }}

Сохраните изменения в файле и закройте его. После этого выполните проверку конфигурации Nginx.

sudo nginx - t

После успешного завершения теста необходимо перезапустить Nginx, чтобы применить изменения.

sudo systemctl reload nginx

Теперь вы можете зайти на страницу входа Apache Guacamole по адресу guacamole. example.com. Если вы столкнулись с ошибкой «недопустимый запрос» или чем-то подобным, это может указывать на то, что Apache Tomcat не может подключиться к порту 8080, так как он уже занят другим процессом на сервере. В таком случае рекомендуется перенастроить другой процесс на использование другого порта и перезапустить Tomcat.

Активируйте HTTPS

Для шифрования HTTP-трафика при использовании веб-интерфейса Guacamole необходимо активировать HTTPS, установив бесплатный сертификат TLS от Let’s Encrypt. Для установки клиента Let’s Encrypt (certbot) на Debian 10 выполните следующую команду.

sudo apt install certbot

Если вы работаете с Apache, необходимо также установить плагин Certbot для этой веб-серверной платформы.

sudo apt install python3-certbot-apache

После этого введите следующую команду для получения и установки сертификата TLS.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email - d guacamole. example.com

При использовании Nginx необходимо также установить плагин Certbot, специально предназначенный для работы с Nginx.

sudo apt install python3-certbot-nginx

После этого выполните команду, чтобы загрузить и установить сертификат TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email - d guacamole. example.com

  • —nginx : Применить плагин nginx.
  • —apache: Применить плагин Apache.
  • —согласие-с-условиями : Одобрить условия обслуживания.
  • Принудительное использование HTTPS с помощью перенаправления 301.
  • —hsts: Включить заголовок Strict-Transport-Security в каждый HTTP-ответ. Это заставляет браузер постоянно применять TLS для данного домена, обеспечивая защиту от атак типа SSL/TLS Stripping.
  • —staple-ocsp: Активирует OCSP Stapling. В процессе TLS сервер прикрепляет действительный ответ OCSP к своему сертификату.

Сертификат теперь необходимо получить и установить автоматически.

Теперь у вас есть возможность зайти в веб-интерфейс Guacamole по протоколу HTTPS.

страница входа в удаленный рабочий стол Apache Guacamole

После авторизации в системе у вас появится возможность воспользоваться удаленным рабочим столом.

гуакамоле xfce удаленный рабочий стол

Надеюсь, этот руководство оказалось для вас полезным при настройке удаленного рабочего стола Apache Guacamole на сервере Debian 10. Если вам понравился этот материал, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше полезных советов и рекомендаций.