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:
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:
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.