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.

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

Cloud

Automatização de ambientes com Rundeck

Por que automatizar seu ambiente? Nos últimos anos, a automação tem crescido como um elemento imperativo em todos os negócios. Independente da área, temos observado um notável aumento no uso

Infraestrutura TI

Linux 5.17: Novo lançamento traz melhorias e ajustes de desempenho

Linux 5.17 estável chega ao mercado com uma série de ajustes e melhorias. Confira! Esta semana foi lançada a versão estável do Linux 5.17, que apresenta uma série de melhorias

DevOps

Kompose: Ferramenta para conversão do Docker Compose para Kubernetes

Hoje, no blog da 4Linux, vamos falar sobre o Kompose: uma ferramenta que faz a conversão do Docker Compose para orquestradores de containers como o Kubernetes. O Kompose tem como