Zabbix 6.4 インストールと管理画面のSSL設定メモ

Zabbix
Zabbix
スポンサーリンク

2023年3月6日 Zabbix 6.4 がリリース されました。約7ヶ月ぶりのバージョンアップです。Zabbix 6.4 では、新しいメニューレイアウト、LDAP/SAMLユーザーの JIT (ジャストインタイム) ユーザープロビジョニング、Zabbixプロキシのバージョン互換性の改善など、魅力的な機能がたくさん追加されています。そこで今回は、Zabbix 6.4 インストール手順と、Zabbix管理画面(フロントエンド)の SSL設定手順をまとめてみました。

Zabbix 6.4 はポイントリリース

Zabbix 6.4 は、ポイントリリースのため、次バージョンの 7.0 がリリースされるまでの期間のみサポートされるのが特徴です。もし長く同じバージョンを使いたい場合は、長期サポート(LTS)の Zabbix 6.0 を利用することをオススメします。

参考資料:Zabbix サポート期間とリリースポリシー | Zabbixオフィシャル日本語サイト

Zabbix 6.4 の新機能と変更点

Zabbix 6.4 の新機能は以下の公式ドキュメントをご参照ください。

What's new in Zabbix 6.4
5 What's new in Zabbix 6.4.0 | Zabbix Documentation 6.4

Zabbix 6.4 の重大な変更

Zabbix 6.4 には重大な変更が3点あります。

MySQL 8.0.30 以上が必須

Zabbix 6.4 では、MySQL 8.0.30 未満のバージョンはサポートされなくなりました。

libssh 0.9.0 以上が必須

Zabbix 6.4 では、最低限必要な libssh のバージョンが 0.6.0 から 0.9.0 に引き上げられました。

RHEL系のサーバーOSでは、以下のコマンドで libssh のバージョンを確認できます。

sudo dnf info libssh

インストール済みパッケージ
名前         : libssh
バージョン   : 0.9.6
(略)

SLES 15 は SP4 以上が必須

サーバーOSが SLES(SUSE Linux Enterprise Server)15 の場合、サポートされるサービスパックの最小バージョンは SP4 になりました。

サーバーOSの選定(RHEL系)

Zabbixサーバーを RHEL(Red Hat Enterprise Linux)系のサーバーOSにインストールする場合は、標準で PHP 8.0 がサポートされている以下の RHEL9系のサーバーOSを選定することをオススメします。

  • RHEL 9
  • AlmaLinux OS 9(RHELクローン)
  • Rocky Linux 9(RHELクローン)

今回は、AlmaLinux OS 9 に Zabbix 6.4 をインストールした時の手順になりますが、RHEL 9 や Rocky Linux 9 など RHEL系のサーバーOSであれば同様の手順でインストールおよび設定ができると思います。

MySQL 8.0 のインストールと設定

Zabbix 6.4 のインストールの前に、下準備として MySQL 8.0 をインストールして設定しておきましょう。

MySQL 8.0 のインストール

sudo dnf -y install mysql
sudo dnf -y install mysql-server

MySQL のバージョンが 8.0.30 以上であることを確認してください。

sudo dnf info mysql-server

インストール済みパッケージ
名前         : mysql-server
バージョン   : 8.0.30

デフォルト状態では MySQLのログの出力時間が UTC(協定世界時)になるため、MySQLの設定ファイルの最後の行に以下を追加します。(気にならなければそのままで構いません)
sudo vi /etc/my.cnf.d/mysql-server.cnf

log_timestamps=SYSTEM

MySQLの起動と自動起動設定

sudo systemctl enable --now mysqld

mysql_secure_installation の実行

初期状態では、rootユーザーがパスワードなしで MySQLに接続できるようになっていますのでパスワードを設定しておきます。

mysql_secure_installation コマンドを実行すると、root ユーザーのパスワードを変更し、不要なユーザーやDBも削除してくれます。パスワードは、8文字以上で英数大文字小文字と記号が含まれていないとポリシー違反で弾かれてしまいますので注意です。パスワードポリシーを変更したい場合は「--use-default」オプションなしで実行してください。

mysql_secure_installation --use-default
 
(略)
Please set the password for root here.
 
New password: <新しいパスワード>
 
Re-enter new password: <新しいパスワード>
(略)
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
(不要なユーザーやDBを削除)
All done!

Zabbix 6.4 のインストール

本題の Zabbix 6.4 のインストールです。

Zabbix リポジトリの登録

RHEL系のサーバーOSでよく利用されている EPELリポジトリが登録されている場合は、EPELリポジトリから Zabbix をインストールしないように Zabbix 関連のパッケージを除外しておきます。[epel] セクションの最後あたりに「excludepkgs=zabbix*」を追加してください。

sudo vi /etc/yum.repos.d/epel.repo

[epel]
(略)
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
---(以下を追加)-----------------
excludepkgs=zabbix*

Zabbix 6.4 のリポジトリを登録します。

sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm

Zabbix のインストール

Zabbix のインストールの前に、パッケージのキャッシュを削除しておきます。

sudo dnf clean all

Zabbix 6.4 関連のパッケージをインストールします。Zabbix管理画面を日本語で使う場合は zabbix-web-japanese もインストールします。動作確認用に zabbix-get もインストールしておきましょう。

sudo dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf
sudo dnf -y install zabbix-sql-scripts
sudo dnf -y install zabbix-selinux-policy
sudo dnf -y install zabbix-agent
sudo dnf -y install zabbix-web-japanese
sudo dnf -y install zabbix-get

参考資料:Download and install Zabbix

Zabbix データベースとユーザーの作成

MySQLに、Zabbix用のデータベース「zabbix」と、ユーザー「zabbix」を作成します。

mysql -u root -p
Enter password: ←(MySQLのユーザー「root」のパスワードを入力)
 
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by '<パスワード>';
grant all on zabbix.* to zabbix@localhost;

次のインポートの下準備として、SUPER権限が無くても関数を作成できるように「log_bin_trust_function_creators = 1」を設定してから MySQLとの接続を終了します。

set global log_bin_trust_function_creators = 1;
quit;

Zabbix 用のデータベーススキーマとデータをインポート(時間がかかります)

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -u zabbix -p zabbix
 
Enter password: ←(MySQLのユーザー「zabbix」のパスワードを入力)

インポートが終わったら「log_bin_trust_function_creators = 0」に戻しておきましょう。

mysql -u root -p
Enter password: ←(MySQLのユーザー「root」のパスワードを入力)
 
set global log_bin_trust_function_creators = 0;
quit;

SELinux の設定

SELinux を有効にしている場合は、以下のコマンドを実行してポリシーを追加します。

sudo setsebool -P httpd_can_connect_zabbix on
sudo setsebool -P httpd_can_network_connect_db on

Zabbix サーバーの設定と起動

Zabbix サーバーの設定ファイルに、先ほど作成した MySQLのユーザー「zabbix」のパスワードを登録します。

sudo vi /etc/zabbix/zabbix_server.conf

# DBPassword=

DBPassword=<パスワード>

Zabbix サーバーの自動起動設定

sudo systemctl enable zabbix-server

Zabbix サーバーの起動

sudo systemctl start zabbix-server

Zabbix サーバーが起動していることを確認します。

sudo systemctl status zabbix-server

 zabbix-server.service - Zabbix Server
     Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
     Active: active (running) since Thu 2023-03-16 06:26:00 JST; 4s ago
    Process: 3444 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
   Main PID: 3446 (zabbix_server)
(略)

Apache httpd(SSL)の設定と起動

Zabbix 公式ドキュメントのベストプラクティスでは、Zabbixの管理画面(フロントエンドと呼ばれます)の SSL設定が推奨されていますので、Apache httpd および SSLの設定を行います。

Best practices for secure Zabbix setup | Zabbix Documentation 6.4

今回の設定手順では、Zabbixサーバーのドメイン名を「zabbix.example.com」として設定していますが、ご自分の環境に合わせて設定してください。

Apache httpd の基本設定

オリジナルの設定ファイルをバックアップ

sudo mv -i /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org

・設定ファイルを作成します。
sudo vi /etc/httpd/conf/httpd.conf

自己署名の SSLサーバー証明書の作成

今回は自己署名の SSLサーバー証明書で設定を行いますが、可能であれば Let's Encrypt など、正規の認証局が発行した SSLサーバー証明書を使うことをオススメします。

関連記事:Let's Encrypt サーバー証明書の取得と自動更新設定メモ

秘密鍵の作成

openssl ecparam -name prime256v1 -genkey -out server.key

CSR(証明書署名要求)の作成(入力するのは Country Name と Common Name の2箇所だけです)

openssl req -new -key server.key > server.csr
 
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:<空エンター>
Locality Name (eg, city) [Default City]:<空エンター>
Organization Name (eg, company) [Default Company Ltd]:<空エンター>
Organizational Unit Name (eg, section) []:<空エンター>
Common Name (eg, your name or your server's hostname) []:zabbix.example.com
Email Address []:<空エンター>
 
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:<空エンター>
An optional company name []:<空エンター>

SSLサーバー証明書の作成(有効期限30年)

openssl x509 -days 10950 -req -signkey server.key < server.csr > server.crt

秘密鍵とSSLサーバー証明書を移動

sudo mv -i server.key /etc/pki/tls/private/
sudo mv -i server.crt /etc/pki/tls/certs/

パーミッションを変更

sudo chmod 600 /etc/pki/tls/private/server.key
sudo chmod 600 /etc/pki/tls/certs/server.crt

SELinux を有効にしている場合は、秘密鍵とSSLサーバー証明書に正しいセキュリティコンテキストをつけておきましょう。(Apache httpd 起動時にエラーが発生することがあります)

restorecon /etc/pki/tls/private/server.key
restorecon /etc/pki/tls/certs/server.crt

CSRファイルを削除

rm server.csr

SSL の設定

Apache httpd の SSLモジュールをインストールします。

sudo dnf -y install mod_ssl

オリジナルのSSL設定ファイルをバックアッップします

sudo mv -i /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.org

SSL設定ファイルを作成します。
sudo vi /etc/httpd/conf.d/ssl.conf

Apache httpd の自動起動を設定し起動ます。

sudo systemctl enable --now httpd

インデックスファイルの配置

今回の設定手順だとドキュメントルート直下にインデックスファイルが配置されないため、テストページが表示されてしまいます。必須ではありませんがインデックスファイルを配置しておくことをオススメします。

例えば下のようなインデックスファイルを配置しておけば、https://zabbix.example.com/ → https://zabbix.example.com/zabbix/ のようにリダイレクトしてくれるので便利です。

sudo vi /var/www/html/index.php

<?php
header('Location: /zabbix/');

PHP の設定と起動

・PHPの設定
sudo vi /etc/php.ini

expose_php = On
 ↓
expose_php = Off
 
;date.timezone =
 ↓
date.timezone = 'Asia/Tokyo'

php-fpm を自動起動を設定し起動します。

sudo systemctl enable --now php-fpm

Zabbix エージェントの起動と動作確認

動作確認用に Zabbix エージェントも起動しておきます。

sudo systemctl enable --now zabbix-agent

Zabbix エージェントの動作確認(Zabbixのバージョンが表示されればOKです)

zabbix_get -s 127.0.0.1 -k agent.version
6.4.0

firewalld設定

HTTP(80/tcp) と HTTPS(443/tcp) を開けておきます。

sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --add-port=443/tcp --permanent
sudo firewall-cmd --reload

・確認
sudo firewall-cmd --list-all

public (default, active)
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client ssh
ports: 443/tcp 80/tcp ←この表示があればOK
(略)

Zabbix の初期設定

ブラウザで下記URLを開き、初期設定を開始します(ドメイン名「zabbix.example.com」はご自分の環境に読替えてください)
https://zabbix.example.com/zabbix/

今回は日本語で設定しますので Default language「Japanese(ja_JP)」を選択して(選択すると以下の表示に変わります)「次のステップ」をクリックします。

Zabbixのデフォルトの言語の選択画面

前提条件のチェックがすべて「OK」であることを確認して「次のステップ」をクリックします。

Zabbixの前提条件のチェック画面

「パスワード」欄に、MySQLのユーザー(zabbix)のパスワードを入力し「次のステップ」をクリックします。

データベースの接続設定画面

適当なサーバー名を入力、デフォルトタイムゾーン「Asia/Tokyo」を選択し、お好みのデフォルトのテーマを選択したら「次のステップ」をクリックします。

設定画面

設定した内容の最終確認です。間違えがなければ「次のステップ」をクリックします。

インストール事前準備概要の確認画面

「終了」をクリックすれば、初期設定完了です。

Webインターフェースのインストールの終了画面

ユーザーパスワードの変更

初期設定が終了すると、Zabbixのログイン画面が表示されますので、下の初期ユーザーとパスワードでログインします。

ユーザー名:Admin
パスワード:zabbix

Zabbixのログイン画面

メニュー下部の [ユーザー設定]→[プロファイル] をクリックします。

ユーザー設定のプロファイルをクリック

「パスワード変更」をクリックします。

Adminユーザー情報の設定画面

パスワードの入力欄が表示されますので、現在のパスワード(zabbix)と新しいパスワードを入力し、「更新」をクリックすればユーザーパスワードの変更完了です。(一度ログアウトされますので、新しいパスワードでログインし直してください)

Adminユーザーのパスワードを変更

初期状態でZabbixサーバー自身のホストが登録されていますので、しばらくしてから [監視データ]→[最新データ] をクリックすると、Zabbixサーバー自身の監視データを閲覧することができます。

Zabbixサーバー自身の監視データ

以上です。設定お疲れ様でした!

コメント

タイトルとURLをコピーしました