Você está na página 1de 22

Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 2

APRESENTAÇÃO
Olá!

Obrigado por acessar esta apostila produzida pela NOTO TI. Antes de começar,
gostaria de fazer uma breve apresentação para que você conheça as origens deste
projeto.

A NOTO TI surgiu na cidade de Jaraguá do Sul, Santa Catarina, em 2016, sendo


resultado da minha experiência no setor. Meu nome é Evandro José Zipf, estou há
mais de 18 anos no ramo de redes de computadores. Além disso, possuo Certificado
Zabbix Specialist e Professional, e ampla bagagem em Linux, Cloud Computing (AWS)
e Firewall.

Minha empresa fornece serviços de Tecnologia da Informação para ambientes em


Nuvem, Consultoria em Segurança e Ambiente de Monitoramento. Tudo isso com o
know-how de profissionais especializados e constantemente capacitados, prontos
para prestar atendimento dentro de altos padrões de qualidade e eficiência.

A NOTO TI entrega a seus clientes o que existe de mais moderno em monitoramento


de ambientes, permitindo o acesso deles em tempo real a várias aplicações
imprescindíveis às tomadas de decisões. E é com o mesmo propósito de excelência
que preparamos este ebook para você.

Então, vamos lá, direto ao ponto. Boa aula!

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 3

Capítulo 2 - 2.1: Zabbix Blindado

Vamos criar o certificado para o servidor e assiná-lo. Faça os comandos:

# mkdir certificado && cd certificado

# openssl req -new -nodes -text -out ca.csr -keyout ca-key.pem -subj "/CN=certificate-
authority"

1 # openssl x509 -req -in ca.csr -text -extfile /etc/ssl/openssl.cnf -extensions v3_ca -signkey
ca-key.pem -out ca-cert.pem

# openssl req -new -nodes -text -out server.csr -keyout server-key.pem -subj
"/CN=postgresql"

# openssl x509 -req -in server.csr -text -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial
-out server-cert.pem

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 4

Agora, vamos criar o certificado para o cliente.

# openssl req -new -nodes -text -out client.csr -keyout client-key.pem -subj "/CN=zabbix-
2 server"

# openssl x509 -req -in client.csr -text -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -
out client-cert.pem

Ajustando permissões:

# mkdir -p /etc/ssl/postgresql/

3 # cp ca-cert.pem server-cert.pem server-key.pem /etc/ssl/postgresql/

# chmod -R 700 /etc/ssl/postgresql

# chown -R postgres.postgres /etc/ssl/postgresql

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 5

Acesse o arquivo de configuração do PostgreSQL. Nele, precisamos fazer as seguintes


alterações:

# vim /etc/postgresql/12/main/postgresql.conf

Ativar modo SSL


ssl = on
4
Ajustar os certificados que criamos, passando o caminho completo.
ssl_cert_file = '/etc/ssl/postgresql/server-cert.pem'
ssl_key_file = '/etc/ssl/postgresql/server-key.pem'
ssl_ca_file = '/etc/ssl/postgresql/ca-cert.pem'

Salve e saia do arquivo

Editar o arquivo pg_hba.conf e adicionar a linha abaixo, que permite acessar o banco de
dados Zabbix com SSL.
5 # vim /etc/postgresql/12/main/pg_hba.conf

hostssl zabbix zabbix 127.0.0.1/32 md5 clientcert=1


nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 6

Reiniciar o serviço do PostgreSQL para ativar as configurações


6
# service postgresql restart

Verificar log em tempo real


7
# tail -f /var/log/postgresql/postgresql-12-main.log

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 7

Criar o diretório para armazenar o certificado do Zabbix


8 # mkdir /etc/ssl/certs/zabbix/
# chmod 711 /etc/ssl/certs/zabbix/

Copiando o certificado do cliente com nomes padrões e diretório correto.

9 # cp ca-cert.pem /etc/ssl/certs/zabbix/root.crt
# cp client-cert.pem /etc/ssl/certs/zabbix/postgresql.crt
# cp client-key.pem /etc/ssl/certs/zabbix/postgresql.key

Ajustar permissões para habilitar criptografia entre Frontend e Banco de dados PostgreSQL

# chown www-data.www-data /etc/ssl/certs/zabbix/root.crt


# chown www-data.www-data /etc/ssl/certs/zabbix/postgresql.crt
# chown www-data.www-data /etc/ssl/certs/zabbix/postgresql.key
10
As chaves e certificados precisam estar como somente leitura para o dono do arquivo

# chmod 400 /etc/ssl/certs/zabbix/root.crt


# chmod 400 /etc/ssl/certs/zabbix/postgresql.crt
# chmod 400 /etc/ssl/certs/zabbix/postgresql.key

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 8

Ajustar permissões para habilitar criptografia entre Frontend e Banco de dados PostgreSQL

11 # chown www-data.www-data /etc/ssl/certs/zabbix/root.crt


# chown www-data.www-data /etc/ssl/certs/zabbix/postgresql.crt
# chown www-data.www-data /etc/ssl/certs/zabbix/postgresql.key

Verificar se o certificado está ok.


12
# openssl verify -CAfile /etc/ssl/certs/zabbix/root.crt /etc/ssl/certs/zabbix/postgresql.crt

Testar se a comunicação está com SSL ao acessar o banco de dados.


13 # PGPASSWORD="zabbix" psql -h 127.0.0.1 -U zabbix zabbix

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 9

Adicionar verificação de host. Você deve colocar no nome da conexão o nome para o qual
foi gerado o certificado. Para isso, a resolução do nome da conexão precisa apontar para o
ip do banco de dados. Então, é necessário criar a resolução em /etc/hosts
14
# vim /etc/hosts

127.0.0.1 postgresql

Agora, remova o arquivo de config do Frontend, para cair novamente na tela de setup do
Zabbix e, assim, ativar a criptografia do Frontend com o banco de dados. Siga os passos:
15
# rm /etc/zabbix/web/zabbix.conf.php

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 10

Abra outra vez seu Zabbix pelo navegador; siga os passos de setup novamente, até cair
16 nesta tela de conexão do banco de dados:

Deixe com as seguintes informações:


Database host = postgresql
Database name = zabbix
User = zabbix
Senha = zabbix

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 11

TLS encryption – deixe marcado


TLS key file = /etc/ssl/certs/zabbix/postgresql.key
TLS certificate file = /etc/ssl/certs/zabbix/postgresql.crt
TLS certificate authority file = /etc/ssl/certs/zabbix/root.key
With host verification – deixe marcado

Clique em Next step e, pronto, finalizada a configuração de segurança entre Frontend e banco
de dados.

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 12

Capítulo 2 – 2.2: Frontend HTTPS


Diretório para armazenar as chaves e setando as permissões.

17 # mkdir -p /etc/apache2/ssl/private
# chmod 700 /etc/apache2/ssl/private

Gerar certificado e chave para o Frontend Apache

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout


18 /etc/apache2/ssl/private/apache-selfsigned.key -out /etc/apache2/ssl/apache-
selfsigned.crt

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 13

Editar o arquivo abaixo e adicionar as linhas

# vim.tiny /etc/apache2/sites-available/default-ssl.conf

<VirtualHost *:443>
19 DocumentRoot "/usr/share/zabbix"
ServerName 192.168.25.86:443
SSLCertificateFile /etc/apache2/ssl/apache-selfsigned.crt
SSLCertificateKeyFile /etc/apache2/ssl/private/apache-selfsigned.key
</VirtualHost>

Forçar o usuário usar HTTPS. Editar o arquivo abaixo e adicionar as linhas

# vim.tiny /etc/apache2/sites-available/000-default.conf
Redirect / https://seuip/zabbix
20 Habilitar no Apache HTTPS e ativar o módulo

# a2ensite default-ssl
# a2enmod ssl
# service apache2 restart

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 14

Editar o arquivo e deixar os parâmetros conforme abaixo:

# vim.tiny /etc/apache2/conf-available/security.conf

ServerSignature Off
ServerTokens Prod
21
Editar o arquivo e deixar os parâmetros conforme abaixo:

# vim.tiny /etc/php/7.0/apache2/php.ini

expose_php = Off

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 15

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 16

Alterar Alias também é uma boa prática de segurança

# vim /etc/apache2/conf-available/zabbix.conf
22 Acesse o arquivo de novo e altere para o nome que você escolheu
no redirect também

# vim.tiny /etc/apache2/sites-available/000-default.conf

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 17

Por padrão, sempre está zabbix.

Altere para noto ou para algum nome de sua preferência. Veja a imagem:

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 18

Salve e saia do arquivo, e reinicie o serviço do Apache:

# service apache2 restart


23 Remover arquivo index.html padrão do Apache (aquela tela de boas-vindas). Isso também
é uma boa prática.

# rm /var/www/html/index.html

Em seguida, abra o navegador com o endereço: https://seuipzabbix/noto

Atenção: Veja que agora é /noto, porque mudamos na configuração do Alias. Se


você colocou outro nome, troque aqui também.

Como o certificado não é assinado por uma empresa certificadora, é normal


aparecer esse alerta. Basta clicar no botão avançado e confirmar a exceção de
segurança.

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 19

Pronto! HTTPS habilitado no Frontend do Zabbix.

Dica: Teste se o redirect está funcionando também acessando com http sem
passar o /noto

http://ipdoseuzabbix

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 20

Capítulo 2 - 2.3: Criptografia entre Zabbix Server e Banco


de Dados

Neste capítulo, vamos criar a criptografia entre Zabbix server e banco de dados.
Siga os passos:

Acesse o diretório onde armazenamos os certificados do cliente:


# cd /etc/ssl/certs/zabbix/

Criando diretório para armazenar certificado do cliente Zabbix server


# mkdir zabbixserver

Aproveitando o certificado do Frontend para criar para o Zabbix server com outro nome

# cp postgresql.crt zabbixserver/zabbixserver.crt
24 # cp postgresql.key zabbixserver/zabbixserver.key
# cp root.crt zabbixserver/root.crt

Ajustando permissões

# chown zabbix.zabbix /etc/ssl/certs/zabbix/zabbixserver/zabbixserver.crt


# chown zabbix.zabbix /etc/ssl/certs/zabbix/zabbixserver/zabbixserver.key
# chown zabbix.zabbix /etc/ssl/certs/zabbix/zabbixserver/root.crt

# chmod 400 /etc/ssl/certs/zabbix/zabbixserver/zabbixserver.crt


# chmod 400 /etc/ssl/certs/zabbix/zabbixserver/zabbixserver.key
# chmod 400 /etc/ssl/certs/zabbix/zabbixserver/root.crt

Precisamos agora editar o arquivo do Zabbix server para fazer a configuração dos certificados.
Deixe os parâmetros conforme abaixo:

Editar o arquivo:
# vim /etc/zabbix/zabbix_server.conf

DBTLSConnect=required
DBTLSCAFile=/etc/ssl/certs/zabbix/zabbixserver/root.crt
DBTLSCertFile=/etc/ssl/certs/zabbix/zabbixserver/zabbixserver.crt
25
DBTLSKeyFile=/etc/ssl/certs/zabbix/zabbixserver/zabbixserver.key

Reinicie o Zabbix server

# service zabbix-server restart

Veja o Log para checar se a conexão funcionou normalmente

# tail -f /var/log/zabbix/zabbix_server.log

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 21

nototi.com.br
Curso Zabbix Ultimate - Capítulo 2 - Zabbix Blindado, Frontend HTTPS e Criptografia entre Zabbix Server e Banco de Dados 22

Finalizado! Conexão entre zabbix server e banco de dados está criptografada


também.

ENCERRAMENTO
A NOTO TI agradece a você por ter acessado esta apostila. E não deixe de
acompanhar também nossos canais nas mídias digitais. Fique à vontade para entrar
em contato, tirar dúvidas e conferir novos conteúdos que a NOTO TI disponibiliza
com frequência.

Abraço

Evandro José Zipf

blog.nototi.com.br/ /notomonitoramento/ youtube.com/c/NotoTI

nototi.com.br

Você também pode gostar