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!

Postagens recomendadas

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, Não hesite em contactar-me, Vou tentar ajudá-lo sempre que puder, Compartilhar é viver ;) . Desfrute de documentos!!!