Descubra o Apache Guacamole: a solução para acessos remotos na sua empresa

Descubra o Apache Guacamole: a solução para acessos remotos na sua empresa

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.

1yum install epel-release -y
2yum -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.

1mkdir /root/guacamole && cd /root/guacamole
3yum install ffmpeg ffmpeg-devel -y
4wget http://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-0.9.13-incubating.tar.gz
5tar -xf  guacamole-server-0.9.13-incubating.tar.gz
6cd guacamole-server-0.9.13-incubating
7./configure –with-init-dir=/etc/init.d
8make ; make install
9ldconfig

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)

1mkdir -p /var/lib/guacamole && cd /var/lib/guacamole
3ln -s /var/lib/guacamole/guacamole.war /var/lib/tomcat/webapps/
4rm -rf /usr/lib64/freerdp/guacdr.so
5ln -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.

01mkdir -p ~/guacamole/sqlauth && cd ~/guacamole/sqlauth
04tar -xf guacamole-auth-jdbc-0.9.13-incubating.tar.gz
05tar -xf guacamole-auth-ldap-0.9.13-incubating.tar.gz
07tar -xf mysql-connector-java-5.1.38.tar.gz
08mkdir -p /usr/share/tomcat/.guacamole/{extensions,lib}
09mv guacamole-auth-jdbc-0.9.13-incubating/mysql/guacamole-auth-jdbc-mysql-0.9.13-incubating.jar /usr/share/tomcat/.guacamole/extensions/
10mv mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar /usr/share/tomcat/.guacamole/lib/
11mv guacamole-auth-ldap-0.9.13-incubating/guacamole-auth-ldap-0.9.13-incubating.jar /usr/share/tomcat/.guacamole/extensions/
12systemctl 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.

01mysqladmin -u root password 4linux
02mysql -u root -p
03reate database guacdb; create user 'guacuser'@'localhost' identified by '4linux'; grant select,insert,update,delete on guacdb.* to 'guacuser'@'localhost'; flush privileges;
04quit
05cd ~/guacamole/sqlauth/guacamole-auth-jdbc-0.9.13-incubating/mysql/schema/
06cat ./*.sql | mysql -u root -p guacdb 
07mkdir -p /etc/guacamole/ && vi /etc/guacamole/guacamole.properties
08 
09#### Arquivo guacamole.properties #####
10### MySQL properties
11mysql-hostname: localhost
12mysql-port: 3306
13mysql-database: guacdb
14mysql-username: guacuser
15mysql-password: 4linux
16 
17### Additional settings
18mysql-default-max-connections-per-user: 0
19mysql-default-max-group-connections-per-user: 0
20 
21### LDAP ###
22ldap-hostname:ldap.suaempresa.com.br
23ldap-port:389
24ldap-search-bind-dn:cn=construtor,dc=suaempresa,dc=com,dc=br
25ldap-search-bind-password:SENHALDAP
26ldap-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.

1ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat/.guacamole/
2systemctl enable tomcat.service && systemctl enable mariadb.service && chkconfig guacd on
3 
4#### Trocando a senha do usuario admin do TomCat ####
5vim /etc/tomcat/tomcat-users.xml
6* 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).

1vino-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.]

1guacenc /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.

01yum install nginx -y
02systemctl enable nginx ; systemctl start nginx
03vim /etc/nginx/conf.d/guacamole.conf
04### arquivo de configuração ###
05server {
06    server_name remote.suaempresa.com.br;
07location / {
08    proxy_pass       http://localhost:8080/guacamole/;
09}
10}
11systemctl restart nginx
Anterior Desvendando o DevOps: Entenda a Integração, Entrega e Implantação Contínua
Próxima Como automatizar alterações no banco de dados com Phinx e DevOps

About author

André Ferreira
André Ferreira 2 posts

André Luis Ferreira dos Santos atua como Analista de Infraestrutura Linux e soluções FOSS (Free and Open Source Software) com foco em DevOps e gerencia de configurações, cursa Analise e Desenvolvimento de Sistemas no Centro Universitário IBTA. Detém expertise como instrutor de cursos voltados ao Sistema Operacional Linux, possui Certificação Zabbix, VSTP (VMWare) e LPIC2

View all posts by this author →

Você pode gostar também

Desenvolvimento

Domine o Vim: o editor de texto essencial para Sysadmins Linux

Para um Sysadmin Linux, possuir domínio de editores de texto via linha de comando é imprescindível. Constantemente temos a necessidade de alterar arquivos, visualizar  o contéudo, abrir mais de um

Infraestrutura TI

Guia passo a passo para configurar o FreeIPA em CentOS e Ubuntu

Este post é o Segundo de uma série de posts sobre o FreeIPA. Se ainda não leu a Parte #1, onde instalamos e configuramos o servidor do FreeIPA , é

Infraestrutura TI

Guia prático: Como criar grupos e aplicar regras de política com SUDO no FreeIPA

Este é o terceiro post de uma série de publicações sobre o FreeIPA. Até aqui vimos em outros posts como subir um servidor IPA e também seus clientes, como criar