Configuración de la herramienta Guacamole basada en web para acceder a máquinas remotas con Linux/Windows


Como administrador del sistema, puede encontrarse (hoy o en el futuro) trabajando en un entorno donde coexisten Windows y Linux. No es ningún secreto que algunas grandes empresas prefieren (o tienen que) ejecutar algunos de sus servicios de producción en Windows y otros en servidores Linux. Si ese es tu caso, recibirás esta guía con los brazos abiertos (de lo contrario, sigue adelante y al menos asegúrate de agregarla a tus marcadores).

En este artículo, le presentaremos guacamole, una puerta de enlace de escritorio remoto impulsada por Tomcat que solo necesita instalarse en un servidor central.

Guacamole proporcionará un panel de control basado en la web que le permitirá cambiar rápidamente de una máquina a otra, todo dentro de la misma ventana del navegador web.

En este artículo hemos utilizado las siguientes máquinas. Instalaremos Guacamole en una caja de Ubuntu y lo usaremos para acceder a una caja de Windows 10 a través del Protocolo de escritorio remoto (RDP) y una caja RHEL 7 usando SSH:

Guacamole server: Ubuntu 14.04 - IP 192.168.0.100
SSH box: RHEL 7 – IP 192.168.0.18
Remote desktop box: Windows 10 – IP 192.168.0.19

Dicho esto, comencemos.

Instalación de Guacamole Server

1. Antes de instalar guacamole, primero deberá ocuparse de sus dependencias.

$ sudo apt-get install libcairo2-dev libjpeg62-dev libpng12-dev libossp-uuid-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libssh-dev tomcat7 tomcat7-admin tomcat7-user 
# yum install cairo-devel libjpeg-devel libpng-devel uuid-devel freerdp-devel pango-devel libssh2-devel libssh-dev tomcat tomcat-admin-webapps tomcat-webapps
# dnf install cairo-devel libjpeg-devel libpng-devel uuid-devel freerdp-devel pango-devel libssh2-devel libssh-devel tomcat tomcat-admin-webapps tomcat-webapps

2. Descargue y extraiga el tarball.
A principios de febrero de 2016, la última versión de Guacamole es 0.9.9. Puede consultar la página de Descargas para conocer la última versión en un momento determinado.

# wget http://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-0.9.9.tar.gz 
# tar zxf guacamole-server-0.9.9.tar.gz 

3. Compile el software.

# cd guacamole-server-0.9.9 
# ./configure 

Como era de esperar, configure verificará su sistema para detectar la presencia de las dependencias requeridas y los protocolos de comunicación compatibles (como se puede ver en el cuadro resaltado, el Protocolo de escritorio remoto (RDP) y SSH son compatibles con las dependencias instaladas anteriormente) .

Si todo sale como se esperaba, debería ver esto cuando se complete (de lo contrario, asegúrese de haber instalado todas las dependencias necesarias):

Como sugiere la última línea de la imagen anterior, ejecute make y make install para compilar el programa:

# make 
# make install

4. Actualice la caché de las bibliotecas instaladas.

# ldconfig 

y presione Enter.

Instalación de Guacamole Client

Después de completar los pasos anteriores, se habrá instalado el servidor guacamole. Las siguientes instrucciones ahora te ayudarán a configurar guacd (el demonio proxy que integra Javascript con protocolos de comunicación como RDP o SSH) y guacamole.war (el cliente), el componente que conforma la aplicación HTML5 final que se presentará a usted.

Tenga en cuenta que ambos componentes (servidor y cliente guacamole) deben instalarse en la misma máquina; no es necesario instalar un llamado cliente en las máquinas a las que desea conectarse).

Para descargar el cliente, siga estos pasos:

5. Descargue el archivo de la aplicación web y cambie su nombre a guacamole.war.

Nota: Dependiendo de su distribución, el directorio de bibliotecas de Tomcat puede estar ubicado en/var/lib/tomcat.

# cd /var/lib/tomcat7
# wget http://sourceforge.net/projects/guacamole/files/current/binary/guacamole-0.9.9.war
# mv guacamole-0.9.9.war guacamole.war

6. Cree el archivo de configuración (/etc/guacamole/guacamole.properties). Este archivo contiene las instrucciones para que Guacamole se conecte a guacd:

# mkdir /etc/guacamole
# mkdir /usr/share/tomcat7/.guacamole

Inserte el siguiente contenido en /etc/guacamole/guacamole.properties. Tenga en cuenta que estamos haciendo referencia a un archivo que crearemos en el siguiente paso (/etc/guacamole/user-mapping.xml):

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

Y cree un enlace simbólico para que Tomcat pueda leer el archivo:

# ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat7/.guacamole/

7. Guacamole usa user-mapping.xml, cree este archivo para definir qué usuarios pueden autenticarse en la interfaz web de Guacamole (entre etiquetas ) y qué conexiones pueden usar (entre < código> etiquetas):

El siguiente mapeo de usuarios otorga acceso a la interfaz web de Guacamole al usuario tecmint con contraseña tecmint01. Luego, dentro de la conexión SSH, debemos colocar un nombre de usuario válido para iniciar sesión en el cuadro RHEL (se le pedirá que ingrese la contraseña correspondiente cuando Guacamole inicie la conexión).

En el caso de la caja de Windows 10, no es necesario hacerlo, ya que se nos presentará la pantalla de inicio de sesión a través de RDP.

Para obtener el hash md5 de la contraseña tecmint01, escriba el siguiente comando:

# printf '%s' "tecmint01" | md5sum

Luego inserte la salida del comando en el campo de contraseña dentro de las etiquetas :

<user-mapping>
        <authorize 
                username="tecmint" 
                password="8383339b9c90775ac14693d8e620981f" 
                encoding="md5">
                <connection name="RHEL 7">
                        <protocol>ssh</protocol>
                        <param name="hostname">192.168.0.18</param>
                        <param name="port">22</param>
                        <param name="username">gacanepa</param>
                </connection>
                <connection name="Windows 10">
                        <protocol>rdp</protocol>
                        <param name="hostname">192.168.0.19</param>
                        <param name="port">3389</param>
                </connection>
        </authorize>
</user-mapping>

Como ocurre con todos los archivos que contienen información confidencial, es importante restringir los permisos y cambiar la propiedad del archivo user-mapping.xml :

# chmod 600 /etc/guacamole/user-mapping.xml
# chown tomcat7:tomcat7 /etc/guacamole/user-mapping.xml

Inicie Tomcat y guacd.

# service tomcat7 start
# /usr/local/sbin/guacd &

Inicio de la interfaz web de Guacamole

8. Para acceder a la interfaz web de Guacamole, inicie un navegador y apúntelo a http:// servidor: 8080/guacamole donde servidor es el nombre de host o la dirección IP de su servidor (en nuestro caso es http://192.168.0.100:8080/guacamole ) e inicie sesión con las credenciales proporcionadas anteriormente (nombre de usuario: tecmint, contraseña: tecmint01):

9. Después de hacer clic en Iniciar sesión, será llevado a la interfaz administrativa donde verá la lista de conexiones a las que tiene acceso el usuario tecmint, según user-mapping.xml :

10. Continúe y haga clic en el cuadro RHEL 7 para iniciar sesión como gacanepa (el nombre de usuario especificado en la definición de conexión).

Observe cómo la fuente de conexión está configurada en 192.168.0.100 (la IP del servidor Guacamole), independientemente de la dirección IP de la máquina que use para abrir la interfaz web:

11. Si desea cerrar la conexión, escriba exit y presione Enter. Se le pedirá que regrese a la interfaz principal (Inicio), que se vuelva a conectar o que cierre la sesión de Guacamole:

12. Ahora es el momento de probar la conexión de escritorio remoto a Windows 10:

¡Felicidades! Ahora puede acceder a una máquina con Windows 10 y un servidor RHEL 7 desde un navegador web.

Resumen

En este artículo hemos explicado cómo instalar y configurar Guacamole para permitir el acceso a máquinas remotas a través de RDP y SSH. El sitio web oficial proporciona una amplia documentación para ayudarlo a configurar el acceso mediante otros protocolos, como VNC y otros mecanismos de autenticación, como los basados en DB.

Como siempre, no dude en enviarnos una nota si tiene alguna pregunta o sugerencia sobre este artículo. También esperamos escuchar sus historias de éxito.

Enlaces de referencia: http://guac-dev.org/