Acessos remoto centralizado com Apache Guacamole

Acessos remoto centralizado com Apache Guacamole

Neste post falo sobre uma ferramenta bastante interessante do projeto Apache chamado Guacamole que irá resolver problemas de acessos remotos a servidores em sua empresa. É uma mão na roda. Descubra-a.

Você já pensou que para acessar uma maquina remotamente em sua empresa ela não dependesse exclusivamente de acesso a internet? Já pensou em centralizar os acessos as maquinas remotas de sua empresa em uma única ferramenta e ainda gravar as sessões remotas em vídeos para a qualquer moimento auditar os acessos e alterações? Pois é o pessoal do Apache Guacamole pensaram e fizeram!

Principais vantagens

  • Acesso centralizado: permite acessar qualquer máquina remotamente através de um único servidor exposto para internet e criar uma independência de recursos dos analistas já que o acesso pode partir que qualquer maquina com um navegador instalado.
  • Auditoria doa acessos:  todos os acessos são gravados em vídeos para que possam qualquer modificação feita em um servidor possa ser auditada facilmente.  (feature da versão 9.13)

acessos

 

Faça a instalação

Em nossa instalação usaremos as seguintes ferramentas em suas seguintes versões:

  • Sistema Operacional: Centos 7.2.1511
  • Versão da aplicação: Guacamole 0.9.13
  • Versão do Tomcart: 7.0.76.0
  • Versão do MySQL: 5.1
  • Versão do Nginx: 1.12

Vamos começar com a instalação de tudo o que precisaremos, como dependências e outras aplicações como nginx e mariadb.

yum install epel-release -y
yum -y install cairo-devel freerdp-devel gcc java-1.8.0-openjdk.x86_64 libguac libguac-client-rdp libguac-client-ssh libguac-client-vnc libjpeg-turbo-devel libpng-devel libssh2-devel libtelnet-devel libvncserver-devel libvorbis-devel libwebp-devel openssl-devel pango-devel pulseaudio-libs-devel terminus-fonts tomcat tomcat-admin-webapps tomcat-webapps uuid-devel vim wget epel-release libtelnet libtelnet-devel  install mariadb mariadb-server  -y

Após a instalação de todas as dependências vamos preparar o ambiente para a compilação do Guacamole incubating e a instalação do ffmpeg.

mkdir /root/guacamole && cd /root/guacamole
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm 
yum install ffmpeg ffmpeg-devel -y
wget http://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-0.9.13-incubating.tar.gz
tar -xf  guacamole-server-0.9.13-incubating.tar.gz
cd guacamole-server-0.9.13-incubating
./configure –with-init-dir=/etc/init.d
make ; make install
ldconfig

acessos

Configure a aplicação

Efetue o download do arquivo .war e disponibilize em seu servidor de aplicações Java (em nosso cenário utilizamos o TomCat 7)

mkdir -p /var/lib/guacamole && cd /var/lib/guacamole
wget http://sourceforge.net/projects/guacamole/files/current/binary/guacamole-0.9.13-incubating.war -O guacamole.war
ln -s /var/lib/guacamole/guacamole.war /var/lib/tomcat/webapps/
rm -rf /usr/lib64/freerdp/guacdr.so
ln -s /usr/local/lib/freerdp/guacdr.so /usr/lib64/freerdp/

Configurando o mysql-connector e auth-ldap.

Vamos efetuar o download e configuração do mysql-connector-java e guacamole-auth-jdbc.

mkdir -p ~/guacamole/sqlauth && cd ~/guacamole/sqlauth
wget http://sourceforge.net/projects/guacamole/files/current/extensions/guacamole-auth-jdbc-0.9.13-incubating.tar.gz
wget https://sourceforge.net/projects/guacamole/files/current/extensions/guacamole-auth-ldap-0.9.13-incubating.tar.gz/download
tar -xf guacamole-auth-jdbc-0.9.13-incubating.tar.gz
tar -xf guacamole-auth-ldap-0.9.13-incubating.tar.gz
wget http://dev.mysql.com/get/Downloads/Connector/j/mysql-connector-java-5.1.38.tar.gz
tar -xf mysql-connector-java-5.1.38.tar.gz
mkdir -p /usr/share/tomcat/.guacamole/{extensions,lib}
mv guacamole-auth-jdbc-0.9.13-incubating/mysql/guacamole-auth-jdbc-mysql-0.9.13-incubating.jar /usr/share/tomcat/.guacamole/extensions/
mv mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar /usr/share/tomcat/.guacamole/lib/
mv guacamole-auth-ldap-0.9.13-incubating/guacamole-auth-ldap-0.9.13-incubating.jar /usr/share/tomcat/.guacamole/extensions/
systemctl restart mariadb.service

A base de dados

Vamos iniciar criação da base de dados e sua carga inicial, aproveitaremos para configurar a senha do root do mysql.

mysqladmin -u root password 4linux
mysql -u root -p
reate database guacdb; create user 'guacuser'@'localhost' identified by '4linux'; grant select,insert,update,delete on guacdb.* to 'guacuser'@'localhost'; flush privileges;
quit
cd ~/guacamole/sqlauth/guacamole-auth-jdbc-0.9.13-incubating/mysql/schema/
cat ./*.sql | mysql -u root -p guacdb  
mkdir -p /etc/guacamole/ && vi /etc/guacamole/guacamole.properties

#### Arquivo guacamole.properties #####
### MySQL properties
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacdb
mysql-username: guacuser
mysql-password: 4linux

### Additional settings
mysql-default-max-connections-per-user: 0
mysql-default-max-group-connections-per-user: 0

### LDAP ###
ldap-hostname:ldap.suaempresa.com.br
ldap-port:389
ldap-search-bind-dn:cn=construtor,dc=suaempresa,dc=com,dc=br
ldap-search-bind-password:SENHALDAP
ldap-user-base-dn:cn=USERS,dc=suaempresa,dc=com,dc=br

Tendo o arquivo guacamole.properties corretamente configurando agora basta disponibilizar o mesmo dentro da pasta da aplicação.

ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat/.guacamole/ 
systemctl enable tomcat.service && systemctl enable mariadb.service && chkconfig guacd on 

#### Trocando a senha do usuario admin do TomCat #### 
vim /etc/tomcat/tomcat-users.xml 
* Na última linha do arquivo descomente e altere a senha do usuário admin no campo campo password="4linux"

Pronto agora basta verificar suas configurações de SeLinux e Firewalld para que não tenhamos nenhum tipo de impacto nesse laboratório recomendo que os mesmos sejam desabilitados.

Primeiro acesso

Para efetuar o primeiro acesso basta use as seguintes informações:

Endereço: http://IP_DO_SERVIDOR:8080/guacamole.
Usuário: guacadmin
Senha: guacadmin

acessos

Após configurar nosso servidor podemos criar os usuário de acesso, grupos e conexões. Para isso devemos acessar o menu superior localizado no lado direito da tela e clicar em Settings.

Criaremos um grupo de conexões e logo em seguida criaremos uma conexão propriamente ditas. Clique em Connections → New Group. Preencha o campo “Name” e em “Location” podemos adicionar um grupo dentro de outro formando assim subgrupos.

acessos

Criaremos dois protocolos de conexão para a mesma maquina portando usaremos o SSH e o VNC no cliente, para esta configuração clique em new connection e preencha os campos necessários, faça o mesmo para o protocolo VNC

acessos

 

O cliente VNC

Como estação cliente estamos usando o ubuntu 16.04 então basta executar o comando abaixo como o usuário que deseja iniciar a sessão do VNC (caso seja uma maquina compartilha efetuar o a configuração para cada usuário).

vino-preferences

Coloque uma senha no cliente VNC e use a mesma senha para configurar a conexão no servidor Guacamole.

acessos

Teste os acessos

No servidor guacamole clique em “home”e clique sobre a conexão que deseja iniciar aguarde a conexão e pronto, você esta conectado a maquina remota.

acessos

Para habilitar o menu lateral basta segurar as teclas CTRL + ALT + SHIFT

acessos

caso queira desconectar da maquina clique em disconnect e depois em home.

acessos

Grave as sessões em vídeo

Para gravar um sessão em video configure um caminho para gravação dentro do servidor Guacamole (em meu laboratório criei uma pasta na raiz chamada /rec), e configure o caminho e um nome para o arquivo em configurações da conexão.

acessos

Recording pach: Local onde os videos serão armazenados no servidor
Recording name: prefixo dos arquivos gerados a cada novo video ocorre um incremento no nome, exemplo: recepcao_ssh.1, recepcao_ssh.2, recepcao_ssh.3.

Os arquivos gerados precisam ser codificados (encoding) através do binário guacenc para que possam ser vistos em um player de vídeo.]

 guacenc /rec/nome_do_arquivo 

Um novo arquivo sera gerado e sua extensão sera .m4v (uma variação do formato MP4 sequence)

Configure um proxy-reverso

Validamos o funcionamento da ferramenta agora basta dar um nome amigável e tirar a porta do acesso a ferramenta para facilitar o acesso a ferramenta.

Vamos partir do pressuposto que você já criou em seu DNS uma entrada chamada remote.suaempresa.com.br.

yum install nginx -y
systemctl enable nginx ; systemctl start nginx
vim /etc/nginx/conf.d/guacamole.conf 
### arquivo de configuração ###
server {
    server_name remote.suaempresa.com.br;
location / {
    proxy_pass       http://localhost:8080/guacamole/;
}
}
systemctl restart nginx
Anterior Diferenças entre integração, entrega e implantação contínua
Próxima Migrations para aplicações PHP com Phinx

About author

André Ferreira
André Ferreira 2 posts

Analisa de infraestrutura em software livre e apaixonado por IoT, estudante de redes de computadores. Habilidade em administração de infraestrutura. Certificado Zabbix Specialit e Zabbix Professional

View all posts by this author →

Você pode gostar também

Infraestrutura 0 Comentários

Backup PITR centralizado com Barman

O backup PITR(Point-In-Time-Recovery) que é uma ferramenta que permite um arquivamento contínuo das transações ocorridas no banco, para que seja possível a recuperação de qualquer posição dos dados desde o

Infraestrutura 0 Comentários

PostgreSQL e MySQL – Os bancos de dados mais utilizados no mercado

Atualmente, existem dois bancos de dados que estão entre os mais usados no mercado. São eles: o PostgreSQL e o MySQL. Saiba mais sobre cada um deles, lendo o post!

Infraestrutura 0 Comentários

Zimbra: com remover e-mail enviado por engano

Em um dos meus projetos de zimbra recebi aquela pergunta que todo analista de T.I. já recebeu: ” Enviei e-mail errado  e foi para toda a empresa, preciso apagar este

3 Comentários

  1. Edmar
    Janeiro 17, 15:55 Reply

    Ferramenta excelente, muito bom o tutorial.

  2. thiago
    Abril 26, 12:55 Reply

    André muito bom seu tutorial, você sabe me dizer em que linguagem a guacD que é a biblioteca feita pelo pessoal do guacamole é escrita? se é C, Go? alguma outra?

    • André Ferreira
      Abril 26, 18:18 Reply

      Ola Thiago tudo bem? o GuacD não e a biblioteca a biblioteca no caso e a libguac, o GuacD e um (O principal serviço do Guacamole) deamon que atende as conexões do clientes
      A libguac é desenvolvida em C.
      Espero ter ajudado de alguma forma.

Deixe uma resposta