Установка Zabbix HTTPS в Ubuntu Linux

Этот туториал покажет вам все шаги, необходимые для установки Zabbix 4 с использованием HTTPS в Ubuntu Linux.

В этом руководстве будет использоваться Let's Encrypt - бесплатные сертификаты SSL / TLS.

Этот учебник был протестирован на Ubuntu 18.04.

1. Настройте дату и время, используя NTP

Очень важно поддерживать правильную дату и время в вашей системе.

Установите правильный часовой пояс.

# dpkg-reconfigure tzdata

Установите пакет Ntpdate и установите правильную дату и время.

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

Отключите UTP-клиента по умолчанию Ubuntu.

Установите службу NTP, чтобы обновлять дату и время компьютера после перезагрузки.

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

Убедитесь, что на вашем компьютере установлены правильные дата и время.

# date

2. Установите MySQL на Ubuntu Linux

Zabbix требует системы баз данных для хранения всей своей конфигурации.

Используйте команду Ubuntu APT для установки сервера MySQL.

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

Используйте следующую команду для доступа к служебной консоли MySQL.

# mysql -u root -p

На консоли MySQL вам необходимо выполнить следующие задачи:

• Создайте базу данных с именем zabbix.
• Создайте учетную запись пользователя MySQL с именем zabbix.
• Предоставить полный контроль над базой данных zabbix пользователю zabbix.

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

Загрузите установочный пакет Zabbix, чтобы получить шаблоны базы данных.

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

Распакуйте установочный пакет Zabbix.

Импортируйте шаблоны базы данных Zabbix в базу данных MySQL.

Когда вас спросят, вам нужно ввести пароль MySQL для пользователя 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

Установка базы данных Zabbix была завершена.

3. Установите Apache в Ubuntu Linux

Используйте команду Ubuntu APT для установки сервера Apache и необходимых модулей PHP.

# 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

Включить Apache mod_ssl.

Включить Apache mod_rewrite.

Отредактируйте файл apache2.conf.

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

Добавьте следующие строки в конце apache2.conf

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

Найдите расположение файла конфигурации PHP в вашей системе.

Отредактируйте файл конфигурации php.ini.

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

Ваша версия PHP может отличаться от нашей.

Ваше местоположение файла конфигурации PHP может не совпадать с нашим.

Измените следующие элементы в файле конфигурации php.ini.

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

Ваш часовой пояс может отличаться от нашего.

Перезапустите веб-сервер Apache вручную.

# service apache2 restart
# service apache2 status

Проверьте состояние службы 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

Установка сервера Apache была завершена.

4. Настройка виртуальных хостов Apache

Виртуальные хосты, если функция, которая позволяет одному серверу Apache предлагать несколько веб-сайтов с одним и тем же IP-адресом

Давайте создадим необходимую инфраструктуру для использования функции Apache VirtualHosts.

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

Наш сайт будет называться zabbix.mining-pool.ninja.

Файлы веб-сайта zabbix.mining-pool.ninja должны находиться в каталоге / sites / zabbix / www.

Журналы zabbix.mining-pool.ninja будут храниться в каталоге / sites / 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.

Создайте файл конфигурации Apache Virtualhost на своем веб-сайте Zabbix.

# vi /etc/apache2/sites-available/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
</VirtualHost>

Включите файл конфигурации вашего сайта Zabbix Virtualhost.

Перезапустите сервис Apache.

# a2ensite zabbix.conf
# service apache2 restart

Вы завершили настройку Apache VirtualHosts.

5. Настройте реестр домена DNS

Доступ к GODADDY и купить домен DNS.

В нашем примере мы приобретаем домен с именем MINING-POOL.NINJA.

Вы можете использовать любой сайт для покупки домена DNS, GoDaddy - это мой личный выбор.

Создайте запись DNS, указывающую ваш веб-сайт Zabbix на компьютер под управлением Apache.

В нашем примере мы создали запись DNS, указывающую ZABBIX.MINING-POOL.NINJA на IP-адрес 34.217.177.160.

Zabbix virtual host dns

Используйте команду NSLOOKUP для проверки вашей конфигурации 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

Вы завершили настройку домена DNS.

Откройте браузер и попробуйте получить доступ к HTTP-версии вашего сайта.

В нашем примере в браузере был введен следующий URL:

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

Zabbix HTTP Virtual Host

Теперь нам нужно установить бесплатный сертификат HTTPS.

Нам также необходимо автоматически перенаправить весь HTTP-трафик на HTTPS-версию нашего веб-сайта Zabbix.

6. Настройте бесплатный сертификат HTTPS на Apache

Установите необходимые пакеты для использования LET'S ENCRYPT Free SSL / TLS Certificates в 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

Запросите и установите бесплатный HTTPS-сертификат Apache.

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

• Нажмите (A), чтобы согласиться с Условиями обслуживания.
• Нажмите (Y), чтобы поделиться своей электронной почтой и получать информационные бюллетени.
• Нажмите (2), чтобы автоматически перенаправить ваш веб-сайт HTTP на версии 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

Система автоматически запросит бесплатный сертификат.

Он также настроит ваш веб-сервер Apache для перенаправления всего HTTP-доступа к HTTPS-версии вашего веб-сайта.

В нашем примере система создала файл конфигурации HTTPS Virtualhost с именем zabbix-le-ssl.conf.

Вот содержимое файла конфигурации 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>

Файл KEY содержит ваш закрытый ключ сертификата и должен постоянно храниться в безопасном месте.

Файл ключа для mining-pool.ninja хранится по адресу /etc/letsencrypt/live/zabbix.mining-pool.ninja/privkey.pem

Система автоматически изменяет исходный файл конфигурации Apache Virtualhost.

Он автоматически перенаправит все HTTP-запросы в HTTPS-версию вашего сайта.

Вот содержимое обновленного исходного файла конфигурации HTTP Virtualhost, 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. Тестирование бесплатного сертификата HTTPS на Apache

Все необходимые настройки выполнены.

Настало время протестировать вашу конфигурацию.

Откройте браузер и попробуйте получить доступ к HTTP-версии вашего сайта.

В нашем примере в браузере был введен следующий URL:

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

Apache автоматически перенаправит HTTP-запрос на HTTPS-версию вашего сайта.

Zabbix HTTPS Virtual Host

Вы завершили настройку бесплатного сертификата Apache HTTPS.

8. Установите Zabbix 4 в Ubuntu Linux

Закончив настройку MySQL и Apache, мы можем начать установку Zabbix.

Создайте необходимую учетную запись пользователя для сервиса Zabbix.

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

Используйте команду Ubuntu APT для установки необходимых пакетов.

# 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

Откройте каталог, в который был загружен установочный пакет Zabbix.

Скомпилируйте и установите приложение 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

Найдите расположение файла конфигурации Zabbix сервера в вашей системе.

Отредактируйте файл конфигурации zabbix_server.conf.

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

Вот оригинальный файл, перед нашей конфигурацией.

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

Вот новый файл с нашей конфигурацией.

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

Запустите Zabbix сервер, используя следующую команду.

# /usr/local/sbin/zabbix_server

Запустите приложение агента Zabbix с помощью следующей команды.

# /usr/local/sbin/zabbix_agentd

Необязательный! Установочный пакет Zabbix предлагает сценарии запуска службы.

Скопируйте скрипт запуска Zabbix.

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

Теперь вы можете использовать следующие команды для запуска службы Zabbix сервера.

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

Теперь вы можете использовать следующие команды, чтобы остановить службу Zabbix сервера.

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

Переместите файлы внешнего интерфейса Zabbix в каталог корневого диска Apache.

Предоставьте пользователю www-data полный контроль над каталогом Zabbix и его файлами.

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

Перезапустите сервис Apache.

# service apache2 stop
# service apache2 start

9. Настройте Zabbix в Ubuntu Linux

Откройте браузер и получите доступ к HTTPS-версии вашего сайта Zabbix.

В нашем примере в браузере был введен следующий URL:

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

Будет представлен мастер установки Zabbix.

Zabbix Installation

Убедитесь, что все требования Zabbix были успешно выполнены.

Zabbix Requirements

Введите информацию для входа в MySQL, необходимую для подключения к базе данных Zabbix

Zabbix database connetion

Нажмите на кнопку Далее.

Zabbix Agent Connection

Проверьте сводную информацию об установке Zabbix.

Zabbis Installation Summary

Нажмите на кнопку Готово, чтобы получить доступ к экрану входа Zabbix.

Zabbix installation finished

На экране входа в Zabbix введите следующую информацию.

• Zabbix имя пользователя по умолчанию: Admin
• Zabbix пароль по умолчанию: zabbix

Zabbix Login

После успешного входа в систему будет отображаться панель управления Zabbix.

Zabbix Dashboard

Поздравляем, Zabbix установлен в вашей системе.

10. Контролировать Zabbix сервер

Сервер Zabbix должен иметь возможность контролировать себя.

На панели инструментов Zabbix войдите в меню «Конфигурация» и выберите опцию «Хост».

Zabbix menu

В правом верхнем углу экрана выберите опцию с именем: Zabbix серверы

Zabbix Server Group

Найдите хост с именем Zabbix server и нажмите на слово DISABLED.

Это позволит Zabbix серверу контролировать себя.

Zabbix server agent disabled

Состояние сервера Zabbix изменится с ОТКЛЮЧЕНО на ВКЛЮЧЕНО.

Zabbix server agent enabled

Сервер Zabbix теперь контролирует себя.

11. Как продлить бесплатный сертификат HTTPS

LET'S ENCRYPT Бесплатные сертификаты SSL / TLS действительны только в течение 90 дней.

Система создает запланированное задание для автоматического продления любого сертификата в течение тридцати дней после истечения срока действия.

Имя запланированной задачи - certbot, и оно находится в каталоге /etc/cron.d.

Вот содержимое файла /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

Используйте следующую команду для имитации процесса обновления сертификата.

# certbot renew --dry-run

Вы должны увидеть следующие сообщения:

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.