Guía de Instalación de Apache Guacamole en Debian 12 con MySQL

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

1. Actualizar el sistema

Antes de comenzar, es importante asegurarse de que el sistema esté actualizado:

sudo apt update && sudo apt upgrade -y

2. Instalar dependencias necesarias

Guacamole requiere varias dependencias para su compilación y ejecución. Instálalas con:

sudo apt install -y build-essential 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 libtelnet-dev libvncserver-dev \
libpulse-dev libssl-dev libvorbis-dev libwebp-dev tomcat9 tomcat9-admin tomcat9-common \
tomcat9-user mysql-server mysql-client libmysql-java

3. Descargar Apache Guacamole

Descarga la última versión de Guacamole Server y Guacamole Client:

wget https://apache.org/dyn/closer.lua/guacamole/1.5.0/source/guacamole-server-1.5.0.tar.gz
wget https://apache.org/dyn/closer.lua/guacamole/1.5.0/binary/guacamole-1.5.0.war -O guacamole.war

4. Compilar e instalar Guacamole Server

Extrae el código fuente y compílalo:

tar -xzf guacamole-server-1.5.0.tar.gz
cd guacamole-server-1.5.0
./configure --with-systemd-dir=/etc/systemd/system --enable-mysql
make -j$(nproc)
sudo make install
sudo ldconfig

Habilita y arranca el servicio:

sudo systemctl daemon-reload
sudo systemctl enable guacd
sudo systemctl start guacd

5. Configurar Guacamole Client

Copia el archivo .war en la ruta de Tomcat:

sudo mv guacamole.war /var/lib/tomcat9/webapps/
sudo systemctl restart tomcat9

6. Configurar la autenticación con MySQL

6.1 Crear la base de datos y usuario en MySQL

Abre MySQL con:

sudo mysql -u root -p

Ejecuta los siguientes comandos:

CREATE DATABASE guacamole_db;
CREATE USER 'guacamole_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON guacamole_db.* TO 'guacamole_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

6.2 Importar el esquema de Guacamole en MySQL

Descarga el esquema de base de datos y aplícalo:

wget https://apache.org/dyn/closer.lua/guacamole/1.5.0/source/guacamole-auth-jdbc-1.5.0.tar.gz
tar -xzf guacamole-auth-jdbc-1.5.0.tar.gz
cd guacamole-auth-jdbc-1.5.0/mysql/schema
cat ./*.sql | sudo mysql -u root -p guacamole_db

6.3 Configurar Guacamole para usar MySQL

Crea el directorio de configuración:

sudo mkdir -p /etc/guacamole
sudo nano /etc/guacamole/guacamole.properties

Agrega lo siguiente:

guacd-hostname: localhost
guacd-port: 4822
auth-provider: net.sourceforge.guacamole.net.auth.mysql.MySQLAuthenticationProvider
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: StrongPassword123!

Guarda el archivo (Ctrl + X, Y, Enter).

6.4 Copiar el conector MySQL a Tomcat

sudo ln -s /usr/share/java/mysql-connector-java.jar /var/lib/tomcat9/lib/

7. Crear un enlace simbólico

sudo ln -s /etc/guacamole /var/lib/tomcat9/.guacamole

8. Asignar permisos adecuados

sudo chown -R tomcat:tomcat /etc/guacamole
sudo chmod -R 600 /etc/guacamole/guacamole.properties

9. Reiniciar los servicios

sudo systemctl restart guacd tomcat9 mysql

10. Acceder a Apache Guacamole

Abre un navegador y accede a:

http://<TU_SERVIDOR>:8080/guacamole

Inicia sesión con las credenciales almacenadas en MySQL.

Extras para Producción

  1. Configurar HTTPS en Tomcat: Usa un proxy inverso como Nginx o configura un certificado SSL en Tomcat.
  2. Implementar autenticación MFA: Usa plugins de autenticación como Duo Security.
  3. Restringir acceso a MySQL: Usa ufw o iptables para bloquear accesos externos.
  4. Crear copias de seguridad: Configura mariadb-backup o mysqldump para hacer copias periódicas.