Установка Apache Guacamole MySQL Ubuntu 20.04 LTS
Установка Apache Guacamole MySQL Ubuntu 20.04 LTS

Установка Apache Guacamole MySQL Ubuntu 20.04 LTS

В данной статье пошагово рассмотрим процесс настройки веб-шлюза Apache Guacamole. Установку будем осуществлять на ОС Ubuntu 20.04.3 LTS. Настройка полная, с СУБД, чтобы можно было полнофункционально использовать админку. В качестве СУБД будем использовать Mysql(MariaDB). Также настроим webproxy используя Nginx 

Содержание

Введение

Один из наиболее популярных бесплатных веб шлюзов, для организации удаленных подключений - это несомненно Apache Guacamole. С его помощью можно, относительно просто организовать различные виды удаленных подключений, таких как rdp, vnc, ssh и т.д.

Apache Guacamole можно использовать как кроссплатформенный веб аналог таких популярных утилит как mRemoteNC, mRemoteNC, Remina

Большинстве статей доступных в интернете используется перепечатка старой статьи, которая не обращается к официальной документации Apache Guacamole. Также в этих статьях используют ссылку на неофициальное зеркало проекта. Мы исправим это.

В этой статье мы сразу рассмотрим настройку подключения к СУБД, чтобы можно было пользоваться веб-админкой для управления новыми подключениями. Поднимать Apache Guacamole и создавать подключения через консоль  - глупо. Не будем уподобляться обычном "копипастерам".

Описание тестового стенда

  • ОС Ubuntu Desktop 20.04
  • СУБД MariaDB
  • Веб сервер Nginx
  • Guacamole 1.3
  • openjdk-11-jdk
  • Tomcat 9.0.55
  • mysql-connector-java-8.0.26

План работ. Краткое описание действий

  1. Обновление списка пакетов
  2. Установка основных пакетов необходимых для Apache Guacamole
  3. Установка и настройка TomCat
  4. Установка и настройка Guacamole server
  5. Установка и настройка Guacamole client
  6. Установка и настройка Mysql(MariaDB)
  7. Подключение Guacamole к MariaDB
  8. Установка и настройка веб сервера Nginx как Web-прокис

1. Обновление списка пакетов

Это важный этап при настройке каждого нового сервиса

sudo apt update

2. Установка необходимых библиотек и компонентов для Apache Guacamole

Установка основных пакетов необходимых для Apache Guacamole. Установим основные пакеты, полный список пакетов можно найти на сайте Apache Guacamole и установить.  

sudo apt install make gcc g++ libcairo2-dev libjpeg-turbo8-dev libpng-dev libtool-bin libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libtelnet-dev libssl-dev libvorbis-dev libwebp-dev

Отдельно обратите внимание на установку Java, в нашем случаи ставим openjdk-11-jdk

sudo apt install openjdk-11-jdk

 После установки проверяем проверяем версию

java -version

3. Установка и настройка Tomcat.

Apache Guacamole для работы использует контейнер сервлетов Tomcat. Важно обратить внимание на его настройку и безопасность. Настройку будем делать с заделом на дальнейшее обновление.

3.1 Для запуска Tomcat  нужно обязательно использовать отдельного пользователя. НЕЛЬЗЯ запускать Tomcat от пользователя root. Поэтому первым делом мы создадим отдельного пользователя (от которого будет запускаться Tomcat) и группу. Обратите внимание, что этот пользователь не сможет логиниться

sudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat

 По рекомендации разработчиков Tomcat, домашним каталогом указываем  /opt/tomcat и установку будем производить в этот каталог.

3.2 Теперь можно перейти в скачивание и установке Tomcat.

Проверяем актуальную версию на сайте https://tomcat.apache.org в нашем случаи она 9.0.55
Сразу добавим её как переменную VERSION и дальше будем использовать ее  в командах.

Скачиваем и распаковываем в каталог /tmp и распаковываем в, созданный ранее, /opt/tomcat
Для удобства обновления, в будущем, создадим символические ссылки /opt/tomcat/latest и будем работать с ними. 

VERSION=9.0.55
wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz -P /tmp
sudo tar -xf /tmp/apache-tomcat-${VERSION}.tar.gz -C /opt/tomcat/
sudo ln -s /opt/tomcat/apache-tomcat-${VERSION} /opt/tomcat/latest

3.3 Для, созданного нами, пользователя tomcat добавим права на каталог /opt/tomcat и на  /opt/tomcat/latest/bin/*.sh (сценарии должны быть исполняемыми)

sudo chown -R tomcat: /opt/tomcat
sudo sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh'

3.4 Настраиваем запуск tomcat как службу

Для этого создадим файл /etc/systemd/system/tomcat.service и внесем в него следующие данные.

[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Обратите внимание на переменную JAVA_HOME если вы используете другую версию, нужно изменить название на актуальную.
В Environment мы используем созданную нами символическую ссылку /opt/tomcat/latest это позволит не менять файл при обновлении версий tomcat

 Перезапускаем демон и включаем автозапуск для службы tomcat 

sudo systemctl daemon-reload
sudo systemctl enable --now tomcat

 По хорошей привычки проверяем работу службы

sudo systemctl status tomcat

4. Установка и настройка Guacamole server

Для установки Guacamole server нужно скачать исходники и собрать из них пакет.

4.1 Скачиваем архив с исходниками Guacamole server c официального сайта и распаковываем его

wget https://downloads.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz -P /tmp
cd /tmp
tar -xzf guacamole-server-1.3.0.tar.gz
cd guacamole-server-1.3.0/

 4.2 Собираем пакет из исходников

./configure --with-init-dir=/etc/init.d
sudo make 
sudo make install
sudo ldconfig

4.3 Настраиваем guacamole server на запуск при загрузке системы и запускаем его.

sudo systemctl enable guacd
sudo systemctl start guacd

4.4 Проверяем статус службы Guacamole-server (guacd)

Всегда проверяйте работу службы перед дальнейшими действиями

systemctl status guacd

5. Создание системных каталогов guacamole

Для продолжения настройки guacamole создадим три важных каталога, а именно:

  • /etc/guacamole - домашний каталог, в нём будем хранить файлы настроек, разные версии клиента и т.д.
  • /etc/guacamole/extensions - каталог с расширениями
  • /etc/guacamole/lib - каталог с библиотеками
sudo mkdir /etc/guacamole
sudo mkdir /etc/guacamole/{extensions,lib}

6. Установка и настройка guacamole client

Клиент представляет собой Java-приложение. именно для него мы и настраивали Tomcat.
Его также можно собрать из исходников, но зачем? Готовый guacamole-1.3.0.war можно скачать сразу с официального сайта.
Для его установки достаточно скачать его в папку /opt/tomcat/latest/webapps

Так как версии клиента могут меняться рекомендуем использовать символические ссылки

wget https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war -P /etc/guacamole
ln -s /etc/guacamole/guacamole-1.3.0.war /opt/tomcat/latest/webapps/guacamole.war

Командами выше мы скачали готовый файл war и сделали символическую ссылку /opt/tomcat/latest/webapps/guacamole.war теперь для обновления нужно будет просто скачать новую версию war файла и создать новую символическую ссылку. 

7. Настройка Guacamole на подключение к MariaDB (Mysql)

На данном этапе мы установим СУБД (MariaDB) и настроим guacamole на подключение к ней. Для этого нужно:

  • Внести изменения в конфигурационном файле /etc/guacamole/guacamole.properties
  • Скачать и скопировать в папку /etc/guacamole/lib/ коннектор для СУБД (в нашем случае, MariaDB) mysql-connector-java
  • Скачать и скопировать в папку /etc/guacamole/extensions/ расширение для подключения guacamole-auth-jdbc
  • Создать БД из шаблона 

Каталог для этого файла мы как раз создали на шаге "5. Создание системных каталогов guacamole"

7.1 Установка и настройка MariaDB

Устанавливаем MariaDB и запускаем стандартный скрипт для настройки

sudo apt install mariadb-server
sudo mysql_secure_installation

7.2 Создаём БД для Guacamole.

В этой БД будут хранится настройки создаваемых подключений и различные данные о правах пользователей. Также важно создать для этой БД отдельного пользователя.

sudo mariadb

CREATE DATABASE guacamole_db CHARACTER SET UTF8;
CREATE USER guacamole_user@localhost IDENTIFIED BY 'some_password';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
FLUSH PRIVILEGES;
exit

Мы создали базу данных guacamole_db,  пользователя guacamole_user с паролем some_password и длие ему права SELECT, INSERT, UPDATE, DELETE

7.3 Подключаем Guacamole к MariaDB

Настраиваем подключение к БД MariaDB. Для этого вносим изменения в файл /etc/guacamole/guacamole.properties

sudo nano /etc/guacamole/guacamole.properties
# MySQL properties
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: some_password

7.4 Подключаем библиотеку mysql-connector-java-8.0.26.jar

Для подключения к БД нужно скачать и поместить Java-коннектор в папку /etc/guacamole/lib/  

wget https://dev.mysql.com/get/Downloads/Connector/mysql-connector-java-8.0.26.tar.gz -P /tmp
cd /tmp
tar -xzf mysql-connector-java-8.0.26.tar.gz
sudo cp /tmp/mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar /etc/guacamole/lib/

7.5 Подключаем расширение guacamole-auth-jdbc-mysql-1.3.0.jar

Для настройки аутентификации нужно скачать и поместить расширение в папку /etc/guacamole/extensions/

wget https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-auth-jdbc-1.3.0.tar.gz -P /tmp
cd /tmp
tar -xzf guacamole-auth-jdbc-1.3.0.tar.gz
sudo cp /tmp/guacamole-auth-jdbc-1.3.0/mysql/guacamole-auth-jdbc-mysql-1.3.0.jar /etc/guacamole/extensions/

7.6 Настройка БД

Заключительный этап настройки подключения guacamole к MariaDB это подготовка созданной ранее БД guacamole_db
Для этого это воспользуемся созданным шаблоном который находится в папке schema

cd /tmp/guacamole-auth-jdbc-1.3.0/mysql/
cat schema/*.sql | mysql -u root -p guacamole_db

Процесс настройки БД может занять несколько минут.

8. Проверка работы Guacamole

На этом основная настройка Guacamole завершена. Давайте проверим что все работает. Для этого нужно перейти в браузере по адресу: http://Ваш-ip:8080/guacamole. Если все работает вы попадёте на страницу входа в Guacamole. Для первого входа используйте предустановленный логин guacadmin и пароль guacadmin

9. Настройка обратного прокси Nginx для Guacamole

В заключении настроим обратный прокси на Nginx. Это нужно для того чтобы заходить на веб сервис Guacamole по ip адресу без указания порта 8080 или по доменному имени. Для этого установим веб-сервер Nginx и настроим его.

apt-get install nginx -y

Создаем файл конфигурации нашего хоста guacamole.conf

nano /etc/nginx/sites-available/guacamole.conf

Вносим в него следующие настройки

server {
        listen 80;
        server_name your-server-ip;
        access_log  /var/log/nginx/guac_access.log;
        error_log  /var/log/nginx/guac_error.log;

        location / {
                    proxy_pass http://your-server-ip: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/ /;
        }

}

Подключаем виртуальный хост

ln -s /etc/nginx/sites-available/guacamole.conf /etc/nginx/sites-enabled/

Перезапускаем Nginx

systemctl restart nginx

Теперь веб сервис Guacamole доступен по ip без указания портов.