Instal·lant Apache Guacamole

En aquest post vam veure la instal·lació d'Apache Guacamole, una interessant eina basada en programari lliure que ens permetrà connectar equips d'una manera segura, gràcies a HTML5 i HTTPS podrem accedir a equips amb RDP, VNC, SSH o TELNET.

El que s'ha dit, en aquest post veurem el que és la instal·lació d'Apache Guacamole, que gràcies a la seva interfície web permetrà als usuaris accedir als seus equips. La idea és utilitzar Guacamole com a gateway, ja que únicament publicant el servei HTTPS podrà encapsular els protocols anteriorment comentats, els usuaris podran treballar d'igual forma mitjançant HTML5 integrant el seu equip remot en el navegador. Al final del post veurem com securitzar una mica més l'entorn mitjançant un proxy invers. És cert que amb Apache Guacamole a banda de permetre que es connectin escriptoris, podrem publicar aplicacions, així com integrar l'autenticació de Windows o posar un 2FA (doble factor d' autenticació).

En aquest post estic treballant amb un Ubuntu 20.04, comencem doncs amb la instal·lació en una màquina actualitzada i llista per començar! Com sempre, comencem amb les dependències, les instem el primer:

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

Hem d'instal·lar Tomcat:

sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user -y

És hora de descarregar Guacamole, comencem amb el component Servidor, veiem quina versió és la més recent, ens la descarreguem, compel·lem i l'instal·lem:

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

Executem ldconfig per crear vincles i caixet, a més d'obrir al firewall el port 8080:

sudo ldconfig sudo ufw allow 8080/tcp

A continuació instal·larem el Client de Guacamole que descarregarem de la mateixa web, així com el fitxer WAR. Els descomprimim i procedim a la seva:

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.war /var/lib/tomcat9/webapps/

Comencem ara el que és la configuració, creem el directori per a les extensions i llibreries de Guacamole, i hi afegim la següent variable de l'entorn:

sudo mkdir /etc/guacamole/{extensions,lib}
sudo echo "GUACAMOLE_HOME=/etc/guacamole" >> /etc/default/tomcat9

Creem el fitxer de configuració de Guacamoles (/etc/guacamole/guacamole.properties) perquè connecti amb guacd i hi afegim:

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

Enllaçem el directori de configuració de Guacamole al servlet de Tomcat:

sudo ln -s /etc/guacamole /usr/share/tomcat9/.guacamole

Abans de seguir, necessitem generar el hash MD5 per a la contrasenya que vam voler fer servir, fàcilment el traurem executant:

echo -n CONTRASENYA | openssl md5
    (stdin)= d287200e83ee04f67294de90dd72f9c6

Ja podrem editar el fitxer on definirem els accessos a Apache Guacamole, això és, si fem servir usuaris locals els podrem definir aquí així com els recursos que els presentem, exemple de '/etc/guacamole/user-mapping.xml’ que haurem de desenvolupar:

<user-mapping>
    <!-- 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 ="port">22</param>
        </connection>
        <!-- Second authorized remote connection -->
        <connection name ="Windows 2019">
            <protocol>rdp</protocol>
            <param name ="hostname">192.168.1.100</param>
            <param name ="port">3389</param>
            <param name ="username">administrador</param>
            <param name ="ignore-cert">true</param>
        </connection>
    </authorize>
</user-mapping>

Y, per cert, que després de fer tota la instal·lació i canvis de configuració serà fonamental reiniciar els serveis, així com habilitar-los perquè iniciïn de manera automàtica amb el sistema:

sudo systemctl restart tomcat9 sudo systemctl enable tomcat9 sudo systemctl restart guacd sudo systemctl enable guacd

I és hora de provar-ho! ¿no?

Accedirem mitjançant un navegador web, apuntant a http://DIRECCION_IP_GUACAMOLE:8080/guacamole i segons l' usuari i contrasenya definides en el fitxer anterior.

Aquesta seria la interfície la primera vegada que la veiéssim, on tindrem els recursos que ens hagin publicat. I si ens hem connectat a algun equip el tindrem dalt d'una ullada ràpida.

I en punxar en qualsevol connexió ens obrirà al navegador la connexió RDP, o VNC, o SSH, o Telnet… Us deixo aquest enllaç amb tot el manual i guia oficial per poder configurar-lo a la vostra necessitat, una app, auth amb LDAP, OTP/Token…

Una passada, ¿no? el mal per ara la seguretat ja que això és HTTP, així que almenys caldrà posar-li un proxy invers, i també que vagi per SSL…

Habilitant Revers Proxy amb Apache

Bo, doncs si volem donar-li una capa més de seguretat, haurem d'instal·lar apatxe en una altra màquina (o en la mateixa…) perquè ens faci de proxy invers:

sudo apt-get install apache2

Habilitem els següents mòduls d'apatxe:

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

I editem el fitxer predeterminat de SSL (/etc/apache2/sites-available/default-ssl.conf), al qual haurem d'indicar els nostres certificats del lloc, així com la URL del nostre Guacamole, quedant alguna cosa com:

<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log Registre personalitzat ${APACHE_LOG_DIR}/access.log SSLEngine combinat a SSLCertificateFile /etc/apache2/ssl/bujarra.crt SSLCertificateKeyFile /etc/apache2/ssl/bujarra.key SSLProxyEngine a SSLProxyVerify none SSLProxyCheckPeerCN off SSLProxyCheckPeerName off SSLProxyCheckPeerExpire off off
                <Ubicació /guacamole/>
                    Demanar permetre,deny Permet des de tots els 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
                </Directory>
        </VirtualHost>
</IfModule>

Reiniciem apatxe i indiquem que iniciï també cada vegada que arrenqui la màquina amb:

sudo systemctl restart apache2 sudo systemctl enable apache2

I no quedaria més que provar! Obrim un navegador contra: https://DIRECCION_IP_PROXY/guacamole/ i hauria d'estar alguna cosa més segura el nostre desplegament.

Com sempre esperant que us puguin resultar interessants, però aquest tipus de solucions venen molt bé a les petites empreses, micro pimes, evitant que puguin publicar RDP a internet directament. Amb aquest tipus de solucions obrim un sol port a Internet, el 443, la resta tancadit. Fàcil i ràpid, en un moment tenim una eina per permetre el teletreball en empreses sense recursos, centres d' estudis, col·legis…

Una abraçada!

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!