Acessando seu Zabbix via HTTPS

No Comments

E aí pessoal, tudo bem?

Neste tutorial, vou ensinar como configurar o Apache para acesso HTTPS. A instalação padrão do Zabbix Server instala o Apache (HTTPD) como dependência, então basta realizar algumas configurações para que o script que instala o certificado funcione.

Sim, o script! Vamos utilizar o Certbot, que instala um certificado gratuito da Let’s Encrypt. Esse certificado expira depois de um tempo, mas o script do Certbot tem uma opção para renová-lo automaticamente.

Neste tutorial, estou usando como exemplo um Zabbix Server, instalado em CentOS 7, hospedado na AWS (Amazon) e um domínio fictício zabbix.blogdomedeiros.com.br. Mãos a obra!

1. Criando os NATs e / ou regras necessários:

Como vocês devem saber, o protocolo HTTPS usa a porta 443, então é necessário que seu Firewall esteja direcionando essa porta para o servidor Zabbix. O script valida o domínio, então sem essa porta escutando, ele nem executa até o final. No meu caso, tive que acessar o painel de controle da AWS, selecionar EC2 no menu e depois “Security Groups”, selecionei o grupo que meu Zabbix Server faz parte e criei a regra permitindo o tráfego na porta 443:

Captura de tela de 2017-09-29 04-07-25

 2. Criando o VirtualHost no Zabbix Server:

O Certbot pede que haja um VirtualHost válido no seu Apache. É possível fazer sem essa configuração, mas ter o VirtualHost torna as coisas bem mais simples e caso você queira apontar mais de um domínio para o seu Zabbix, esse é o melhor caminho.

Acesse o terminal do seu Zabbix Server e entre na pasta conf.d do HTTPD

# cd /etc/httpd/conf.d

Edite o arquivo zabbix.conf com o editor de sua preferencia (o Blog do Medeiros sugere o saudoso “ví ai”)

# vi zabbix.conf

Adicione as tags de VirtualHost no arquivo, como no exemplo abaixo. Seu novo zabbix.conf deve ficar assim (em negrito está o novo conteúdo). Troque o conteúdo de ServerName pelo nome do seu domínio:

#
# Zabbix monitoring system php web frontend
#
<VirtualHost *:80>
ServerName zabbix.blogdomedeiros.com.br

Alias /zabbix /usr/share/zabbix

<Directory “/usr/share/zabbix”>
Options FollowSymLinks
AllowOverride None
Require all granted

<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
</IfModule>
</Directory>

<Directory “/usr/share/zabbix/conf”>
Require all denied
</Directory>

<Directory “/usr/share/zabbix/app”>
Require all denied
</Directory>

<Directory “/usr/share/zabbix/include”>
Require all denied
</Directory>

</VirtualHost>

Teste a configuração do seu HTTPD e se tiver tudo ok, siga adiante:

# httpd -t
Syntax OK

3. Baixe e execute o Certbot

Eu gosto de deixar meus executáveis na pasta /usr/bin, mas você pode salvar onde quiser. Para CentOS 6.x, você pode baixar o script (também funciona em CentOS 7 se quiser baixar o script na mão).

# cd /usr/bin

# wget https://dl.eff.org/certbot-auto

Ou se você tiver usando o CentOS 7, você pode instalar via repositório

# yum -y install yum-utils # yum-config-manager –enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
# yum -y install certbot-apache

Com o NAT da porta 443 pronto, script baixado (ou instalado) e o VirtualHost configurado no HTTPD, basta rodar o script para iniciar a instalação:

# /usr/bin/certbot-auto –apache

ou no caso do CentOS 7 instalado via repositório:

# certbot –apache

O script vai instalar algumas dependencias, você pode ir confirmando as instalações sem problema.

Logo depois, ele vai escanear os VirtualHosts configurados e vai perguntar em qual você quer instalar o certificado. Basta digitar o número do domínio correspondente, ou deixar em branco para selecionar todos os domínios:

Which names would you like to activate HTTPS for?
——————————————————————————-
1: zabbix.blogdomedeiros.com.br
——————————————————————————-
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter ‘c’ to cancel):

A próxima pergunta do script é se você quer redirecionar todas as requisições HTTP (porta 80) para HTTPS ou não. Eu recomendo selecionar a opção “No-redirect”, porque eu enfrentei um pequeno BUG do certbot com o Apache do CentOS, então vou ensinar a criar o redirect na mão!

Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for zabbix.blogdomedeiros.com.br
Waiting for verification…
Cleaning up challenges
Created an SSL vhost at /etc/httpd/conf.d/zabbix-le-ssl.conf
Deploying Certificate for zabbix.blogdomedeiros.com.br to VirtualHost /etc/httpd/conf.d/zabbix-le-ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
——————————————————————————-
1: No redirect – Make no further changes to the webserver configuration.
2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel): 1

4. Ajustando as configurações do HTTPD

O Certbot cria, dentro da pasta /etc/httpd/conf.d, um segundo arquivo conf, com configurações do certificado. Esse arquivo conflita com o ssl.conf, que é copiado para a mesma pasta quando as dependências do Certbot são instaladas. Então, alguns passos são necessários:

Edite o arquivo /etc/httpd/conf.d/ssl.conf e comente a linha <VirtualHost _default_:443> e TODAS AS OUTRAS ABAIXO DELA. Não deixe faltar nenhuma, senão o HTTPD não inicia.

Agora edite o arquivo zabbix-le-ssl.conf, também criado com o Certbot e apague as TAGs que chamam o módulo mod_ssl. Geralmente é a primeira e a última linha do arquivo. Você DEVE APAGAR as linhas:

<IfModule mod_ssl.c>
</IfModule>

Novamente testamos as configurações do nosso HTTPD e se a sintaxe estiver ok, prosseguimos!

Reinicie seu HTTPD

# service httpd restart

E acesse a URL do seu site utilizando HTTPS em vez do HTTP. Você deve receber o HTTPS verdinho no navegador!

5. Criando o redirecionamento HTTPS

Com tudo funcionando, vamos configurar o apache para redirecionar as chamadas HTTP para HTTPS. Dessa forma, garantimos que todo acesso será seguro.

Edite o arquivo /etc/httpd/conf.d/zabbix.conf e antes da TAG de fechamento </VirtualHost>, adicione o seguinte conteúdo (troque o zabbix.blogdomedeiros.com.br pelo seu domínio, claro):

RewriteEngine on
RewriteCond %{SERVER_NAME} =zabbix.blogdomedeiros.com.br
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [L,NE,R=permanent]

Novamente valide as configs do HTTPD e se tudo tiver certo, reinicie o serviço novamente.

Agora acesse seu Zabbix, colocando http mesmo e veja que ele automaticamente muda a URL para HTTPS.

6. Configurando a renovação do certificado

O Certbot tem a opção renew para renovar automaticamente o certificado. Ele verifica a validade do mesmo antes de renovar, então não tem perigo se você colocar a renovação para ser feita uma vez por semana. Abra seu cron e adicione a seguinte linha:

# crontab -e

Adicione a seguinte linha:

0 22 * * 5 /usr/bin/certbot-auto renew > /var/log/certbot/certbot_renew.log

Essa linha vai rodar o script com o parâmetro renew, todas as sextas-feiras ás 22 horas (mude como quiser). Além disso, vai salvar o resultado do comando no arquivo /var/log/certbot/certbot_renew.log caso você queira dar uma conferida.

Para que o log funcione, crie a pasta e o arquivo:

# mkdir -p /var/log/certbot
# touch /var/log/certbot/certbot_renew.log

Seu Zabbix agora é acessado de forma segura, utilizando HTTPS:

Captura de tela de 2017-09-29 04-56-22

Espero que tenham gostado. Fico no aguardo de sugestões para o próximo post!

See ya! =D

Profissional com mais de 10 anos de experiência em redes, infra estrutura, ambientes Windows e Linux. Atualmente trabalha com tecnologias open source para monitoramento, backup, virtualização e segurança da informação.

Sobre o blog M2 Networks

Esse blog é mantido para ajudar profissionais de TI e clientes que querem conhecer melhor as ferramentas utilizadas pela M2 Networks.

Consulte-nos

Gostou do artigo e quer saber mais como podemos ajudar a manter a tecnologia alinhada ao seu negócio? Entre em contato e solicite a presença de um especialista.

Assine nossa newsletter

Mais artigos

Todos os posts