Una de las características que más me gusta de los
fortigate es el portal que obtienes (de modo opcional) cuando generas una VPN SSL, me parece una herramienta inmensamente útil y aunque está demás aclarar que la calidad de la conexión no se compara con la obtenida cuando se utiliza forticlient (el software cliente), el SSL-VPN Portal es indudablemente útil y cualquier persona sin conocimiento técnico alguno es capaz de utilizarlo.
Por esto llamó mi atención Apache Guacamole un proyecto de software libre que hace una tarea muy parecida y no dudé en probarlo.
Apache Guacamole es una puerta de enlace de escritorio remoto "sincliente", soporta protocolos standard como VNC, RDP y SSH, lo llamamos "sincliente" porque no requiere de ningún software cliente ni de plugins. Gracias a HTML5, una vez Guacamole es instalado en un servidor lo único que necesitaras para acceder a tu escritorio es un navegador web.
En este articulo vamos a instalar Guacamole Apache en Ubuntu Server 18.04 LTS.
Una vez tengas Ubuntu Server instalado, actualizado y con IP fija podemos comenzar con el proceso:
Instalamos dependencias:
sudo apt install -y gcc-6 g++-6 libcairo2-dev libjpeg-turbo8-dev libpng-dev libossp-uuid-dev libavcodec-dev libavutil-dev libswscale-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libvncserver-dev libssl-dev libvorbis-dev libwebp-dev
Instalamos Tomcat:
sudo apt install tomcat8 tomcat8-admin tomcat8-common tomcat8-user -y
Permitimos el paso por el firewall:
sudo ufw allow 8080
sudo ufw reload
Descargamos y descomprimimos Guacamole:
wget https://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-0.9.14.tar.gz
tar xzf guacamole-server-0.9.14.tar.gz
cd guacamole-server-0.9.14
Corremos el script de configuración:
./configure --with-init-dir=/etc/init.d
Compilamos:
make CC=gcc-6
Instalamos los componentes:
sudo make install
Una vez finalizada la instalación creamos los links:
sudo ldconfig
Habilitamos el inicio automático de Guacamole:
sudo systemctl enable guacd
sudo systemctl start guacd
Descargamos el cliente de Guacamole:
wget https://sourceforge.net/projects/guacamole/files/current/binary/guacamole-0.9.14.war
Creamos directorio de configuración de Guacamole:
sudo mkdir /etc/guacamole
Movemos los binarios del cliente al directorio creado anteriormente:
sudo mv guacamole-0.9.14.war /etc/guacamole/guacamole.war
Creamos el enlace simbólico:
sudo ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/
Reiniciamos Tomcat y Guacamole:
sudo systemctl restart tomcat8
sudo systemctl restart guacd
Configuramos Guacamole:
Creamos los directorios de configuración:
sudo mkdir /etc/guacamole/{extensions,lib}
Añadimos el directorio home de Guacamole al archivo de configuración de Tomcat:
sudo su
echo "GUACAMOLE_HOME=/etc/guacamole" >> /etc/default/tomcat8
Creamos el archivo guacamole.properties
vim /etc/guacamole/guacamole.properties
Con el contenido:
guacd-hostname: localhost
guacd-port: 4822
user-mapping: /etc/guacamole/user-mapping.xml
auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
Linkeamos el archivo de configuracion de Guacamole a Tomcat:
ln -s /etc/guacamole /usr/share/tomcat8/.guacamole
Creamos el archivo de autenticación. (Este es el archivo que alojará los datos Usuario y de las conexiones SSH, RDP y/ VNC), pero antes vamos a generar el hash md5 para la contraseña del usuario que tendrá permisos para iniciar sessión en Guacamole:
sudo echo -n CONTRASEÑA | openssl md5
El output será algo como esto:
(stdin)= f1379b1b0123458dd91fa6ebb41ec50c
Copien el hash a un txt de modo temporal y pasamos a crear el archivo de configuracion:
vim /etc/guacamole/user-mapping.xml
Con el siguiente contenido:
NOTA: Editen los datos del .xml anexando su información personal de: Usuario, IP y demás datos necesarios.
Creamos los siguientes link simbolicos para que funcione el RDP:
ln -s /usr/local/lib/freerdp/guacsnd-client.so /usr/lib/x86_64-linux-gnu/freerdp
ln -s /usr/local/lib/freerdp/guacdr-client.so /usr/lib/x86_64-linux-gnu/freerdp/
Reinciamos los servicios:
systemctl restart tomcat8
systemctl restart guacd
Y nos dirigimos a la IP:
http://IPDELSERVIDOR:8080/guacamole
Al ingresar veremos los equipos que agregamos y con un click podremos ingresar:
Y desde cualquier equipo pueden pulsar "Ctrl" + "Alt" + "Shift" para desplegar un panel que nos mostrará algunas opciones como por ejemplo volver al home: