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 configuration 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 configuration 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 a senha que vamos a querer usar, facilmente lo sacaremos executando:
echo -n CONTRASEÑA | openssl md5
(stdin)= d287200e83ee04f67294de90dd72f9c6
Ya podremos editar el fichero donde definiremos los accesos a Apache Guacamole, Isso é, si usamos utilizadores locais los podremos definir aqui assim como los recursos que les presentamos, ejemplo de '/etc/guacamole/user-mapping.xml’ que tendremos que desarrollar:
<mapeamento de usuários>
<!-- Autenticação por utilizador e informação de configuração -->
<!-- Um utilizador que usa md5 para fazer hash da palavra-passe
utilizador guacadmin e da sua palavra-passe com hash md5 abaixo é usado para
iniciar sessão na interface web do Guacamole-->
<authorize
username="guacadmin"
password="d287200e83ee04f67294de90dd72f9c6"
encoding="md5">
<!-- Primeira ligação remota autorizada -->
<nome da ligação="Servidor Centos">
<protocolo>ssh</protocolo>
<nome do parâmetro="hostname">192.168.1.46</param>
<nome do parâmetro="porto">22</param>
</ligação>
<!-- Segunda ligação remota autorizada -->
<nome da ligação="Windows 2019">
<protocolo>rdp</protocolo>
<nome do parâmetro="hostname">192.168.1.100</param>
<nome do parâmetro="porto">3389</param>
<nome do parâmetro="nome de usuário">administrador</param>
<nome do parâmetro="ignore-cert">Verdadeiro</param>
</ligação>
</authorize>
</mapeamento de usuários>
E, por certo, 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 isto es HTTP, así que al menos habrá que meterle un proxy inverso, e também que vá por SSL…
Ativando Reverse Proxy com Apache
Poço, pois se quisermos dar uma camada extra de segurança, devemos instalar o apache noutro computador (ou no mesmo…) para que nos faça de proxy inverso:
sudo apt-get install apache2
Ativamos os seguintes módulos do 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
E editamos o ficheiro padrão de SSL (/etc/apache2/sites-available/default-ssl.conf), ao qual teremos de indicar os nossos certificados do site, bem como a URL do nosso 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
Permitir 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 mais 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!












































