Instalación de Zabbix HTTPS en Ubuntu Linux

Este tutorial le mostrará todos los pasos necesarios para instalar Zabbix 4 utilizando HTTPS en Ubuntu Linux.

Este tutorial utilizará Let's Encrypt - Certificados SSL / TLS gratuitos.

Este tutorial fue probado en Ubuntu 18.04.

1. Configure la Fecha y la Hora Usando NTP

Es muy importante mantener su sistema con la fecha y la hora correctas.

Establecer la zona horaria correcta.

# dpkg-reconfigure tzdata

Instale el paquete Ntpdate y establezca la fecha y hora correctas.

# apt-get update
# apt-get install ntpdate
# ntpdate pool.ntp.br

Deshabilite el cliente NTP predeterminado de Ubuntu.

Instale el servicio NTP para mantener la fecha y la hora de la computadora actualizadas después de reiniciar.

# timedatectl set-ntp 0
# apt-get install ntp

Asegúrese de haber configurado la fecha y la hora correctas en su computadora.

# date

2. Instalar MySQL en Ubuntu Linux

Zabbix requiere un sistema de base de datos para almacenar toda su configuración.

Use el comando Ubuntu APT para instalar el servidor MySQL.

# apt-get update
# apt-get install mysql-server mysql-client

Utilice el siguiente comando para acceder a la consola de servicio MySQL.

# mysql -u root -p

En la consola MySQL, necesita realizar las siguientes tareas:

• Crear una base de datos llamada zabbix.
• Crea una cuenta de usuario MySQL llamada zabbix.
• Otorgue el control total sobre la base de datos de zabbix al usuario de zabbix.

CREATE DATABASE zabbix CHARACTER SET UTF8 COLLATE UTF8_BIN;
CREATE USER 'zabbix'@'%' IDENTIFIED BY 'kamisama123';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%';
quit;

Descargue el paquete de instalación de Zabbix para obtener las plantillas de base de datos.

# mkdir /downloads
# cd /downloads
# wget https://ufpr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz

Extraiga el paquete de instalación de Zabbix.

Importe las plantillas de la base de datos Zabbix dentro de la base de datos MySQL.

Cuando se le solicite, debe ingresar la contraseña de MySQL para el usuario de Zabbix.

# tar -zxvf zabbix-4.0.3.tar.gz
# cd zabbix-4.0.3/database/mysql/
# mysql -u zabbix -p zabbix < schema.sql
# mysql -u zabbix -p zabbix < images.sql
# mysql -u zabbix -p zabbix < data.sql

La instalación de la base de datos Zabbix se completó.

3. Instalar Apache en Ubuntu Linux

Use el comando Ubuntu APT para instalar el servidor Apache y los módulos PHP necesarios.

# apt-get install apache2 php7.2 php7.2-mysql libapache2-mod-php7.2
# apt-get install php7.2-mbstring php7.2-xml php7.2-gd
# apt-get install php7.2-curl php7.2-bcmath php7.2-ldap

Habilitar Apache mod_ssl.

Habilitar apache mod_rewrite.

Edite el archivo apache2.conf.

# a2enmod ssl
# a2enmod rewrite
# vi /etc/apache2/apache2.conf

Agregue las siguientes líneas al final de apache2.conf

<Directory /var/www/html>
AllowOverride All
</Directory>

Encuentre la ubicación del archivo de configuración de PHP en su sistema.

Editar el archivo de configuración php.ini.

# updatedb
# locate php.ini
# vi /etc/php/7.2/apache2/php.ini

Su versión de PHP puede no ser la misma que la nuestra.

La ubicación de su archivo de configuración de PHP puede no ser la misma que la nuestra.

Modifique los siguientes elementos en el archivo de configuración php.ini.

max_execution_time = 300
memory_limit = 256M
post_max_size = 32M
max_input_time = 300
date.timezone = America/Sao_Paulo

Tu zona horaria puede no ser la misma que la nuestra.

Reinicie el servidor web Apache manualmente.

# service apache2 restart
# service apache2 status

Verificar el estado del servicio de Apache.

● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Mon 2018-12-03 03:41:12 -02; 2 days ago

La instalación del servidor Apache se completó.

4. Configurando los Hosts Virtuales de Apache

Los hosts virtuales son una característica que permite que un servidor Apache ofrezca múltiples sitios web con la misma dirección IP.

Vamos a crear la infraestructura necesaria para usar la función Apache VirtualHosts.

# mkdir /websites/zabbix -p
# cd /websites/zabbix
# mkdir www logs
# chown www-data.www-data /websites -R

Nuestro sitio web se llamará zabbix.mining-pool.ninja.

Los archivos del sitio web zabbix.mining-pool.ninja deben estar dentro del directorio / websites / zabbix / www.

Los registros zabbix.mining-pool.ninja se almacenarán dentro del directorio / websites / zabbix / logs.

Alert!

Zabbix.mining-pool.ninja was used as an example!

You need to change the configuration files to reflect your Zabbix website name.

Cree un archivo de configuración de Apache Virtualhost en su sitio web de Zabbix.

# vi /etc/apache2/sites-available/zabbix.conf

Aquí está el archivo con nuestra configuración.

<VirtualHost *:80>
ServerAdmin nobody@care.com
DocumentRoot /websites/zabbix/www
ServerName zabbix.mining-pool.ninja

<Directory /websites/zabbix/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ErrorLog /websites/zabbix/logs/error.log
CustomLog /websites/zabbix/logs/access.log combined
LogLevel error
</VirtualHost>

Habilite su archivo de configuración del sitio web de Zabbix Virtualhost.

Reinicie el servicio de Apache.

# a2ensite zabbix.conf
# service apache2 restart

Terminaste la configuración de Apache VirtualHosts.

5. Configure el Registro de Dominio DNS

Acceder al GODADDY y comprar un dominio DNS.

En nuestro ejemplo, compramos el dominio llamado MINING-POOL.NINJA.

Puedes usar cualquier sitio web para comprar un dominio DNS, GoDaddy es solo mi elección personal.

Cree una entrada de DNS que apunte su sitio web de Zabbix a la computadora que ejecuta Apache.

En nuestro ejemplo, creamos una entrada de DNS que apunta ZABBIX.MINING-POOL.NINJA a la dirección IP 34.217.177.160.

Zabbix virtual host dns

Utilice el comando NSLOOKUP para probar su configuración de DNS

# apt-get update
# apt-get install dnsutils
# nslookup zabbix.mining-pool.ninja

Non-authoritative answer:
Name: zabbix.mining-pool.ninja
Address: 34.217.177.160

Has terminado la configuración del dominio DNS.

Abra su navegador e intente acceder a la versión HTTP de su sitio web.

En nuestro ejemplo, la siguiente URL se ingresó en el navegador:

• http://zabbix.mining-pool.ninja

Zabbix HTTP Virtual Host

Ahora, necesitamos instalar el certificado HTTPS gratuito.

También debemos redirigir todo el tráfico HTTP a la versión HTTPS de nuestro sitio web de Zabbix automáticamente.

6. Configure el Certificado HTTPS Gratuito en Apache

Instale los paquetes necesarios para utilizar los certificados SSL / TLS gratuitos de LET ENCRYPT en Ubuntu Linux.

# apt-get install software-properties-common
# add-apt-repository universe
# add-apt-repository ppa:certbot/certbot
# apt-get update
# apt-get install python-certbot-apache

Solicite e instale el certificado HTTPS gratuito de Apache.

# certbot --apache -d mining-pool.ninja

• Presione (A) para aceptar los Términos de servicio.
• Presione (Y) para compartir su correo electrónico y recibir boletines.
• Presione (2) para redireccionar automáticamente su sitio web HTTP a las versiones HTTPS.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): techexpert.tips@gmail.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for zabbix.mining-pool.ninja
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/zabbix-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/zabbix-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/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): 2
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/zabbix.conf to ssl vhost in /etc/apache2/sites-available/zabbix-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://zabbix.mining-pool.ninja

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=zabbix.mining-pool.ninja
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/zabbix.mining-pool.ninja/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/zabbix.mining-pool.ninja/privkey.pem
Your cert will expire on 2019-04-09. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

El sistema solicitará automáticamente el certificado gratuito.

También configurará su servidor web Apache para redirigir todo el acceso HTTP a la versión HTTPS de su sitio web.

En nuestro ejemplo, el sistema creó un archivo de configuración de host virtual de HTTPS llamado zabbix-le-ssl.conf.

Aquí está el contenido del archivo de configuración de HTTPS Virtualhost zabbix-le-ssl.conf:

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin nobody@care.com
DocumentRoot /websites/zabbix/www
ServerName zabbix.mining-pool.ninja

<Directory /websites/zabbix/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ErrorLog /websites/zabbix/logs/error.log
CustomLog /websites/zabbix/logs/access.log combined
LogLevel error

SSLCertificateFile /etc/letsencrypt/live/zabbix.mining-pool.ninja/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/zabbix.mining-pool.ninja/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

El archivo KEY contiene su clave privada de certificado y debe guardarse en un lugar seguro todo el tiempo.

El archivo de claves para mining-pool.ninja se almacenó en /etc/letsencrypt/live/zabbix.mining-pool.ninja/privkey.pem.

El sistema modifica automáticamente el archivo de configuración original de Apache Virtualhost.

Redirigirá automáticamente todas las solicitudes HTTP a la versión HTTPS de su sitio web.

Aquí está el contenido del archivo de configuración de HTTP Virtualhost original actualizado, zabbix.conf:

<VirtualHost *:80>
ServerAdmin nobody@care.com
DocumentRoot /websites/zabbix/www
ServerName zabbix.mining-pool.ninja

<Directory /websites/zabbix/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

ErrorLog /websites/zabbix/logs/error.log
CustomLog /websites/zabbix/logs/access.log combined
LogLevel error
RewriteEngine on
RewriteCond %{SERVER_NAME} =zabbix.mining-pool.ninja
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

7. Probando el Certificado HTTPS Gratuito en Apache

Se realiza toda la configuración requerida.

Es hora de probar su configuración.

Abra su navegador e intente acceder a la versión HTTP de su sitio web.

En nuestro ejemplo, la siguiente URL se ingresó en el navegador:

• http://zabbix.mining-pool.ninja

Apache redirigirá automáticamente la solicitud HTTP a la versión HTTPS de su sitio web.

Zabbix HTTPS Virtual Host

Usted terminó la configuración del certificado gratuito Apache HTTPS.

8. Instale Zabbix 4 en Ubuntu Linux

Después de finalizar la configuración de MySQL y Apache, podemos iniciar la instalación de Zabbix.

Cree la cuenta de usuario requerida para el servicio Zabbix.

# groupadd zabbix
# useradd -g zabbix -s /bin/bash zabbix

Use el comando Ubuntu APT para instalar los paquetes requeridos.

# apt-get install build-essential libmysqlclient-dev libssl-dev libsnmp-dev libevent-dev
# apt-get install libopenipmi-dev libcurl4-openssl-dev libxml2-dev libssh2-1-dev libpcre3-dev
# apt-get install libldap2-dev libiksemel-dev libcurl4-openssl-dev libgnutls28-dev

Acceda al directorio donde se descargó el paquete de instalación de Zabbix.

Compile e instale la aplicación del servidor Zabbix.

# cd /downloads/zabbix-4.0.3/
# ./configure --enable-server --enable-agent --with-mysql --with-openssl --with-net-snmp --with-openipmi --with-libcurl --with-libxml2 --with-ssh2 --with-ldap
# make
# make install

Encuentre la ubicación del archivo de configuración del servidor Zabbix en su sistema.

Edite el archivo de configuración zabbix_server.conf.

# updatedb
# locate zabbix_server.conf
# vi /usr/local/etc/zabbix_server.conf

Aquí está el archivo original, antes de nuestra configuración.

LogFile=/tmp/zabbix_server.log
DBName=zabbix
DBUser=zabbix
Timeout=4
LogSlowQueries=3000

Aquí está el nuevo archivo con nuestra configuración.

LogFile=/tmp/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=kamisama123
Timeout=4
LogSlowQueries=3000

Inicie el servidor Zabbix usando el siguiente comando.

# /usr/local/sbin/zabbix_server

Inicie la aplicación del agente Zabbix usando el siguiente comando.

# /usr/local/sbin/zabbix_agentd

¡Opcional! El paquete de instalación de Zabbix ofrece scripts de inicio de servicio.

Copie el script de inicio de Zabbix.

# cd /downloads/zabbix-4.0.3/
# cp misc/init.d/debian/* /etc/init.d/

Ahora puede usar los siguientes comandos para iniciar el servicio del servidor Zabbix.

# /etc/init.d/zabbix-server start

Ahora puede usar los siguientes comandos para detener el servicio del servidor Zabbix.

# /etc/init.d/zabbix-server stop

Mueva los archivos frontales de Zabbix dentro del directorio de la unidad raíz de Apache.

Otorgue al usuario de www-data el control total sobre el directorio de Zabbix y sus archivos.

# cd /downloads/zabbix-4.0.3/frontends
# cp php/* /websites/zabbix/www/ -R
# chown www-data.www-data /websites/zabbix/www -R

Reinicie el servicio de Apache.

# service apache2 stop
# service apache2 start

9. Configurar Zabbix en Ubuntu Linux

Abra su navegador y acceda a la versión HTTPS de su sitio web de Zabbix.

En nuestro ejemplo, la siguiente URL se ingresó en el navegador:

• https://zabbix.mining-pool.ninja

Se presentará el asistente de instalación de Zabbix.

Zabbix Installation

Verifique si todos los requisitos de Zabbix se cumplieron con éxito.

Zabbix Requirements

Ingrese la información de inicio de sesión de MySQL requerida para conectarse a la base de datos de Zabbix

Zabbix database connetion

Haga clic en el botón Siguiente.

Zabbix Agent Connection

Verifique el resumen de instalación de Zabbix.

Zabbis Installation Summary

Haga clic en el botón Finalizar para acceder a la pantalla de inicio de sesión de Zabbix.

Zabbix installation finished

En la pantalla de inicio de sesión de Zabbix, ingrese la siguiente información.

• Nombre de usuario predeterminado de Zabbix: Admin
• Contraseña predeterminada de Zabbix: zabbix

Zabbix Login

Después de un inicio de sesión exitoso, se mostrará el panel de control de Zabbix.

Zabbix Dashboard

Enhorabuena, Zabbix está instalado en su sistema.

10. Monitoriza el Servidor Zabbix

El servidor Zabbix debe poder monitorearse a sí mismo.

En el panel de control de Zabbix, acceda al menú Configuración y seleccione la opción Host.

Zabbix menu

En la parte superior derecha de la pantalla, seleccione la opción llamada: servidores Zabbix

Zabbix Server Group

Localice el servidor llamado Zabbix servidor y haga clic en la palabra DESACTIVADO.

Esto permitirá que el servidor Zabbix se monitoree a sí mismo.

Zabbix server agent disabled

El estado del servidor Zabbix pasará de DESACTIVADO a HABILITADO.

Zabbix server agent enabled

El servidor Zabbix ahora se está monitoreando a sí mismo.

11. Cómo Renovar el Certificado HTTPS Gratuito

Los certificados gratuitos SSL / TLS de LET'S ENCRYPT son válidos solo por 90 días.

El sistema crea una tarea programada para renovar automáticamente cualquier certificado dentro de los treinta días de vencimiento.

El nombre de la tarea programada es certbot y se encuentra dentro del directorio /etc/cron.d.

Aquí está el contenido del archivo /etc/cron.d/certbot:

# /etc/cron.d/certbot: crontab entries for the certbot package
#
# Upstream recommends attempting renewal twice a day
#
# Eventually, this will be an opportunity to validate certificates
# haven't been revoked, etc. Renewal will only occur if expiration
# is within 30 days.
#
# Important Note! This cronjob will NOT be executed if you are
# running systemd as your init system. If you are running systemd,
# the cronjob.timer function takes precedence over this cronjob. For
# more details, see the systemd.timer manpage, or use systemctl show
# certbot.timer.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew

Utilice el siguiente comando para simular el proceso de renovación de certificado.

# certbot renew --dry-run

Deberías ver los siguientes mensajes:

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/zabbix.mining-pool.ninja.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator apache, Installer apache
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for zabbix.mining-pool.ninja
Waiting for verification...
Cleaning up challenges

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of apache server; fullchain is
/etc/letsencrypt/live/zabbix.mining-pool.ninja/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates below have not been saved.)

Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/zabbix.mining-pool.ninja/fullchain.pem (success)
** DRY RUN: simulating 'certbot renew' close to cert expiry
** (The test certificates above have not been saved.)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.