Skip to content

thiagomuller1/apache-guacamole

Repository files navigation

Tutorial de instalação do Apache Guacamole + Gravador de sessão

Introdução

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).

Etapa 1 — Instalar pacotes e dependências necessários

Atualizar os pacotes do sistema:

sudo apt update

image 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

image 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.gz

image

Em seguida, extraia o pacote de download e navegue até o diretório do Apache Guacamole com os seguintes comandos:

image

descompacte o arquivo tar

sudo tar -xvf guacamole-server-1.6.0.tar.gz
sudo cd guacamole-server-1.6.0

Agora 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 install

image image image

O 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 ldconfig

Etapa 3 — Iniciar e habilitar o servidor Apache Guacamole no Ubuntu 22.04

Neste 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-reload

Em seguida, inicie e ative o servidor Guacamole com os seguintes comandos:

sudo systemctl start guacd
sudo systemctl enable guacd

Alé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 guacd

Na sua saída, você deverá ver: image

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}

Etapa 4 — Instale o aplicativo web Guacamole no Ubuntu 22.04

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-user

image

Em 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.war

image

Agora 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.war

Para aplicar as alterações, reinicie os serviços Apache Guacamole e Tomcat:

sudo systemctl restart tomcat9 guacd

image

Etapa 5 — Configurar a autenticação do banco de dados Apache Guacamole

Neste 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 -y

image

Em seguida, execute o seguinte comando para proteger sua instalação do MariaDB e definir uma senha para ela.

sudo mysql_secure_installation

Obs. nos prints abaixo siga as mesmas etapas de Y ou N conforme as perguntas image image

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.gz

image

Em 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/

image

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.gz

Observe 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/

image

Etapa 6 — Crie um banco de dados e um usuário do Guacamole

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 p

No 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:

Exit

image

Etapa 7 — Importar arquivos de esquema SQL e criar arquivos de propriedades para o Guacamole

Neste ponto, você deve navegar até o diretório MySQL Schema com o comando abaixo:

cd guacamole-auth-jdbc-1.6.0/mysql/schema

A 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_db

image

Em 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.properties

Adicione 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: password

image

Salve e feche o arquivo

Reinicie os serviços para aplicar as alterações:

sudo systemctl restart tomcat9 guacd mysql

image

Etapa 8 — Acesse o Apache Guacamole pela interface da Web

Neste 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/guacamole

image

Você verá a tela de login do Apache Guacamole. Insira as seguintes credenciais para efetuar login:

username: guacadmin
password: guacadmin

image

Etapa 9 — Crie um novo usuário de administrador e senha para o Apache Guacamole

Neste 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

image

Em seguida, vá para a aba Usuários e clique em Novo Usuário image

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

image image

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

Etapa 10 - Configurar a conexão a um servidor Windows (RDP)

Clique no menu de usuario, vá para Settings image

Clique em Connections e depois New Group image

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

Ainda em Connections clique em New Connection

image

Em Edit Connection insira o nome do servidor, em location selecione a pasta criada anteriormente, em protocolo insira RDP image

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 image

Etapa 11 - Configurando gravador de sessão remota

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

image

Clique em Save image

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

image

Criar o diretorio onde hospedará a gravação:

sudo mkdir -p /var/lib/guacamole/recordings

Verifique se o usuario guacd exite

id guacd

Se não existir, criaremos um usuario de serviço

sudo useradd -r -s /bin/false guacd

Mudar o owner do diretorio para daemon:tomcat

sudo chown -R daemon:tomcat /var/lib/guacamole/recordings
sudo chmod -R 770 /var/lib/guacamole/recordings

Adicionar o path de gravação no arquivo guacamole.properties

 cd /etc/guacamole/
 nano guacamole.properties

Adicione a linha:

recording-search-path: /var/lib/guacamole/recordings

image

Reinicie os serviços:

sudo systemctl restart guacd
sudo systemctl restart tomcat9

Pronto, os proximos passos é testar e desfrutar!

Faça uma sessão de teste, (em Home) image

image

Após, vá em Settings image

Em History > Coluna Logs, clique em View para visualizar a gravação da sessão

image

Etapa 12 - Disponibilizando acesso Web via internet

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_PUBLICO

Configurar proxy reverso com Apache Ativar os Modulos Necessarios:

sudo a2enmod proxy proxy_http proxy_wstunnel
sudo systemctl restart apache2

Crie um arquivo de VirtualHost para o Guacamole:

sudo nano /etc/apache2/sites-available/guacamole.conf

Preencha 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 apache2

Instalar o CertBot para acesso HTTPS

sudo apt install certbot python3-certbot-apache -y

Depois rode:

sudo certbot --apache -d guacamole.seudominio.com.br

Passos 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: TCP

Salve 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) image

Etapa 13 - Ativando MFA para Login no Portal Guacamole

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.html

Baixe 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/.

Como o TOTP funciona com o Guacamole

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: image

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: image

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: image

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: image

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!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published