Cómo instalar Apache Guacamole en Debian 11

Habilitar el servicio Apache Tomcat9

Apache Guacamole es una puerta de enlace de escritorio remoto gratuita y de código abierto que le permite conectarse a su computadora/servidor de forma remota utilizando diferentes protocolos como SSH, RDP y VNC. Apache Guacamole es mantenido por Apache Software Foundation y tiene la licencia Apache License 2.0.

Apache Guacamole es una puerta de enlace de escritorio remoto sin cliente. Puede acceder a Apache Guacamole usando solo un navegador web desde cualquier lugar y en cualquier momento. Se recomienda usar Apache Guacamole si tiene varios sistemas operativos remotos con diferentes protocolos, como Windows con RDP, sistema Linux con VNC y SSH.

En este tutorial, instalará y configurará Apache Guacamole en Debian 11 Bullseye. Esto incluye instalar algunas dependencias de paquetes y Apache Tomcat 9, luego construir el servidor Guacamole e instalar la aplicación Java, la aplicación web Guacamole. Al final, configurará Nginx como un proxy inverso para la aplicación web Guacamole que le permite acceder a sus servidores desde cualquier lugar, siempre que tenga un navegador web.

requisitos previos

Para completar este tutorial, necesitar√° los siguientes requisitos:

  • Un servidor con al menos 2 GB de RAM que ejecute Debian 11 Bullseye.
  • Un usuario usuario o no root con privilegios de root.
  • Conocimientos b√°sicos con nano editor. O puede usar su editor preferido, como vim.

Instalación de dependencias de compilación

Al principio, instalar√° algunas dependencias de compilaci√≥n para compilar el servidor Apache Guacamole. Esto incluye algunos paquetes b√°sicos como ‘libvncserver-dev‘ que habilita soportes para el protocolo VNC, ‘libssh2-1‘ para el protocolo SSH, ‘freerdp2-dev‘ para el protocolo RDP, y ‘libwebsockets-dev‘ por el soporte de Kubernetes.

A modo de consideraci√≥n, no instalar√° ‘libtelnet-dev’ para los soportes de Telnet. Esto se debe a que telnet se considera un protocolo antiguo y no seguro.

1. Ahora, actualice su lista de paquetes ejecutando el comando apt a continuación.

sudo apt update

2. Después de eso, instale las dependencias para construir el servidor Apache Guacamole ejecutando el siguiente comando.

sudo apt install -y freerdp2-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libcairo2-dev libjpeg62-turbo-dev libjpeg-dev libpng-dev libtool-bin libpango1.0-dev libpango1.0-0 libssh2-1 libwebsockets16 libwebsocketpp-dev libossp-uuid-dev libssl-dev libwebp-dev libvorbis-dev libpulse-dev libwebsockets-dev libvncserver-dev libssh2-1-dev openssl

Este comando puede tardar un poco en finalizar, dependiendo de la conexión a Internet de su servidor.

Instalación de Apache Tomcat 9

Después de instalar las dependencias de compilación, instalará Apache Tomcat 9. Este paquete es necesario para la aplicación web Guacamole, que es una aplicación web escrita en Java.

1. Ejecute el siguiente comando para instalar Apache Tomcat 9 en su sistema.

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

2. Despu√©s de instalar Apache Tomcat 9, inicie y habilite el servicio Apache Tomcat ejecutando el siguiente comando. En los sistemas basados ‚Äč‚Äčen Debian, Apache Tomcat 9 viene con el servicio llamado ‘tomcat9‘.

sudo systemctl enable --now tomcat9

3. Ahora, si todo se ve bien, verifique el estado del ‘tomcat9‘ servicio ejecutando el siguiente comando.

sudo systemctl status tomcat9

Recibir√° el siguiente resultado. Aseg√ļrate que ‘tomcat9‘servicio es’activo (corriendo)‘.

Habilitar el servicio Apache Tomcat9

Compilando Guacamole-servidor

En esta secci√≥n, descargar√° y compilar√° el servidor Guacamole. Este es el componente principal de Apache Guacamole, que contiene bibliotecas para conectarse a servidores y escritorios remotos. El servidor Guacamole contiene la biblioteca C ‘libguacd’ y todas las bibliotecas para los protocolos compatibles, as√≠ como el coraz√≥n de Guacamole, guacd.

El guacd maneja todas las conexiones de clientes que se canalizan desde la aplicaci√≥n web guacamole, luego se conecta a servidores y escritorios remotos en su nombre. Al construir y compilar el servidor Guacamole, tendr√° un nuevo servicio ‘guacd’ en su sistema.

1. Comience navegando por el directorio de trabajo hasta ‘/usr/src’. Todo el c√≥digo fuente para construir y compilar cosas va a este directorio.

cd /usr/src

2. Ahora, descargar√° el c√≥digo fuente del servidor Guacamole ejecutando el comando wget a continuaci√≥n. Aseg√ļrese de consultar la p√°gina de descarga de Guacamole y copiar la √ļltima versi√≥n del servidor de Guacamole. En el momento de escribir este art√≠culo, la √ļltima versi√≥n es 1.3.0.

wget https://dlcdn.apache.org/guacamole/1.3.0/source/guacamole-server-1.3.0.tar.gz

3. Luego, extraiga el c√≥digo fuente y obtendr√° un nuevo directorio ‘guacamole-server-VERSION-NUMBER’. Navegue a ese directorio.

tar -xzvf guacamole-server-1.3.0.tar.gz
cd guacamole-server-*/

4. Ahora, verifique todos los requisitos del sistema para construir el servidor Guacamole y configure su entorno ejecutando el siguiente comando. La opci√≥n ‘–with-systemd-dir=/etc/systemd/system/’ se utiliza para configurar el archivo de servicio systemd, que estar√° disponible en el directorio ‘/etc/systemd/system/’.

./configure --with-systemd-dir=/etc/systemd/system/

Recibir√° un resultado similar a este:

------------------------------------------------
guacamole-server version 1.3.0
------------------------------------------------
Library status:

freerdp2 ............ yes
pango ............... yes
libavcodec .......... yes
libavformat.......... yes
libavutil ........... yes
libssh2 ............. yes
libssl .............. yes
libswscale .......... yes
libtelnet ........... no
libVNCServer ........ yes
libvorbis ........... yes
libpulse ............ yes
libwebsockets ....... yes
libwebp ............. yes
wsock32 ............. no

Protocol support:

Kubernetes .... yes
RDP ........... yes
SSH ........... yes
Telnet ........ no
VNC ........... yes

Services / tools:

guacd ...... yes
guacenc .... yes
guaclog .... yes

FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
Init scripts: no
Systemd units: /etc/systemd/system/

Type "make" to compile guacamole-server.

Eche un vistazo a las secciones ‘Estado de las bibliotecas’ y ‘Soporte de protocolo’. Puede ajustar los soportes de protocolo instalando dependencias y bibliotecas adicionales.

5. A continuación, compile e instale el servidor Guacamole ejecutando el siguiente comando.

make
make install

El proceso de compilaci√≥n e instalaci√≥n puede tardar alg√ļn tiempo en completarse.

6. Ahora, después de que todo esté completo, ejecute el siguiente comando para aplicar todas las nuevas bibliotecas del sistema.

sudo ldconfig

En esta sección, ha instalado el paquete Guacamole-server. A continuación, creará algunas configuraciones necesarias para el servidor Guacamole.

Configuración del servidor de guacamole

Para hacer que el servidor Guacamole funcione, crear√° el directorio de configuraci√≥n ‘/etc/guacamole/’, luego crear√° un nuevo archivo ‘guacamole.properties’ como la configuraci√≥n predeterminada del servidor Guacamole, el archivo ‘logback.xml’ para el sistema de registro de Guacamole y archivo ‘user-mapping.xml’ para definir la autenticaci√≥n de los usuarios de Guacamole y las conexiones a servidores y escritorios remotos.

1. Para comenzar, ejecute el siguiente comando para crear un nuevo directorio ‘/etc/guacamole/’ dentro de los directorios adicionales ‘extensiones’ y ‘lib’ dentro. Luego agregue la variable de entorno ‘GUACAMOLE_HOME=/etc/guacamole’ al archivo ‘/etc/default/tomcat9’. Esto le indicar√° al contenedor de servlets de Tomcat 9 que busque el directorio ‘GUACAMOLE_HOME’ en ‘/etc/guacamole/’.

mkdir -p /etc/guacamole/{extensions,lib}
echo 'GUACAMOLE_HOME=/etc/guacamole' >> /etc/default/tomcat9

2. Ahora, cree la configuraci√≥n principal ‘guacamole.properties’ usando nano o su editor preferido.

sudo nano /etc/guacamole/guacamole.properties
Introduzca la siguiente configuración:
# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:     4822

# user mapping and user connections
user-mapping:    /etc/guacamole/user-mapping.xml

  • La opci√≥n ‘guacd-hostname’ define el nombre de host o la direcci√≥n IP en la que se ejecutar√° el servicio guacd. Este tutorial usa localhost para ejecutar el servicio guacd.
  • La opci√≥n ‘guacd-port’ define el puerto predeterminado para el servicio guacd. Este tutorial utiliza el puerto ‘4822’ para el servicio guacd.
  • La opci√≥n ‘mapeo de usuarios’ define la configuraci√≥n del archivo para la autenticaci√≥n de los usuarios y una lista de conexiones disponibles. Este tutorial usa el archivo ‘/etc/guacamole/user-mapping.xml’ para definir usuarios y conexiones para el servidor Guacamole. Es posible que le interese utilizar otro m√©todo de autenticaci√≥n, consulte la Documentaci√≥n de Guacamole.

Guarde y cierre el archivo.

3. A continuaci√≥n, cree una nueva configuraci√≥n ‘loogback.xml’ para iniciar sesi√≥n y depurar. De forma predeterminada, el Guacamole se registrar√° solo en la consola. El uso de esta configuraci√≥n le permite a Guacamole iniciar sesi√≥n a trav√©s del marco de registro Logback.

sudo nano /etc/guacamole/logback.xml

Agregue las siguientes líneas de configuración.

<configuration>
<!-- Appender for debugging -->
<appender name="GUAC-DEBUG" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

<!-- Log at DEBUG level -->
<root level="debug">
<appender-ref ref="GUAC-DEBUG"/>
</root>

</configuration>

Guarde y cierre el archivo de configuración.

4. Ahora, generar√° un nuevo hash de contrase√Īa md5 y crear√° un nuevo archivo para la autenticaci√≥n y las conexiones del usuario de Guacamole.

Ejecute el siguiente comando para generar el hash de contrase√Īa md5. Y aseg√ļrese de cambiar la contrase√Īa con su contrase√Īa segura.

echo -n StrongPasswordUserJohnDoe | openssl md5

Recibir√° una salida de la contrase√Īa hash mod5. C√≥pialo en tu nota.

(stdin)= aca22211ffcfb8aa8ad7627195ad4fce

5. Despu√©s de eso, crea un nuevo archivo ‘asignaci√≥n de usuario.xml‘ usando el editor nano.

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

Introduzca las siguientes configuraciones. Y aseg√ļrese de cambiar el ‘nombre de usuario’ y la ‘contrase√Īa’. Adem√°s, eche un vistazo a la secci√≥n ‘<conexi√≥n>…</conexi√≥n>’ y agregue los detalles de su conexi√≥n a servidores o escritorios.

<user-mapping>
<!-- Another user, but using md5 to hash the password
(example below uses the md5 hash of "PASSWORD") -->
<authorize
username="johndoe"
password="aca22211ffcfb8aa8ad7627195ad4fce"
encoding="md5">

<!-- First authorized connection -->
<connection name="SSH localhost">
<protocol>ssh</protocol>
<param name="hostname">localhost</param>
<param name="port">22</param>
<param name="username">johndoe</param>
<param name="password">SSHPASSWORD</param>
</connection>

<!-- Second authorized connection -->
<connection name="localhost">
<protocol>vnc</protocol>
<param name="hostname">localhost</param>
<param name="port">5901</param>
<param name="password">VNCPASS</param>
</connection>

<!-- Third authorized connection -->
<connection name="otherhost">
<protocol>vnc</protocol>
<param name="hostname">otherhost</param>
<param name="port">5900</param>
<param name="password">VNCPASS</param>
</connection>

</authorize>

</user-mapping>

Guarde y cierre el archivo.

Ahora ha completado la configuración del servidor Guacamole. A continuación, instalará y configurará la aplicación web Guacamole, que es la aplicación web que verá en su navegador.

Instalación de la aplicación web del cliente Guacamole

En esta secci√≥n, instalar√° la aplicaci√≥n web Guacamole en su sistema. Esto se puede hacer descargando el archivo binario compilado de la aplicaci√≥n web Guacamole e implement√°ndolo en el directorio ‘webaps’ de Tomcat.

1. Navegue por su directorio de trabajo a ‘/usr/src’ y descargue la aplicaci√≥n web compilada Guacamole ‘.war’ usando el comando wget. Aseg√ļrese de visitar la p√°gina de descarga de Guacamole y copie el enlace de la √ļltima versi√≥n de la aplicaci√≥n web de Guacamole.

cd /usr/src
wget https://dlcdn.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war

2. Ahora, implemente la aplicaci√≥n binaria de Java ‘guacamole-VERSION.war’ en el directorio de Tomcat ‘/var/lib/tomcat9/webapps/’ ejecutando el siguiente comando. Esto hace que la aplicaci√≥n web Guacamole sea accesible a trav√©s del contenedor de servlet Apache Tomcat.

sudo cp guacamole-1.3.0.war /var/lib/tomcat9/webapps/guacamole.war

3. Después de eso, reinicie el servicio Tomcat 9 para aplicar una nueva aplicación web.

sudo systemctl restart tomcat9

4. A continuaci√≥n, inicie y habilite el servicio ‘guacd’ ejecutando el siguiente comando.

sudo systemctl enable --now guacd

Luego verifíquelo usando el siguiente comando.

sudo systemctl status guacd

Recibirá el resultado como la captura de pantalla a continuación.

Habilitar servicio guacd Apache Guacamole

En este punto, ha completado la instalación de la aplicación del servidor Guacamole (backend) y la aplicación web Guacamole (front-end). A continuación, configurará Nginx como proxy inverso para la aplicación web Guacamole.

Configurar el proxy inverso de Nginx para Guacamole

En esta sección, instalará el servidor web Nginx y lo configurará como proxy inverso para la aplicación web Guacamole. Esto le permite configurar el nombre de dominio para su aplicación web Guacamole y asegurarlo con certificados SSL.

1. Para comenzar, ejecute el siguiente comando ‘apt’ para instalar los paquetes de Nginx.

sudo apt install nginx -y

2. Despu√©s de instalar todos los paquetes de Nginx, cree un nuevo archivo de host virtual ‘guacamole’ en el directorio ‘/etc/nginx/sites-disponible’. Todas las configuraciones relacionadas con el proxy inverso de Guacamole se almacenar√°n en este archivo.

sudo nano /etc/nginx/sites-available/guacamole

Ingrese esta siguiente configuraci√≥n. Y aseg√ļrese de cambiar el nombre de dominio y la ruta de los certificados SSL. Este ejemplo usa el dominio ‘example.io’ con la clave privada SSL ‘privkey.pem’ y la clave p√ļblica ‘fullchain.pem’, y certificados de bot disponibles en el directorio ‘/etc/letsencrypt/live/exmaple.io/’ .

server {
    listen      80;
    server_name example.io;
    rewrite     ^   https://$server_name$request_uri? permanent;
}
server {
listen      443 ssl http2;
server_name example.io;

root /var/www/html;
index index.html;

location / {
try_files $uri $uri/ =404;
}

ssl_certificate /etc/letsencrypt/live/example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.io/privkey.pem;

access_log /var/log/nginx/guacamole-access.log;
error_log /var/log/nginx/guacamole-error.log;

location /guacamole/ {
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;
access_log off;
}
}

Guarde y cierre el archivo.

3. Ahora, active el archivo de host virtual ‘guacamole’ creando un nuevo enlace simb√≥lico al directorio ‘/etc/nginx/sites-enabled/’. Luego verifique todas las configuraciones de Nginx para verificar si hay alg√ļn error de sintaxis.

sudo ln -s /etc/nginx/sites-available/guacamole /etc/nginx/sites-enabled/
sudo nginx -t

Recibir√°s una salida ‘Sintaxis Aceptar‘, lo que significa que la configuraci√≥n no tiene ning√ļn error.

Configurar Nginx como un proxy inverso Apache Guacamole

4. Luego, reinicie el servicio Nginx para aplicar una nueva configuración, luego verifique su estado ejecutando el siguiente comando.

sudo systemctl restart nginx
sudo systemtl status nginx

Recibir√° un resultado similar a la captura de pantalla a continuaci√≥n. El servicio Nginx es ‘activo (corriendo)‘.

Verificar el estado del servicio Nginx

5. Adem√°s, si desea implementar la aplicaci√≥n web Guacamole en una sub-URL diferente, cambie la opci√≥n ‘ubicaci√≥n /guacamole/ { … }’ a la nueva ruta ‘ubicaci√≥n /nueva-ruta/ { … }’ y agregue la opci√≥n ‘proxy_cookie_path’ a su nueva ruta como se muestra a continuaci√≥n.

location /new-path/ {
    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/ /new-path/;
    access_log off;
}

En esta sección, completó la instalación y configuración de Nginx como proxy inverso para la aplicación web Guacamole. En este punto, su instalación de Apache Guacamole está completa y es accesible desde su nombre de dominio.

Verifique la instalación de Apache Guacamole

En esta sección, verificará la instalación de Apache Guacamole.

En primer lugar, abra su navegador web y escriba el nombre de dominio para su instalaci√≥n de Guacamole con la ruta predeterminada ‘/guacamole’.

https://example.io/guacamole/

Ahora, ver√° la p√°gina de inicio de sesi√≥n de Guacamole a continuaci√≥n. Ingrese su nombre de usuario y contrase√Īa que configur√≥ en el archivo ‘user-mapping.xml’, luego haga clic en el bot√≥n Iniciar sesi√≥n.

Página de inicio de sesión de Apache Guacamole

Después de iniciar sesión, verá una lista de conexiones definidas para sus usuarios.

Conexiones de la lista Apache Guacamole

Haga clic en el nombre de la conexión para conectarse al servidor de destino. Este ejemplo se conectará al servidor local con el protocolo SSH.

Ahora, verá una nueva sesión de terminal ssh en su servidor.

Guacamole SSH al servidor local

Conclusión

¬°Felicidades! En este tutorial, ha aprendido a instalar Apache Guacamole en Debian 11 Bullseye. Adem√°s, aprendi√≥ c√≥mo configurar la autenticaci√≥n de usuario y las conexiones usando el archivo de configuraci√≥n ‘user-mapping.xml’ y configurar Nginx como un proxy inverso para la aplicaci√≥n web Guacamole, que le permite ejecutar Guacamaloe usando el nombre de dominio y aseg√ļrelo usando certificados SSL.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *