Apache Guacamole – Gateway de desktop remoto open source – Instalação e configuração

O Apache Guacamole é uma solução de gateway para acesso remoto (também chamado de Jump Server) a servidores, computadores e máquinas virtuais, através do navegador (browser). É uma solução open source que facilita a administradores de rede a gestão do acesso a computadores, que podem ser isolados em uma rede local (como uma DMZ) aumentando sua segurança.

O Guacamole permite o acesso através dos protocolos RDP (Remote Desktop Connection), comum em sistemas Microsoft, SSH (Secure Shell), comum em sistemas Linux e derivados e VNC (Virtual Network Computing), aplicativo popular para conexão remota a desktops, compatível com Windows, Linux e macOS.

Pré-requisitos para execução deste tutorial: conhecimento geral em redes de computadores, compreensão do conceito de LAN / WAN / VPN e firewall, conhecimento dos protocolos TCP/IP e suas portas, compreensão do conceito de servidor Web, banco de dados e acesso remoto.

Instalação do Apache Guacamole

A instalação típica do Apache Guacamole não é tão simples (quanto um apt install package) e requer um Servidor Linux, o Apache Tomcat (servidor web Java), o MySQL ou MariaDB e o Java JDK. Neste cenário, a dica é seguir o excelente passo a passo do blog do Rudimar Remontti.

Porém, a dica do Ricardo Conzatti é a melhor (mais fácil) saída para quem deseja uma instalação rápida e eficiente do Apache Guacamole. Ele recomenda o uso do script do Chase Wright, que é praticamente um “apt install apache-guacamole“.

No final deste post estão vários links interessantes sobre o Apache Guacamole, especialmente sobre a sua instalação.

Abaixo estão os (poucos) passos para proceder com a instalação do Guacamole em um servidor Linux Debian 11 usando este scritpt.

Instalação usando script

Considerando que você já possua um servidor Linux, Debian ou Ubuntu, por exemplo, baixe o script com o comando abaixo:

# wget https://raw.githubusercontent.com/MysticRyuujin/guac-install/master/guac-install.sh

Feito o download, dê permissão de execução ao script com o comando:

# chmod +x guac-install.sh

Inicie a instalação executando o script com o comando:

# ./guac-install.sh

O script lhe fará poucos questionamentos (abaixo) como se deseja habilitar a autenticação em dois fatores (MFA) e se deseja instalar um MySQL / MariaDB neste mesmo servidor (ou se, por exemplo, deseja usar um servidor DB já préconfigurado). Caso opte pela instalação do DB, ele solicitará uma senha para o user root e para o user guacamole:

MFA: yes

MySQL: local ou não

Senha do user root do MySQL: *** (insira uma senha)

Senha do user guacamole do MySQL: *** (insira uma senha)

Acesso a interface Web

Após o término da instalação, o Apache Guacamole poderá ser acessado pelo seu endereço padrão, originalmente em porta 80/HTTP. A seguir, faremos as configurações necessárias para habilitar este acesso em 443/HTTPS.

http://ip-do-servidor:8080/guacamole

O user e senha padrão é:

user: guacadmin | password: guacadmin

Caso tenha habilitado o MFA, já em seu primeiro acesso você precisará ler o QR Code gerado pelo Guacamole em seu smartphone (usando o Google Authenticator ou outro app de MFA) e então entrar com o código apresentado em seu aplicativo.

Para trocar a senha do user guacadmin, você precisa, primeiramente, clonar este usuário, criando um segundo user admin (no Guacamole, vá em Main Menu / Settings / Users). Após, acesse o sistema com este segundo user e então troque a senha ou, até mesmo, desabilite o user guacadmin.

Habilitando o SSL

Para habilitar o acesso seguro (SSL) no acesso ao Apache Guacamole, siga os passos abaixo. Em primeiro lugar, vamos gerar um certificado (auto assinado):

# keytool -genkey -alias tomcat -keyalg RSA

O keytool lhe fará os questionamentos padrões para a geração de um certificado, como a senha do keystore (guarde para usar posteriormente), seu nome e sobrenome, depto, empresa, cidade, estado e país. Ao final, confirme as informações inseridas.

Um arquivo oculto chamado .keystore foi criado no seu diretório atual (use o comando # ls -lha para visualizar). Feito isso, vamos mover este arquivo para o diretório do Apache Tomcat:

# mv /root/.keystore /var/lib/tomcat9/

Em seguida, vamos ajustar a permissões recomendadas para este arquivo:

# chown tomcat. /var/lib/tomcat9/.keystore
# chmod 640 /var/lib/tomcat9/.keystore

E, por fim, vamos editar o arquivo de configuração do Apache Tomcat (server.xml) com as configurações de SSL. Primeiramente, recomendo fazer um backup do arquivo antes de sua edição:

# cp /etc/tomcat9/server.xml /etc/tomcat9/server.xml.bkp

Em seguida, edite o arquivo server.xml usando o nano (ou vim) com as configurações descritas abaixo:

# nano /etc/tomcat9/server.xml

Altere o bloco de configurações abaixo:

[Bloco original]

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

[Bloco editado com as configurações de SSL]

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
  scheme="https"
  secure="true"
  SSLEnabled="true"
  keystoreFile="/var/lib/tomcat9/.keystore"
  keystorePass="senha inserida anteriormente"
  clientAuth="false"
  sslProtocol="TLS" />

Apache Guacamole - Arquivo server.xml (tomcat9) - Config HTTPS/SSL
Apache Guacamole – Arquivo server.xml (tomcat9) – Config HTTPS/SSL

Salve o arquivo! Usando o nano, tecle Ctrl + X e yes para salvar o arquivo e sair (se estiver usando o vim, tecle Esc + :wq).

Reinicie o Apache Tomcat com o comando abaixo:

# systemctl restart tomcat9 guacd

Feito isso, o Apache Guacamole poderá ser acessado via HTTPS, pelo seu endereço padrão:

https://ip-do-servidor:8080/guacamole

Criando conexões dentro do Apache Guacamole

Para cadastrar seus computadores e permitir o acesso remoto aos seus usuários, acesse o Apache Guacamole com um user admin (como o guacadmin) e vá em seu Main Menu / Settings / Connections.

Apache Guacamole - Página Principal - Connections
Apache Guacamole – Página Principal – Connections

Use a opção New Connection para cadastrar os sistemas que poderão ser acessíveis a partir do Apache Guacamole e o New Group para criar grupos e organizar estes sistemas, como abaixo, no ambiente utilizado na construção deste post.

 

Apache Guacamole - New Connections
Apache Guacamole – New Connections

No cadastro de conexões, você precisa informar o protocolo de acesso remoto que esta conexão (computador) permite o acesso (RDP, SSH ou VNC), seu endereço DNS ou IP e o usuário e senha necessário para a autenticação.

Abaixo está o exemplo de uma conexão via protocolo RDP em um sistema Microsoft Windows 10 que, necessariamente, precisa ter o acesso remoto habilitado:

Apache Guacamole - Connections Config - RDP Windows 10
Apache Guacamole – Connections Config – RDP Windows 10

Muito importante destacar que, sendo um gateway de acesso remoto, o Apache Guacamole precisa, de alguma maneira, ter condição e permissão para chegar em todos os computadores e sistemas que poderão ser acessíveis através dele. Isso quer dizer que você precisará organizar sua rede interna (LAN, WLAN, DMZ) para que atenda esta necessidade, como através de configurações de VLANs, Rotas, Regras de Firewall, ACLs e etc.

Feito este cadastro, o computador já poderá ser acessado via Apache Guacamole (neste caso, através do Google Chrome), como exemplificado na imagem abaixo:

Apache Guacamole - Connection Windows 10 RDP
Apache Guacamole – Conexão a uma máquina virtual Windows 10, via RDP

Para organizar os usuários e as conexões que estes poderão acessar, use a opção de cadastrar novos usuários (Main Menu / Settings / Users). Dentro deste cadastro, você tem a opção de selecionar quais conexões (ou grupo de conexão) este usuário poderá acessar.

Vale destacar a opção de grupos de usuários (Main Menu / Settings / Groups), que também possui a opção de quais conexões podem ser acessadas (como visto na imagem abaixo), facilitando a gestão de um número volumoso de usuários e conexões.

Apache Guacamole - Groups Access e Permissions (Connections)
Apache Guacamole – Groups Access e Permissions (Connections)

Recomendação final

Como já citado em outros posts por aqui, em ambiente de testes é comum a utilização de certificado self-signed (auto-assinado). Ele pode ser usado normalmente, porém, como não possui vínculo com uma autoridade certificadora oficial, o navegador sempre exibirá um alerta ao acessá-lo.

Em ambientes de produção, você pode usar qualquer certificado gerado a partir de uma unidade certificadora oficial. Uma alternativa bastante comum é o de usar o Let’s Encrypt, que é uma autoridade de certificação que oferece certificados de criptografia TLS X.509 gratuitamente, através de um processo automatizado bem eficiente.

Para gerar e ativar um ceritificado via Let’s Encrypt é importante lembrar que o domínio utilizado precisa ser acessível via Internet, portanto, as portas 80 http e 443 https devem estar abertas (liberadas) e, se necessário, redirecionadas (NAT) para o servidor (IP local) do sistema.

*Com informações de: Apache Guacamole – Site Oficial, Doc – Brasil Peering Forum – Configurando um GW de Acesso Remoto, Apache Guacamole – Installing, Apache Guacamole – Changing Password, Rudimar Remontti – Aprenda a instalar o Apache Guacamole, Conza Tech – Ricardo Conzatti – Instalando o Apache Guacamole,

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.