Instalar y utilizar Guacamole Remote Desktop en CentOS 8

Apache Guacamole es una aplicación de escritorio remoto gratuita, de código abierto, basada en la web y sin clientes, que soporta protocolos estándar como VNC, RDP y SSH. Te permite acceder a PCs Linux y Windows desde un navegador web a través de RDP, SSH o VNC. Es sin cliente, por lo que no necesitas instalar ningún plugin o software cliente. Está formado por dos componentes: el Servidor Guacamole y el Cliente Guacamole. El servidor de Guacamole proporciona los componentes nativos y del lado del servidor necesarios para conectarse al PC remoto, mientras que el cliente de Guacamole es una aplicación web HTML 5 utilizada para conectarse al PC remoto.

En este tutorial, te mostraremos cómo instalar el servidor Guacamole en CentOS 8.

Requisitos previos

  • Un servidor que ejecute CentOS 8.
  • Una contraseña de root configurada el servidor.

Cómo empezar

En primer lugar, necesitarás instalar algunos paquetes necesarios en tu servidor. Puedes instalarlos todos con el siguiente comando:

dnf install -y unzip curl make cmake wget gcc zlib-devel compat-openssl10

Después de instalar todos los paquetes necesarios, tendrás que habilitar el repo de EPEL, PowerTools y Devel en tu sistema. Puedes habilitarlos con el siguiente comando:

dnf install epel-release -y
dnf config-manager --set-enabled PowerTools
dnf config-manager --enable Devel

A continuación, instala otras herramientas necesarias con el siguiente comando:

dnf install cairo-devel libuv-devel libjpeg-turbo-devel libjpeg-devel libpng-devel libtool uuid-devel freerdp-devel pango-devel libvncserver-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel libssh2-devel libtheora opus lame-libs

A continuación, desactiva el repo de Devel con el siguiente comando:

dnf config-manager --disable Devel

A continuación, tendrás que compilar la biblioteca telnet en tu sistema.

Primero, descárgala con el siguiente comando:

curl -s https://api.github.com/repos/seanmiddleditch/libtelnet/releases/latest | grep browser_download_url | cut -d '"' -f 4 | wget -qi -

Una vez descargada, extrae el archivo descargado con el siguiente comando:

tar -xf libtelnet-*.tar.gz

A continuación, cambia el directorio al extraído y configúralo con el siguiente comando:

cd libtelnet-*/
./configure

A continuación, instálalo en tu sistema con el siguiente comando

make 
make install

Una vez instalado, puedes pasar al siguiente paso.

Instalar Java

Guacamole es un software basado en Java, por lo que debe estar instalado en tu servidor. Si no está instalado, puedes instalarlo con el siguiente comando:

dnf install java-11-openjdk-devel

Una vez instalado, verifica la versión de Java con el siguiente comando:

java -version

Deberías obtener la siguiente salida:

openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

Instalar Tomcat

Apache Tomcat se utiliza para servir el contenido del cliente de guacamole. Así que tendrás que instalar Tomcat en tu servidor.

En primer lugar, crea un usuario y un grupo separados para Tomcat con el siguiente comando:

groupadd --system tomcat
useradd -d /usr/share/tomcat -r -s /bin/false -g tomcat tomcat

A continuación, descarga la última versión de Tomcat con el siguiente comando:

wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.43/bin/apache-tomcat-9.0.43.tar.gz

Una vez completada la descarga, extrae el archivo descargado con el siguiente comando:

tar -xvf apache-tomcat-9.0.43.tar.gz

A continuación, mueve el Tomcat al directorio /usr/share

mv apache-tomcat-9.0.43 /usr/share/tomcat

A continuación, establece la propiedad adecuada del directorio Tomcat:

chown -R tomcat:tomcat /usr/share/tomcat/

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crear un archivo de servicio Systemd para Tomcat

A continuación, tendrás que crear un archivo de servicio systemd para Tomcat. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/tomcat.service

Añade las siguientes líneas:

[Unit]
Description=Tomcat Server
After=syslog.target network.target

[Service]
Type=forking
User=tomcat
Group=tomcat

Environment=JAVA_HOME=/usr/lib/jvm/jre
Environment='JAVA_OPTS=-Djava.awt.headless=true'
Environment=CATALINA_HOME=/usr/share/tomcat
Environment=CATALINA_BASE=/usr/share/tomcat
Environment=CATALINA_PID=/usr/share/tomcat/temp/tomcat.pid
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M'
ExecStart=/usr/share/tomcat/bin/catalina.sh start
ExecStop=/usr/share/tomcat/bin/catalina.sh stop

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo y luego recarga el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia el servicio Tomcat y habilítalo para que se inicie al reiniciar el sistema:

systemctl start tomcat
systemctl enable tomcat

También puedes comprobar el estado de Tomcat con el siguiente comando:

systemctl status tomcat

Deberías obtener la siguiente salida:

? tomcat.service - Tomcat Server
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-02-16 09:34:45 EST; 6s ago
  Process: 26546 ExecStart=/usr/share/tomcat/bin/catalina.sh start (code=exited, status=0/SUCCESS)
 Main PID: 26551 (java)
    Tasks: 35 (limit: 12523)
   Memory: 89.7M
   CGroup: /system.slice/tomcat.service
           ??26551 /usr/lib/jvm/jre/bin/java -Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties -Djava.util.logging.man>

Feb 16 09:34:45 centos8 systemd[1]: Starting Tomcat Server...
Feb 16 09:34:45 centos8 systemd[1]: Started Tomcat Server.

Instalar Apache Guacamole

Primero, descarga la última versión de Guacamole con el siguiente comando:

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

Una vez completada la descarga, extrae el archivo descargado con el siguiente comando:

tar -xvzf guacamole-server-1.3.0.tar.gz

A continuación, cambia el directorio al extraído y configúralo con el siguiente comando:

cd guacamole-server-1.3.0
./configure --with-init-dir=/etc/init.d

A continuación, instálalo en tu sistema con el siguiente comando:

make
make install
ldconfig

A continuación, recarga el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia el servicio Guacamole y permite que se inicie al reiniciar el sistema:

systemctl start guacd
systemctl enable guacd

Puedes comprobar el estado de Guacamole con el siguiente comando:

systemctl status guacd

Deberías obtener la siguiente salida:

? guacd.service - LSB: Guacamole proxy daemon
   Loaded: loaded (/etc/rc.d/init.d/guacd; generated)
   Active: active (running) since Tue 2021-02-16 09:37:15 EST; 4s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 35723 ExecStart=/etc/rc.d/init.d/guacd start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 12523)
   Memory: 12.1M
   CGroup: /system.slice/guacd.service
           ??35726 /usr/local/sbin/guacd -p /var/run/guacd.pid

Feb 16 09:37:15 centos8 systemd[1]: Starting LSB: Guacamole proxy daemon...
Feb 16 09:37:15 centos8 guacd[35723]: Starting guacd: guacd[35724]: INFO:        Guacamole proxy daemon (guacd) version 1.3.0 started
Feb 16 09:37:15 centos8 guacd[35723]: SUCCESS
Feb 16 09:37:15 centos8 guacd[35726]: Listening on host 127.0.0.1, port 4822
Feb 16 09:37:15 centos8 systemd[1]: Started LSB: Guacamole proxy daemon.

Instalar el cliente Guacamole

A continuación, crea un directorio para Guacamole y descarga el archivo del cliente Guacamole con el siguiente comando:

mkdir /etc/guacamole
wget https://downloads.apache.org/guacamole/1.3.0/binary/guacamole-1.3.0.war

Una vez descargado, mueve el archivo descargado al directorio /etc/guacamole:

mv guacamole-1.3.0.war /etc/guacamole/guacamole.war

A continuación, crea un enlace simbólico del archivo guacamole.war al directorio /usr/share/tomcat:

ln -s /etc/guacamole/guacamole.war /usr/share/tomcat/webapps/

A continuación, establece el directorio principal de Guacamole con el siguiente comando:

echo "GUACAMOLE_HOME=/etc/guacamole" | tee -a /etc/default/tomcat

A continuación, crea un archivo de configuración de Guacamole con el siguiente comando:

nano /etc/guacamole/guacamole.properties

Añade las siguientes líneas:

guacd-hostname: localhost
guacd-port:    4822
user-mapping:    /etc/guacamole/user-mapping.xml
auth-provider:    net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider

Guarda y cierra el archivo y luego crea un enlace simbólico del directorio /etc/guacamole:

ln -s /etc/guacamole /usr/share/tomcat/.guacamole

Configurar Guacamole

A continuación, tendrás que crear un archivo de asignación de usuarios de Guacamole para definir el servidor remoto al que quieres conectarte desde Guacamole.

Primero, genera una contraseña secreta con el siguiente comando:

echo -n your-password | openssl md5

Deberías ver la siguiente salida:

(stdin)= 0f6e4a1df0cf5ee97c2066953bed21b2

A continuación, crea un archivo user-mapping.xml con el siguiente comando:

nano /etc/guacamole/user-mapping.xml

Añade los datos de tus servidores remotos Windows y Linux como se muestra a continuación:

<user-mapping>
<authorize 
            username="admin"
            password="0f6e4a1df0cf5ee97c2066953bed21b2"
            encoding="md5">

        <!-- First authorized Remote connection -->
        <connection name="CentOS 8">
            <protocol>ssh</protocol>
            <param name="hostname">69.87.218.51</param>
            <param name="port">22</param>

        </connection>

        <connection name="Windows Server">
            <protocol>rdp</protocol>
            <param name="hostname">15.185.162.149</param>
            <param name="port">3389</param>
            <param name="username">administrator</param>

        </connection>

    </authorize>

</user-mapping>

Guarda y cierra el archivo y reinicia el servicio de Guacamole y Tomcat para aplicar los cambios:

systemctl restart tomcat guacd

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar el cortafuegos

A continuación, tendrás que permitir el puerto 4822 y 8080 a través de un cortafuegos. Puedes permitirlos con el siguiente comando:

firewall-cmd --permanent --add-port=4822/tcp
firewall-cmd --permanent --add-port=8080/tcp

A continuación, recarga el firewalld para aplicar los cambios:

firewall-cmd --reload

Accede a la interfaz web de Guacamole

Ahora, abre tu navegador web y accede a la interfaz web de Guacamole utilizando la URL http://your-server-ip:8080/guacamole. Deberías ver la siguiente pantalla:

Inicio de sesión de guacamole

Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón de inicio de sesión. Deberías ver el panel de control de Guacamole en la siguiente pantalla:

Guacamole escritorio remoto

En la pantalla anterior, puedes ver los servidores Windows y Linux. Puedes hacer clic en para conectarte y gestionar los servidores remotos.

Conclusión

Enhorabuena! has instalado y configurado con éxito el servidor Guacamole en CentOS 8. Ahora puedes añadir más servidores remotos a tu servidor Guacamole y gestionarlos a través de un navegador web.

También te podría gustar...