O Apache Guacamole é um gateway de desktop remoto sem cliente que suporta protocolos padrão como VNC, RDP e SSH. Ele permite que os usuários acessem seus desktops remotamente usando apenas um navegador web, sem a necessidade de softwares ou plugins adicionais. Esta ferramenta poderosa é inestimável para administradores de sistemas e profissionais de TI que precisam gerenciar e acessar múltiplos sistemas com segurança e eficiência a partir de um local central. A interface web do Guacamole garante acessibilidade a partir de qualquer dispositivo com conexão à internet, tornando o trabalho remoto e o gerenciamento de sistemas mais flexíveis e convenientes.
Etapas completas para instalar o Apache Guacamole no Ubuntu 22.04 Antes de iniciar a instalação, certifique-se de estar logado como usuário root ou não root com privilégios sudo. As etapas a seguir guiarão você por todo o processo de instalação, incluindo a configuração do acesso SSH com uma máquina virtual (VM).
Atualizar os pacotes do sistema:
sudo apt update Em seguida, use o seguinte comando para instalar os pacotes e dependências necessários para a instalação do Guacamole:
Em seguida, use o seguinte comando para instalar os pacotes e dependências necessários para a instalação do Guacamole:
sudo apt install -y \
  build-essential \
  libcairo2-dev \
  libjpeg-turbo8-dev \
  libpng-dev \
  libtool-bin \
  libossp-uuid-dev \
  libvncserver-dev \
  freerdp2-dev \
  libssh2-1-dev \
  libtelnet-dev \
  libwebsockets-dev \
  libpulse-dev \
  libvorbis-dev \
  libwebp-dev \
  libssl-dev \
  libpango1.0-dev \
  libswscale-dev \
  libavcodec-dev \
  libavutil-dev \
  libavformat-dev Quando terminar, prossiga para a próxima etapa para baixar e instalar o Apache Guacamole no Ubuntu 22.04.
Quando terminar, prossiga para a próxima etapa para baixar e instalar o Apache Guacamole no Ubuntu 22.04.
Etapa 2 — Baixe e instale o Apache Guacamole a partir da fonte (https://downloads.apache.org/guacamole/)
Neste ponto, você deve visitar a página oficial de downloads e usar o seguinte comando wget para baixar o pacote de origem mais recente do Apache Guacamole :
sudo wget https://downloads.apache.org/guacamole/1.6.0/source/guacamole-server-1.6.0.tar.gzEm seguida, extraia o pacote de download e navegue até o diretório do Apache Guacamole com os seguintes comandos:
descompacte o arquivo tar
sudo tar -xvf guacamole-server-1.6.0.tar.gz
sudo cd guacamole-server-1.6.0Agora você pode compilar e instalar o Apache Guacamole no Ubuntu 22.04. Para isso, execute os seguintes comandos:
sudo ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots
sudo make
sudo make installO processo de compilação e instalação pode levar algum tempo para ser concluído. Após a conclusão, atualize o cache da biblioteca instalada com o comando abaixo:
sudo ldconfigNeste ponto, você aprendeu a compilar e instalar o Apache Guacamole no Ubuntu 22.04. Agora você precisa recarregar o systemd para aplicar as alterações:
sudo systemctl daemon-reloadEm seguida, inicie e ative o servidor Guacamole com os seguintes comandos:
sudo systemctl start guacd
sudo systemctl enable guacdAlém disso, você pode verificar se o servidor Guacamole está ativo e em execução no Ubuntu 22.04 com o seguinte comando:
sudo systemctl status guacdNa sua saída, você deverá ver:

Observação : você deve criar os arquivos de configuração e extensões do Guacamole. Esses arquivos serão usados nas etapas posteriores. Para fazer isso, você pode executar:
sudo mkdir -p /etc/guacamole/{extensions,lib}Neste ponto, você precisa instalar o aplicativo web Guacamole no seu Ubuntu 22.04. Ele é a interface de front-end do Apache Guacamole. Para isso, você precisa instalar o Tomcat 9 usando o comando abaixo:
sudo apt install -y tomcat9 tomcat9-admin tomcat9-common tomcat9-userEm seguida, baixe o cliente do Guacamole Web App usando o seguinte comando: Observe que você deve baixar a versão com a versão do Guacamole que você instalou
sudo wget https://downloads.apache.org/guacamole/1.6.0/binary/guacamole-1.6.0.warAgora você precisa mover o cliente web Guacamole para o diretório web do Tomcat. Para isso, execute o comando abaixo:
sudo mv guacamole-1.6.0.war /var/lib/tomcat9/webapps/guacamole.warPara aplicar as alterações, reinicie os serviços Apache Guacamole e Tomcat:
sudo systemctl restart tomcat9 guacdNeste ponto, você aprendeu a instalar o Apache Guacamole no Ubuntu 22.04 e a configurar o aplicativo web cliente. Como você deve saber, o Guacamole suporta autenticação básica de usuário, usada para testes. Neste guia, queremos usar a autenticação de banco de dados pronta para produção por meio do MariaDB.
Primeiro, instale o MariaDB no Ubuntu 22.04 com o comando abaixo:
sudo apt install mariadb-server -yEm seguida, execute o seguinte comando para proteger sua instalação do MariaDB e definir uma senha para ela.
sudo mysql_secure_installationObs. nos prints abaixo siga as mesmas etapas de Y ou N conforme as perguntas
 

Após concluir, você precisa instalar a biblioteca MySQL Connector/J e o plugin autenticador JDBC Guacamole. Para isso, você pode baixar o conector Java com o comando abaixo:
sudo wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.tar.gzEm seguida, você deve extrair o arquivo baixado e copiá-lo para o diretório /etc/guacamole/lib/ :
sudo tar -xf mysql-connector-java-8.0.26.tar.gz
sudo cp mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar /etc/guacamole/lib/Em seguida, você precisa baixar o plugin Apache Guacamole JDBC AUTH. Para isso, execute o comando abaixo:
sudo wget https://downloads.apache.org/guacamole/1.6.0/binary/guacamole-auth-jdbc-1.6.0.tar.gzObserve que você deve baixar a versão com a versão do Guacamole que você instalou.
Agora extraia o arquivo baixado e copie-o para o diretório /etc/guacamole/extensions/:
sudo tar -xf guacamole-auth-jdbc-1.6.0.tar.gz
sudo mv guacamole-auth-jdbc-1.6.0/mysql/guacamole-auth-jdbc-mysql-1.6.0.jar /etc/guacamole/extensions/Neste ponto, você deve efetuar login no seu shell MariaDB e criar um usuário e um banco de dados para o Apache Guacamole no Ubuntu 22.04.
Primeiro, faça login no shell do MariaDB com a senha que você configurou:
sudo mysql -u root -p pNo shell do MariaDB, execute os comandos abaixo para criar o usuário e o banco de dados e conceder os privilégios: (Altere guac_user e password para o usuario e senha de sua preferencia, atente-se que há dois locais para trocar o usuario no comando abaixo):
CREATE DATABASE guac_db;
CREATE USER 'guac_user'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON guac_db.* TO 'guac_user'@'localhost';
FLUSH PRIVILEGES;Quando terminar, saia do shell do MariaDB:
ExitNeste ponto, você deve navegar até o diretório MySQL Schema com o comando abaixo:
cd guacamole-auth-jdbc-1.6.0/mysql/schemaA partir daí, execute o comando abaixo para importar os arquivos de esquema SQL para o banco de dados MySQL:
cat *.sql | mysql -u root -p guac_dbEm seguida, use seu editor de texto favorito, como o editor Vi ou o editor Nano, para criar o arquivo de propriedades para o Apache Guacamole:
sudo vi /etc/guacamole/guacamole.propertiesAdicione as seguintes configurações ao arquivo com suas credenciais de banco de dados:
altere mysql-username e mysql-password pelo usuario e senha que você configurou na etapa 6
# MySQL properties
mysql-hostname: 127.0.0.1
mysql-port: 3306
mysql-database: guac_db
mysql-username: guac_user
mysql-password: passwordSalve e feche o arquivo
Reinicie os serviços para aplicar as alterações:
sudo systemctl restart tomcat9 guacd mysqlNeste ponto, você concluiu as etapas para instalar o Apache Guacamole no Ubuntu 22.04. Agora você pode acessar o painel do Guacamole seguindo o URL abaixo no seu navegador:
http://ip-do-servidor:8080/guacamoleVocê verá a tela de login do Apache Guacamole. Insira as seguintes credenciais para efetuar login:
username: guacadmin
password: guacadminNeste ponto, é altamente recomendável criar um novo usuário e senha de administrador e excluir as credenciais padrão. Para isso, no perfil guacadmin, clique em Configurações
Em seguida, vá para a aba Usuários e clique em Novo Usuário

Na seção Editar Usuário , insira seu novo nome de usuário e senha. Em seguida, na seção Permissões, marque todas as caixas. Quando terminar, clique em Salvar
Agora, saia do usuário padrão e faça login novamente no Apache Guacamole com o novo usuário criado. Em seguida, navegue até as configurações e a aba de usuários e exclua o usuário guacadmin
Clique no menu de usuario, vá para Settings

Clique em Connections e depois New Group

Defina o nome do Pool conforme seu ambiente, Servidores, Windows, Linux etc... conforme a melhor segregação e salve

Ainda em Connections clique em New Connection
Em Edit Connection insira o nome do servidor, em location selecione a pasta criada anteriormente, em protocolo insira RDP

Em Parameters > Network, insira o IP ou DNS do seu servidor, porta insira 3389 para conexão RDP
Em Authentication > Insira Usuario e senha criado no seu Windows, se estiver em dominio deve preencher
Em Authentication > Em Security Mode selecione Any ou NLA e marque a caixa Ignore Server Certificate caso não possua certificado

Ainda nas configurações de Conexões Em Screen Recording :
Recording Path: ${HISTORY_PATH}
Recording Name: ${HISTORY_UUID}
Selecione a caixinha de Automaticaly create recording path
Baixe o guacamole-history-recording-storage-1.6.0.tar.gz (https://apache.org/dyn/closer.lua/guacamole/1.6.0/binary/guacamole-history-recording-storage-1.6.0.tar.gz?action=download) e/ou (https://guacamole.apache.org/doc/gug/recording-playback.html)
Extraia e envie o arquivo para /etc/guacamole/extensions/ No meu caso fiz utilizando WinSCP para transferencia de arquivos
Criar o diretorio onde hospedará a gravação:
sudo mkdir -p /var/lib/guacamole/recordingsVerifique se o usuario guacd exite
id guacdSe não existir, criaremos um usuario de serviço
sudo useradd -r -s /bin/false guacdMudar o owner do diretorio para daemon:tomcat
sudo chown -R daemon:tomcat /var/lib/guacamole/recordings
sudo chmod -R 770 /var/lib/guacamole/recordingsAdicionar o path de gravação no arquivo guacamole.properties
 cd /etc/guacamole/
 nano guacamole.propertiesAdicione a linha:
recording-search-path: /var/lib/guacamole/recordingsReinicie os serviços:
sudo systemctl restart guacd
sudo systemctl restart tomcat9Pronto, os proximos passos é testar e desfrutar!
Faça uma sessão de teste, (em Home)

Em History > Coluna Logs, clique em View para visualizar a gravação da sessão
Registrar dominio/subdominio apontando para o IP publico do seu servidor Acesse o local onde hospeda seu dominio e crie a entrada abaixo:
guacamole    A    SEU_IP_PUBLICOConfigurar proxy reverso com Apache Ativar os Modulos Necessarios:
sudo a2enmod proxy proxy_http proxy_wstunnel
sudo systemctl restart apache2Crie um arquivo de VirtualHost para o Guacamole:
sudo nano /etc/apache2/sites-available/guacamole.confPreencha com:
<VirtualHost *:80>
    ServerName guacamole.seudominio.com.br
    ProxyRequests Off
    ProxyPreserveHost On
    <Location />
        Require all granted
        ProxyPass http://localhost:8080/guacamole/ flushpackets=on
        ProxyPassReverse http://localhost:8080/guacamole/
    </Location>
    <Location /websocket-tunnel>
        Require all granted
        ProxyPass ws://localhost:8080/guacamole/websocket-tunnel
        ProxyPassReverse ws://localhost:8080/guacamole/websocket-tunnel
    </Location>
    Header always unset X-Frame-Options
</VirtualHost>Ative o site e reinicie o Apache:
sudo a2ensite guacamole.conf
sudo systemctl reload apache2Instalar o CertBot para acesso HTTPS
sudo apt install certbot python3-certbot-apache -yDepois rode:
sudo certbot --apache -d guacamole.seudominio.com.brPassos para liberar acesso externo no Azure:
Acesse o portal do Azure, Vá na VM do Guacamole → clique em Networking Verifique qual NSG está associado à interface de rede ou subnet da VM Adicione inbound rules (entrada) para:
Porta 80 (HTTP) → Source: Any → Destination: VM → Protocol: TCP
Porta 443 (HTTPS) → Source: Any → Destination: VM → Protocol: TCPSalve e aguarde alguns segundos
Bloqueie a conexão RDP, porta 3389 em todos os seus servidores (Se for no Azure faça o ajuste no NSG)

Baixe a versão do guacamole-auth-totp-1.6.0.tar.gz, conforme seu ambiente Documentação Oficial:
https://guacamole.apache.org/doc/gug/totp-auth.htmlBaixe guacamole-auth-totp-1.6.0.tar.gza partir da página de lançamento do Apache Guacamole 1.6.0 e extraia-o.
Crie o GUACAMOLE_HOME/extensionsdiretório, se ele ainda não existir.
Copie o guacamole-auth-totp-1.6.0.jararquivo do conteúdo do arquivo para GUACAMOLE_HOME/extensions/.
O Guacamole oferece suporte para TOTP como um segundo fator de autenticação. Para usar a extensão de autenticação TOTP, algum outro mecanismo de autenticação também precisará ser configurado. Quando um usuário tenta fazer login no Guacamole, outros métodos de autenticação instalados serão consultados primeiro:

Somente após a autenticação bem-sucedida com um desses métodos o Guacamole solicitará que o usuário verifique sua identidade com um código de autenticação:

Se a tentativa de autenticação inicial e a verificação usando TOTP forem bem-sucedidas, o usuário será autorizado a entrar. Se qualquer um dos mecanismos falhar, o acesso ao Guacamole será negado.
Forma de inscrição:
Caso o usuário ainda não tenha uma chave TOTP associada à sua conta (ainda não tenha concluído o cadastro), será necessário cadastrar um dispositivo de autenticação após passar pelo primeiro fator de autenticação. Um código QR contendo uma chave gerada automaticamente será apresentado ao usuário para ser escaneado pelo aplicativo ou dispositivo de autenticação:

Se o dispositivo de autenticação não suportar a leitura de códigos QR para inscrição, os detalhes contidos no código QR poderão ser exibidos clicando no link "Mostrar" ao lado do cabeçalho "Detalhes". Os seguintes valores poderão ser inseridos manualmente:

O registro é concluído quando o usuário insere um código de autenticação válido gerado pelo seu dispositivo usando a chave fornecida.
Importante
Se o usuário não confirmar/concluir o processo de cadastro, na próxima vez que efetuar login, será solicitado que passe pelo processo de cadastro novamente, e os dados do TOTP serão gerados novamente. Isso significa que o código QR escaneado anteriormente e os códigos TOTP gerados com o uso desse código serão inválidos.
#Fim!




























