zabbix

Zabbix5.0LTSをAlmaLinux8.4, Nginx, MySQL でインストール/構築する

前提

以下の手順で AlmaLinux8.4 が構築されていることとします。(Guest Addition のインストール有無は問わない。)

AlmaLinux8.4のminimalインストール手順 with [VirtualBOX Guest Additions]
AlmaLinux を VirtualBOX へインストールする手順を紹介します...

SELinux を Permissive に変更

Zabbix は SELinux への適合は出来ていないようです。泣く泣く Permissive へ変更します。

# vi /etc/sysconfig/selinux
~~~
SELINUX=enforcing permissive

   [Esc -> :wq]

# shutdown -r now

Firewalld の設定追加

Zabbix サーバの Web UI 用の https、Zabbix エージェントから Active に受信する tcp/10051 を開放します。また、Zabbix サーバ自体が Zabbix エージェントを含み、自分で監視を行うこともできますので、Zabbix エージェント用の tcp/10050 も開放します。

# firewall-cmd --permanent --add-service=https
# firewall-cmd --permanent --add-port=10050/tcp
# firewall-cmd --permanent --add-port=10051/tcp
# firewall-cmd --reload

Zabbix の release を確認

まずは Zabbix のレポジトリを追加。

# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
# dnf clean all

必要パッケージをインストール

# dnf -y install mysql-server mysql zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-web-japanese zabbix-agent

MySQL の tcp ポートを閉じる

今回は MySQL を使うのは PHP ですが、MySQL と PHP は同一サーバ内にあるので TCP/3306 を使う必要がありません。UNIX ドメインによる socket ファイルを通じた通信を行えば、セキュリティもパフォーマンスも向上します。

TCP/3306 を閉じるため、/etc/my.cnf の最後に [mysqld] セクションとして skip-networking を追加します。

# vi /etc/my.cnf
~~~
[mysqld]
skip-networking

デフォルトでは mysqld サービス起動時に /var/lib/mysql/mysql.sock というソケットファイルができますので zabbix-server からこのソケットファイルを使って MySQL の DB 通信を行います。

MySQL の設定

systemctl enable [service name] --now で起動と自動起動を同時設定。

# systemctl enable mysqld --now
# ls -l /var/lib/mysql/mysql.sock

MySQL の初期セットアップとおよび ユーザー [zabbix@localhost] の作成、権限付与 (DB [zabbix] を自由に使える権限)。

# mysql_secure_installation
Press y|Y for Yes, any other key for No: y

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
New password: [password]
Re-enter new password:[password]

Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

# mysql -uroot -p
Enter password: [password]

mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'P@ssw0rd';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;

DB [zabbix] へひな型 sql を投入。

# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql zabbix -uzabbix -p
Enter password: P@ssw0rd

DB の状態を確認。(設定作業ではなく、ただの状態確認)

# mysql -uzabbix -p
Enter password: P@ssw0rd
mysql> show databases;
mysql> use zabbix;
mysql> show tables;
mysql> quit;

zabbix_server.conf の設定

# vi /etc/zabbix/zabbix_server.conf
~~~
DBPassword=P@ssw0rd
~~~

PHP-FPM の設定

# vi /etc/php-fpm.d/www.conf
~~~
user = apache nginx
group = apache nginx
# vi /etc/php-fpm.d/zabbix.conf
user = apache nginx
group = apache nginx
~~~
php_value[date.timezone] = Europe/Riga Asia/Tokyo
# vi /etc/php.ini
~~~
;date.timezone=
date.timezone=Asia/Tokyo  # 追記
~~~
  [Esc -> :wq]

systemctl enable [service name] --now で起動と自動起動を同時設定。

# systemctl enable php-fpm --now

Nginx の設定

自己署名証明書を作る

まず、ディレクトリを作成します。nginx側の設定を変更するのはだるいので、nginx の初期設定に合うように、/etc/pki の下に nginx/private ディレクトリを作成します。

[root@localhost ~]# cd /etc/pki
[root@localhost pki]# mkdir -p nginx/private
[root@localhost pki]# cd nginx/private

次に、openssl コマンドを使って秘密鍵 (server.key) を作成します。

[root@localhost private]# openssl genrsa -out server.key 2048

そして秘密鍵を使って CSR (server.csr) を作成します。対話形式でいくつか聞かれますが、最初の Country Name を JP にし、途中の CommonName を www.example.com に設定し、あとは空欄のまま Enter にします。(このあたりは好みの問題です。

[root@localhost private]# openssl req -new -key server.key -out ../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) []:www.example.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@localhost private]#

次に、CSR に署名をします。

一般的なケースでは、上位の認証局に CSR を送付して、その認証局の秘密鍵で署名をしてもらうのですが、だるいので自己署名にします。つまり、CSR を生成するときに使った秘密鍵を、署名用にも使うわけです。

そして署名と同時に、有効期間=365日、SANs (サブジェクト代替名 : Subject Alternative Name) = www.example.com を設定します。

最近のブラウザは CommonName を一切見ず、SANs のみをチェックするので、SANs に設定が入っていないと、証明書をインストールしていても警告が出てしまいます。

SANs を設定するには適当なテキストファイルに subjetcAltName = DNS:www.example.com と記述し、openssl の -extfile オプションでそのテキストファイルを指定します。

[root@localhost private]# cd ..
[root@localhost nginx]# vi sans.txt
subjectAltName = DNS:www.example.com

   [Esc -> :wq]

[root@localhost nginx]# openssl x509 -req -days 365 -in server.csr -signkey private/server.key -out server.crt -extfile sans.txt

nginx のzabbix 常時SSL化

# cd /etc/nginx/conf.d/
# cp -p zabbix.conf zabbix.conf_org
# vi zabbix.conf
    server {

	listen     80  443 ssl http2 default_server;
	server_name  www.example.com;

        ssl_certificate "/etc/pki/nginx/server.crt";
        ssl_certificate_key "/etc/pki/nginx/private/server.key";
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA";
        ssl_prefer_server_ciphers off;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 10m;
~~~
	[Esc -> :wq]

そして必要なディレクトリパーミッション変更を行います。

# chown -R root.nginx /var/lib/php
# chown -R nginx.nginx /etc/zabbix/web

nginx , zabbix-server , zabbix-agent を起動します。(自動起動も同時に設定)

# systemctl enable nginx zabbix-server zabbix-agent --now

Web UI へアクセスし、セットアップ

以下のスライドの通りにセットアップをしていきます。(AMP ページではスライドが見えません。通常ページへ移動。)

zabbix-almalinux-install-01
zabbix-almalinux-install-02
zabbix-almalinux-install-03
zabbix-almalinux-install-04
zabbix-almalinux-install-05
zabbix-almalinux-install-06
zabbix-almalinux-install-07
previous arrow
next arrow
zabbix-almalinux-install-01
zabbix-almalinux-install-02
zabbix-almalinux-install-03
zabbix-almalinux-install-04
zabbix-almalinux-install-05
zabbix-almalinux-install-06
zabbix-almalinux-install-07
previous arrow
next arrow

Web UI へログインします。初期状態では ID= Admin , PW= zabbix です。

Web UI の日本語化

左ペインの「User Settings」をクリックし、中央ペインで「Language」から「Japanese (ja_JP)」を選択します。もしここがグレーアウトしていたら、このページ冒頭の「glibc-langpack-ja」がインストールされていません。

そして Update ボタンをクリックすると、GUI が日本語化されます。

以上で Zabbix サーバ側のセットアップは完了です。

コメント

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