Instalando o Apache Guacamole
Neste post vamos ver a instalação do Apache Guacamole, uma ferramenta interessante baseada em software livre que nos permitirá conectar-nos a computadores de forma segura, graças ao HTML5 e HTTPS poderemos aceder a computadores com RDP, VNC, SSH ou TELNET.
O que eu disse, neste post veremos o que é a instalação de Apache Guacamole, que graças a sua interface web permitirá aos utilizadores aceder às suas equipas. a ideia é utilizar Guacamole como gateway, ya que unicamente publicando el servicio HTTPS poderá encapsular los protocolos anteriormente comentados, os utilizadores poderão trabalhar de igual forma mediante HTML5 integrando a sua equipa remota no navegador. Al final del post veremos cómo securizar un poco más el entorno mediante un proxy inverso. Es cierto que com Apache Guacamole a parte de permitir que se conecten a escritórios, podremos publicar aplicaciones, assim como integrar la autenticación de Windows o meter un 2FA (doble factor de autenticación).
En este post estoy a trabalhar con un Ubuntu 20.04, comenzamos pues con la instalación en una máquina actualizada y lista para empezar! Como de costume, empezamos con las dependencias, las instamos lo primero:
sudo apt-get install libcairo2-dev libjpeg-turbo8-dev libjpeg-dev libpng-dev libtool-bin libossp-uuid-dev make maven -y
sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvncserver-dev libwebsockets-dev libpulse-dev -y
Tenemos que instalar Tomcat:
sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user -y
Es hora de descargar Guacamole, empezamos con el componente Servidor, vemos qué versión es la más reciente, Nós o baixamos, compilamos y lo instalamos:
tar -xzf guacamole-server-1.2.0.tar.gz
cd guacamole-server-1.2.0/
./configure --with-init-dir=/etc/init.d
make
sudo make install
Ejecutamos ldconfig para crear vínculos y caché, además de abrir en el firewall el puerto 8080tcp:
sudo ldconfig sudo ufw allow 8080/tcp
a continuación instalaremos el Cliente de Guacamole que descargaremos de la misma web, así como el fichero WAR. Los descomprimimos y procedemos a su instalación:
CD .. tar -xzf guacamole-client-1.2.0.tar.gz cd guacamole-client-1.2.0/ mvn package sudo mkdir /etc/guacamole sudo cp guacamole-1.2.0.war /etc/guacamole sudo ln -s /etc/guacamole/guacamole/guacamole.war /var/lib/tomcat9/webapps/
Comenzamos ahora lo que es la configuración, creamos el directorio para las extensiones y librerías de Guacamole, y añadimos la siguiente variable del entorno:
sudo mkdir /etc/guacamole/{extensions,Lib}
sudo echo "GUACAMOLE_HOME=/etc/guacamole" >> /etc/default/tomcat9
Creamos el fichero de configuración de Guacamoles (/etc/guacamole/guacamole.properties) para que conecte con guacd y añadimos:
guacd-nome do host: localhost guacd-port: 4822 mapeamento de usuários: /etc/guacamole/user-mapping.xml auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
Enlazamos el directorio de configuración de Guacamole al servlet de Tomcat:
sudo ln -s /etc/guacamole /usr/share/tomcat9/.guacamole
Antes de ir mais longe, necesitamos generar el hash MD5 para la contraseña que vamos a querer usar, fácilmente lo sacaremos ejecutando:
echo -n CONTRASEÑA | openssl md5 (stdin)= d287200e83ee04f67294de90dd72f9c6
Ya podremos editar el fichero donde definiremos los accesos a Apache Guacamole, Isso é, si usamos usuarios locales los podremos definir aquí así como los recursos que les presentamos, ejemplo de ‘/etc/guacamole/user-mapping.xml’ que tendremos que desarrollar:
<mapeamento de usuários>
<!-- Per-user authentication and config information -->
<!-- A user using md5 to hash the password
guacadmin user and its md5 hashed password below is used to
login to Guacamole Web UI-->
<authorize
username="guacadmin"
password="d287200e83ee04f67294de90dd72f9c6"
encoding="md5">
<!-- First authorized Remote connection -->
<connection name="Servidor Centos">
<protocol>ssh</protocol>
<param name="hostname">192.168.1.46</param>
<param name="porto">22</param>
</connection>
<!-- Second authorized remote connection -->
<connection name="Windows 2019">
<protocol>rdp</protocol>
<param name="hostname">192.168.1.100</param>
<param name="porto">3389</param>
<param name="nome de usuário">administrador</param>
<param name="ignore-cert">Verdadeiro</param>
</connection>
</authorize>
</mapeamento de usuários>
E, por cierto, que tras hacer toda la instalación y cambios de configuración será fundamental reiniciar los servicios, así como habilitarlos para que inicien de manera automática con el sistema:
sudo systemctl restart tomcat9 sudo systemctl enable tomcat9 sudo systemctl restart guacd sudo systemctl enable guacd
Y es hora de probarlo! Não?
Accederemos mediante un navegador web, apuntando a http://DIRECCION_IP_GUACAMOLE:8080/guacamole y segundo el usuario y contraseña definidas en el fichero anterior.
Esta seria la interface la primera vez que la viésemos, onde tendremos los recursos que nos hayan publicado. Y si nos hemos conectado recentemente a algún equipo lo tendremos arriba de un vistazo rápido.
![]() |
![]() |
Y al pinchar en qualquer conexão nos abrirá integrado en el navegador la conexión RDP, o VNC, o SSH, o Telnet… Os dejo este enlace con todo el manual y guia oficial para poder configurarlo a vuestra necessidade, una app, auth con LDAP, OTP/Token…
Uma explosão, Não? lo malo por ahora la seguridad ya que esto es HTTP, así que al menos habrá que meterle un proxy inverso, y también que vaya por SSL…
Habilitando Reverse Proxy con Apache
Poço, pues si queremos darle una capa más de seguridad, deberemos instalar apache en otra máquina (o en la misma…) para que nos haga de proxy inverso:
sudo apt-get install apache2
Habilitamos los siguientes módulos de apache:
sudo a2ensite default-ssl
sudo a2enmod ssl
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo systemctl restart apache2
Y editamos el fichero predeterminado de SSL (/etc/apache2/sites-available/default-ssl.conf), al que tendremos que indicar nuestros certificados del sitio, así como la URL de nuestro Guacamole, deixando algo como:
<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combinado SSLEngine on SSLCertificateFile /etc/apache2/ssl/bujarra.crt SSLCertificateKeyFile /etc/apache2/ssl/bujarra.key SSLProxyEngine on SSLProxyVerify none SSLProxyCheckPeerCN desligado SSLProxyCheckPeerName off SSLProxyCheckPeerExpire off <Localização /guacamole/> Order allow,deny Allow from all ProxyPass http://DIRECCION_IP_GUACAMOLE:8080/guacamole/ flushpackets=on ProxyPassReverse http://DIRECCION_IP_GUACAMOLE:8080/guacamole/ </Location> SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Diretório> </VirtualHost> </IfModule>
Reiniciamos apache e indicamos que inicie también cada vez que arranque la máquina con:
sudo systemctl restart apache2
sudo systemctl enable apache2
¡Y no quedaría más que probar! Abrimos un navegador contra: https (em inglês)://DIRECCION_IP_PROXY/guacamole/ y debería estar algo más segura nuestro despliegue.
Como siempre esperando que os puedan resultar interesantes, pero este tipo de soluciones vienen muy bien a las pequeñas empresas, micro pymes, evitando que puedan publicar RDP a internet directamente. Con este tipo de soluciones abrimos un sólo puerto a Internet, el 443tcp, el resto cerradito. Fácil y rápido, en un momento tenemos una herramienta para permitir el teletrabajo en empresas sin recursos, centros de estudios, Faculdades…
Um abraço!












































