====== Настройка веб-шлюза Apache Guacamole ======
===== Подготовка =====
Обновляем пакеты
sudo apt update
Ставим необходимые зависимости
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
sudo apt install openjdk-11-jdk
===== Установка и настройка Tomcat =====
Создаем отдельного пользователя для работы с Tomcat
sudo useradd -m -U -d /etc/tomcat -s /bin/false tomcat
Скачиваем и распаковываем Tomcat
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.82/bin/apache-tomcat-9.0.82.tar.gz -P /tmp
sudo tar -xf /tmp/apache-tomcat-9.0.82.tar.gz -C /etc/tomcat/
Делаем символьную ссылку для удобства
sudo ln -s /etc/tomcat/apache-tomcat-9.0.82 /etc/tomcat/lastv
Даем права пользователю tomcat
sudo chown -R tomcat: /etc/tomcat
sudo sh -c 'chmod +x /etc/tomcat/lastv/bin/*.sh'
Создаем службу Tomcat
Заносим в файл
nano /etc/systemd/system/tomcat.service
следующую информацию
[Unit]
Description=Tomcat 9
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=/etc/tomcat/lastv"
Environment="CATALINA_HOME=/etc/tomcat/lastv"
Environment="CATALINA_PID=/etc/tomcat/lastv/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"
ExecStart=/etc/tomcat/lastv/bin/startup.sh
ExecStop=/etc/tomcat/lastv/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
Перезапускаем службу и делаем ее автозапуск при включении системы
systemctl restart tomcat
systemctl enable tomcat
Проверяем что все работает успешно
systemctl status tomcat
{{:pasted:20231101-164450.png?nolink}}
===== Установка и настройка Guacamole server и client =====
Скачиваем и распаковываем guacamole server
wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-server-1.5.3.tar.gz -P /tmp
cd /tmp
tar -xzf guacamole-server-1.5.3.tar.gz
cd guacamole-server-1.5.3/
Собираем guacamole server
./configure --with-init-dir=/etc/init.d
sudo make
sudo make install
sudo ldconfig
Включаем автозапуск и проверяем службу
sudo systemctl enable guacd
sudo systemctl start guacd
systemctl status guacd
Если видим подобное, то все супер
{{:pasted:20231101-170907.png?nolink}}
Создаем важные каталоги
sudo mkdir /etc/guacamole
sudo mkdir /etc/guacamole/extensions
sudo mkdir /etc/guacamole/lib
Скачиваем клиент и делаем символьную ссылку
wget https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-1.5.3.war -P /etc/guacamole
ln -s /etc/guacamole/guacamole-1.5.3.war /etc/tomcat/lastv/webapps/guacamole.war
===== Установка и настройка MariaDB =====
Установка и назначение пароля
sudo apt install mariadb-server
sudo mysql_secure_installation
Вход в mysql и добавление базы данных
mysql -u root -p
CREATE DATABASE guacamole_test CHARACTER SET UTF8;
CREATE USER guacamole_test@localhost IDENTIFIED BY 'password123456';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_test.* TO 'guacamole_test'@'localhost';
FLUSH PRIVILEGES;
exit
Где:
* guacamole_test - имя базы данных и имя пользователя (измените данные под свои требования)
* password123456 - пароль по умолчанию (измените данные под свои требования)
Соединяем базу данных и guacamole
sudo nano /etc/guacamole/guacamole.properties
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_test
mysql-username: guacamole_test
mysql-password: password123456
guacd-port: 4822
user-mapping: /etc/guacamole/user-mapping.xml
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
Скачиваем и подключаем дополнения
wget https://dev.mysql.com/get/Downloads/Connector/mysql-connector-java-8.0.30.tar.gz -P /tmp
wget https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-auth-jdbc-1.5.3.tar.gz -P /tmp
cd /tmp
tar -xzf mysql-connector-java-8.0.30.tar.gz
tar -xzf guacamole-auth-jdbc-1.5.3.tar.gz
sudo cp /tmp/mysql-connector-java-8.0.30/mysql-connector-java-8.0.30.jar /etc/guacamole/lib/
sudo cp /tmp/guacamole-auth-jdbc-1.5.3/mysql/guacamole-auth-jdbc-mysql-1.5.3.jar /etc/guacamole/extensions/
Настройка базы данных
cd /tmp/guacamole-auth-jdbc-1.5.3/mysql/
cat schema/*.sql | mysql -u root -p guacamole_test
===== Настройка файла подключений =====
Открываем файл
nano /etc/guacamole/user-mapping.xml
ssh
ваш_ip
22
rdp
ваш_ip
3389
Имя пользователя
true
Для более детальной настройки, смотрите [[https://guacamole.apache.org/doc/gug/configuring-guacamole.html | официальную документацию]]
После каждого редактирования файла **/etc/guacamole/user-mapping.xml**
нужно выполнять перезапуск служб
systemctl restart tomcat guacd
===== Обратный прокси =====
Установка nginx
apt install nginx
Создаем конфиг
nano /etc/nginx/sites-available/guacamole.conf
server {
listen 80;
server_name ваш_ip;
access_log /var/log/nginx/guac_access.log;
error_log /var/log/nginx/guac_error.log;
location / {
proxy_pass http://ваш_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
===== Проверка работоспособности =====
Нужно зайти
http://Ваш_ip
Для первого входа используйте:
* Логин - guacadmin
* пароль - guacadmin
{{:pasted:20231102-105452.png?nolink}}