Ferramentas do usuário

Ferramentas do site


instalacao_do_apache_guacamole

Procedimento para instalar guacamole no FreeBSD autenticando em uma Base Postgres + TOTP two-factor authentication

1 - Atualizar o pkg e ports, vamos vão ser usados nesta instalação:

# pkg update
# portsnap fetch extract

2 - Após atualizá-los vamos instalar todo o pacote do guacamole client e guacamole server pelo ports:

– GuacamoleClient

# cd /usr/ports/www/guacamole-client/
# make install clean BATCH=yes

– GuacamoleServer

# cd /usr/ports/net/guacamole-server/
# make install clean BATCH=yes

OBS: Caso receba uma mensagem de erro no final da instalação tanto do guacamole cliente, quando do guacamole server informando que já existe uma versão deles 1.4 instalados, efetue a atualização da instalação com o comando make reinstall, pois essa instalação pelo ports está instalando a versão 1.5, que é superior a 1.4.

3 - Após a instalação do passo 2, vamos ativar os serviços no /etc/rc.conf:

# # /usr/local/etc/rc.d/guacd enable
guacd enabled in /etc/rc.conf

# /usr/local/etc/rc.d/tomcat9 enable
tomcat9 enabled in /etc/rc.conf

# /usr/local/etc/rc.d/guacd start
Starting guacd.
guacd[97574]: INFO:     Guacamole proxy daemon (guacd) version 1.4.0 started

# /usr/local/etc/rc.d/tomcat9 start
Starting tomcat9.

5 - Após o passo 4, vamos entrar no diretório /usr/local/etc/guacamole-client/ e criar dois novos diretórios :

# cd /usr/local/etc/guacamole-client/
# mkdir lib
# mkdir extensions

6 - Agora vamos entrar no diretório extensions e fazer o download do guacamole-auth-jdbc do nosso banco, que no caso é o Postgres:

Link para download:
https://guacamole.apache.org/releases/
https://dlcdn.apache.org/guacamole/

# cd extensions
# fetch https://dlcdn.apache.org/guacamole/1.5.0/binary/guacamole-auth-jdbc-1.5.0.tar.gz
guacamole-auth-jdbc-1.5.0.tar.gz                        30 MB  231 MBps    00s

7 - Vamos extrair e executar alguns passos. Segue abaixo:

# tar -jxvf guacamole-auth-jdbc-1.5.0.tar.gz
# cd guacamole-auth-jdbc-1.5.0
# cd postgresql/
# ll
total 10537
-rw-r--r--  1 1000  1000  10774697 Feb 13 21:17 guacamole-auth-jdbc-postgresql-1.5.0.jar
drwxr-xr-x  3 1000  1000         5 Jul 21  2021 schema/

8 - Vamos copiar o arquivo guacamole-auth-jdbc-postgresql-1.5.0.jar, para o diretório /usr/local/etc/guacamole-client/extensions:

# cp guacamole-auth-jdbc-postgresql-1.5.0.jar /usr/local/etc/guacamole-client/extensions/

Link para download: https://jdbc.postgresql.org/download/

# cd /usr/local/etc/guacamole-client/lib/ 
# fetch https://jdbc.postgresql.org/download/postgresql-42.6.0.jar
postgresql-42.6.0.jar                                 1056 kB 3940 kBps    00s

10 - Depois de todos os passos acima, vamos criar o banco do guacamole. Siga os passos abaixo:

– Entre no banco :

# su - postgres
$

– Entre no diretório /usr/local/etc/guacamole-client/extensions/guacamole-auth-jdbc-1.5.0/postgresql/ :

$ cd /usr/local/etc/guacamole-client/extensions/guacamole-auth-jdbc-1.5.0/postgresql/
$

– Liste o diretório schema e veja se os arquivos abaixo estão no seu interior:

$ ls -l schema/
total 22
-rw-r--r--  1 1000  1000  21749 Jul 21  2021 001-create-schema.sql
-rw-r--r--  1 1000  1000   2699 Jul 21  2021 002-create-admin-user.sql
drwxr-xr-x  2 1000  1000     10 Jul 21  2021 upgrade

– Crie o banco e após a criação do banco:

$ createdb guacamole_db
$

–vamos popular a base:

$ cat schema/*.sql | psql -d guacamole_db -f -
CREATE INDEX
CREATE TABLE
CREATE INDEX
INSERT 0 1
INSERT 0 1
INSERT 0 6
INSERT 0 3
$

– Vamos entrar no banco criado:

$ psql -d guacamole_db
psql (15.1)
Type "help" for help.

guacamole_db=# 

–Vamos criar o acesso ao bando do Guacamole:

guacamole_db=# CREATE USER guacamole_user WITH PASSWORD 'some_password';
CREATE ROLE

guacamole_db=# GRANT SELECT,INSERT,UPDATE,DELETE ON ALL TABLES IN SCHEMA public TO guacamole_user;
GRANT

guacamole_db=# GRANT SELECT,USAGE ON ALL SEQUENCES IN SCHEMA public TO guacamole_user;
GRANT

guacamole_db=# \q
$ 

11 - Vamos configurar o Guacamole para autenticação ao banco. Vamos criar o arquivo guacamole.properties dentro de /usr/local/etc/guacamole-client:

# cd /usr/local/etc/guacamole-client
# cp guacamole.properties.sample guacamole.properties

–Vamos editar o arquivo guacamole.properties e acrescentar as linhas abaixo:

# ee guacamole.properties

# PostgreSQL properties
postgresql-hostname: localhost
postgresql-database: guacamole_db
postgresql-username: guacamole_user
postgresql-password: some_password

12 - Após isto, vamos reiniciar os três serviços instalados e efetuar os testes:

–Postgres

# /usr/local/etc/rc.d/postgresql restart
2023-03-31 23:17:48.347 -03 [99440] LOG:  ending log output to stderr
2023-03-31 23:17:48.347 -03 [99440] HINT:  Future log output will go to log destination "syslog".

–Guacd

# /usr/local/etc/rc.d/guacd  restart
Stopping guacd.
Waiting for PIDS: 97576.
Removing stale pidfile.
Starting guacd.
guacd[99473]: INFO:     Guacamole proxy daemon (guacd) version 1.4.0 started

–Tomcat9

# /usr/local/etc/rc.d/tomcat9  restart
Stopping tomcat9.
Waiting for PIDS: 97590.
Starting tomcat9.

13 - Após todos esses passos, vamos testar o serviço. Abra seu navegador com o seu ip, porta 8080/guacamole. Segue exemplo abaixo:

http://SEU_IP_AQUI:8080/guacamole/#/

– Irá abrir a tela de login do serviço:

Login e senha padrão:

Login: guacadmin
Senha: guacadmin

14 - Agora vamos ativar o serviço SSL/TLS para adicionar mais uma camada de segurança:

– O primeiro passo é gerar um keystore, exemplo abaixo:

# keytool -genkey -keystore /usr/local/etc/guacamole_keystore -alias tomcat -keyalg RSA -keysize 4096 -validity 720

Esse comando é usado para gerar um novo par de chaves de criptografia e criar um arquivo de armazenamento de chaves, também conhecido como keystore, que será usado para configurar o HTTPS no servidor Guacamole.

–Aqui está o que cada parte do comando faz:

keytool: é o utilitário de linha de comando Java que permite gerenciar certificados, chaves e keystores.
-genkey: indica que você deseja gerar um novo par de chaves de criptografia.
-keystore: especifica o nome e local do arquivo de armazenamento de chaves que será criado.
/usr/local/etc/guacamole_keystore: é o caminho e o nome do arquivo de armazenamento de chaves a ser criado.
-alias: especifica o nome que será usado para identificar a chave no keystore.
tomcat: é o nome do alias escolhido para identificar a chave no keystore.
-keyalg: especifica o algoritmo de criptografia a ser usado para gerar a chave.
RSA: é o algoritmo de criptografia escolhido para gerar a chave.
-keysize: especifica o tamanho da chave em bits.
4096: é o tamanho da chave escolhido para a chave.
-validity: especifica o período de validade da chave em dias.
720: é o período de validade escolhido para a chave, em dias.

15 - Você precisará fornecer uma senha no início e no final do procedimento Nr 14, fora que será necessário fornecer algumas informações. Segue o exemplo que eu fiz:

Enter keystore password:  
Re-enter new password: 
What is your first and last name?
  [Unknown]:  SALADECOMANDO
What is the name of your organizational unit?
  [Unknown]:  SALADECOMANDO
What is the name of your organization?
  [Unknown]:  SALADECOMANDO
What is the name of your City or Locality?
  [Unknown]:  Macapa
What is the name of your State or Province?
  [Unknown]:  Amapa
What is the two-letter country code for this unit?
  [Unknown]:  AP
Is CN=SALADECOMANDO, OU=SALADECOMANDO, O=SALADECOMANDO, L=Macapa, ST=Amapa, C=AP correct?
  [no]:  yes

Enter key password for <tomcat>
        (RETURN if same as keystore password):  
Re-enter new password: 

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /usr/local/etc/guacamole_keystore -destkeystore /usr/local/etc/guacamole_keystore -deststoretype pkcs12".

=== 16 - Vamos configurar o arquivo server.xml que fica localizado em “/usr/local/apache-tomcat-9.0/conf/”, incluir as informações do keystore e alterar as configurações do servidor. Segue abaixo:

# cd /usr/local/apache-tomcat-9.0/conf/

# ee server.xml

– Vamos acrescentar as configurações do servidor:

<Connector port="8443" protocol="HTTP/1.1"
        connectionTimeout="20000"
        redirectPort="8443"
        SSLEnabled="true"
        scheme="https"
        secure="true"
        sslProtocol="TLS"
        keystoreFile="/usr/local/etc/guacamole_keystore"  
        keystorePass="senha_da_keystore" />

– Após adicionar as linhas de configurações, comente ou apague as linhas da configuração anterior:


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

– No meu caso, eu só comentei. Feche e salve as alterações:

17 - Após isto, vamos reiniciar os dois serviços instalados e efetuar os testes:

–Guacd

# /usr/local/etc/rc.d/guacd  restart
Stopping guacd.
Waiting for PIDS: 97576.
Removing stale pidfile.
Starting guacd.
guacd[99473]: INFO:     Guacamole proxy daemon (guacd) version 1.4.0 started

–Tomcat9

# /usr/local/etc/rc.d/tomcat9  restart
Stopping tomcat9.
Waiting for PIDS: 97590.
Starting tomcat9.

– Verifique em qual porta o tomcat9 está ouvindo, agora tem que estar na 8443:

# sockstat -4l
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
www      jsvc       4161  56 tcp4   10.0.0.100:8443       *:*
guacamole guacd     4141  4  tcp4   10.0.0.100:4822       *:*
postgres postgres   3783  6  tcp4   10.0.0.100:5432       *:*

18 - Vamos abrir pelo navegador e ver se está tudo correto:

http://SEU_IP_AQUI:8443/guacamole/#/

– Irá abrir a tela de login do serviço, igual ao passo 13:

19 - Agora vamos ativar a extensão TOTP two-factor authentication. Com ela ativaremos um segundo método de autenticação. Baixe a extensão e vamos descompactá-la dentro do diretório /usr/local/etc/guacamole-client/extensions/:

# cd /usr/local/etc/guacamole-client/extensions/
# fetch https://dlcdn.apache.org/guacamole/1.5.0/binary/guacamole-auth-totp-1.5.0.tar.gz
# tar -jxvf guacamole-auth-totp-1.5.0.tar.gz
# cd guacamole-auth-totp-1.5.0
# cp guacamole-auth-totp-1.5.0.jar /usr/local/etc/guacamole-client/extensions/

20 - Depois que você colocou o arquivo guacamole-auth-duo-1.5.0.jar dentro do diretório /usr/local/etc/guacamole-client/extensions/, vamos configurar o arquivo guacamole.properties com as configurações da extensão (não é obrigatória essa configuração, mas eu fiz no meu ambiente):

# cd /usr/local/etc/guacamole-client
# ee guacamole.properties

– Adicione as seguintes linhas no seu arquivo, lembrando que isso não é obrigatório, caso não faça isso irá funcionar normalmente:

# Configurações TOTP
totp-issuer: SALA DE COMANDO
totp-digits: 6
totp-period: 60
totp-mode: sha1

– Função das linhas de configuração:

Essas linhas de configuração se referem à extensão TOTP (Time-based One-Time Password) do Guacamole, que fornece autenticação de dois fatores baseada em tempo. As configurações especificam:

totp-issuer: o nome legível pelo usuário da entidade que emite as contas de usuário.
totp-digits: o número de dígitos que devem ser incluídos em cada código TOTP gerado. Os valores legais são 6, 7 ou 8. Por padrão, são gerados códigos de 6 dígitos.
totp-period: a duração que cada código gerado deve permanecer válido, em segundos. Por padrão, cada código permanece válido por 30 segundos.
totp-mode: o algoritmo hash que deve ser usado para gerar códigos TOTP. Os valores legais são “sha1”, “sha256” e “sha512”. Por padrão, “sha1” é usado.

21 - Após isto, reinicie o guacd e o tomcat, e tente efetuar o login:

# /usr/local/etc/rc.d/guacd restart && /usr/local/etc/rc.d/tomcat9 restart

22 - Após a primeira tela de LOGIN, irá você irá logar com seu nome de usuário e senha, e depois irá aparecer uma tela para escanear um qrcode para poder usar o token:

– Primeira tela de login padrão:

– Segunda tela de login, da extensão Duo two-factor authentication:

– Se você fez todos os passos (que são muitos), de forma correta, tudo irá funcionar corretamente:

OBS MUITO IMPORTANTE: Para usar essa extensão para autenticação, você terá que manter seu servidor no mesmo fuso horário do seu celular, com a hora correta em ambos, se não ocorrerá problemas na hora de efetuar o login:


Deixe sua contribuição

Insira seu comentário:
 
instalacao_do_apache_guacamole.txt · Última modificação: 2023/04/08 15:47 por dhiemeson.nascimento