Raspberry Pi 4 にZABBIXをインストールする

# はじめに
Raspberry Pi 4(64bit)にZABBIXをインストールする方法の自分メモ。
これまでSDカードで運用していて、定期的なSDカードの不良で再構築を行う度に調べるのが面倒なのでまとめました。
これを機にSDカードからSSDに変更しました。
この手順は2024/01/05に実施しました。

64bit OSへのzabbixの導入はソースをダウンロード・コンパイルで実施しないとはまってしまいうまくいきませんでした。
素直に32bit OSへ導入すればよいのですが、折角なので64bitのままで挑戦し成功したので記録しておきます。
導入後にはSSL化とSAML連携を実施したので、こちらも記録しておきます。

zabbixの導入・設定は以下のzabbix documentationを参考にしています。
[zabbix documentation − 4. インストール](https://www.zabbix.com/documentation/current/jp/manual/installation "zabbix documentation − 4. インストール")

### 使用した環境
* Raspberry pi 4 model B Rev 1.2 4GB
* SDカード 8GB
　OS初期導入時のみ
* Crucial NVMe SSD 512GB
　NVMe−USB変換で接続
* 有線LAN接続

# 手順のまとめ
1． Raspberry Pi 4へのOSのインストール
2． Apache2とPHPとmariadbの導入
3． zabbixのソースのダウンロードとインストールおよび初期設定
4． zabbixの起動とサービス化
5． zabbixの初期化と動作確認
6． SAMLログイン設定
7． zabbixのSSL化
8． SAMLの暗号化

# 1． Raspberry Pi 4へのOSのインストール
Raspberry Pi 4へのOSの導入は公式の手順に従いRaspberry Pi Imagerを使いました。
起動後にアップデートを実施します。

```Bash
$ sudo apt update
$ sudo apt full-upgrade
```

SDカードでは遅いのでUSBに接続したSSDにイメージを移し、SSDで起動できるようにします。
SDカードのイメージをSD Card Copierを利用してSSDにコピーします。
コピー後、USB起動できるように設定します。

```Bash
$ sudo raspi-config
```
6 Advanced Optionsを選択
![スクリーンショット 2024-01-06 16.11.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/30d4fd96-b9f0-8e6c-9495-2ed8661f0a77.png)

A4 Boot Orderを選択
![スクリーンショット 2024-01-06 16.12.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/df5bf100-9ee8-a538-f54d-fc799df4322f.png)

B2 NVMe/USB Bootを選択
![スクリーンショット 2024-01-06 16.12.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/e4fed347-3258-bac9-3bc7-424589095a37.png)

以上でUSB接続されたSSDからOSが起動します。
以降GUIは必要ないのCLIに変更します。
```Bash
$ sudo raspi-config
```
1 System Optionsを選択
![スクリーンショット 2024-01-06 16.11.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/30d4fd96-b9f0-8e6c-9495-2ed8661f0a77.png)

B1 Consoleを選択
![スクリーンショット 2024-01-06 17.11.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/5c3d0966-1370-02c5-ab70-98f03030ba17.png)


```Bash
$ sudo reboot
```
:::note info
これ以降、OSの再導入時はRaspberry Imagerで直接SSDにイメージを導入し、ドライブをUSB接続し電源を入れればUSBから起動します。
SDカードからのコピーは必要ないです。
:::

## IPの固定化とホスト名の変更
zabbixサーバーとして運用するため固定IPで運用します。
今回は以下の設定とします。
* Hostname : zabbix.test.lab
* IP : 192.168.10.10/24
* Default Gateway : 192.168.10.1
* DNS : 192.168.10.1,9.9.9.9

```Bash
$ sudo raspi-config nonint do_hostname zabbix.test.lab
$ sudo nmcli connection modify 'Wired connection 1' ipv4.addresses 192.168.10.10/24
$ sudo nmcli connection modify 'Wired connection 1' ipv4.gateway 192.168.10.1
$ sudo nmcli connection modify 'Wired connection 1' ipv4.dns 192.168.10.1,9.9.9.9
```

有線接続名を’Wired connection 1’としています。導入後何もしていなければこの名前だと思います。
ここで念のため再起動します。

```Bash
$ sudo reboot
```

# 2． Apache2とPHPとmariadbの導入
zabbixの前提環境としてApache2、PHP、mariadbを導入します。
DBについてはこれ以外の選択肢もありますが、参考文献の多いmariadbを選択しました。
導入するモジュールは以下を参考にしました。
[zabbix documentation − 2 要件](https://www.zabbix.com/documentation/current/jp/manual/installation/requirements "zabbix documentation − 2 要件")

## Apache2の導入
aptでApache2を導入します。
```Bash
$ sudo apt install apache2
```
## PHPの導入
PHPも同様にaptで導入します。
```Bash
$ sudo apt install php
$ sudo apt install php-gd php-bcmath php-xml php-mbstring php-ldap php-mysql
$ sudo apt install php-fpm
```
## mariadbの導入
mariadbも同様です。
```Bash
$ sudo apt install mariadb-server
```
mariadbの初期設定を以下のように実施します。
```Bash
$ sudo mysql_secure_installation
```
初期設定の各質問にはすべて'Y'で回答
mariadbにアクセスできることを確認
```Bash
$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8738
Server version: 10.11.4-MariaDB-1~deb12u1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> quit;
Bye
```

# 3． zabbixのソースのダウンロードとインストールおよび初期設定
### ソースのダウンロード
以下よりzabbixのソースをダウンロードします。
[Download and install Zabbix](https://www.zabbix.com/download_sources "Download and install Zabbix")

導入時は以下で実施しています。
```bash
$ wget https://cdn.zabbix.com/zabbix/sources/stable/6.4/zabbix-6.4.10.tar.gz
$ tar xzvf zabbix-6.4.10.tar.gz
$ sudo mv zabbix-6.4.10 /usr/local/src/
```
:::note warn
リンクは最新の安定版のURLに読み替えてください。
:::
### ユーザーの作成
zabbixを稼働させるユーザーを作成します。
```bash
$ sudo addgroup --system --quiet zabbix
$ sudo adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix
```

### 必要なモジュールの導入
zabbixを以下の設定でビルドするため必要なモジールを導入します。
```bash
$ cd /usr/local/src/zabbix-6.4.10
$ ./configure --enable-server --enable-agent --enable-agent2 --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ssh2 --with-ldap
```
:::note info
--with-ldapは今のところLDAP連携の予定はないので必要ない
--enable-agentもagent2を使うことにしたので必要ないかも
agent関係は `$ sudo apt install zabbix_agent`とかで導入すればよいので必要ないかも
ということで、オプションはこんな感じでよいかと。
```bash
./configure --enable-server --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ssh2
```
:::

上記のオプションでビルドするために必要なモジュールは以下の通りです。
```bash
$ sudo apt install libpcre3-dev libevent-dev libmariadb-dev libcurl4-openssl-dev libssh2-1-dev libsnmp-dev libopenipmi-dev libxml2 libxml2-dev libldap2-dev golang gettext
```
:::note info
--with-ldap を使わないならldapのインストールも必要ない
--enable-agent2 しないなら golang も必要ない
agentについては`$ sudo apt install zabbix-agent`とか`$sudo apt install zabbix-agent2`で導入できるので、ここでビルドする必要はそもそもない。
ということで、必要なモジュールはこれくらいかと。
```bash
$ sudo apt install libpcre3-dev libevent-dev libmariadb-dev libcurl4-openssl-dev libssh2-1-dev libsnmp-dev libopenipmi-dev libxml2 libxml2-dev golang gettext
```
:::

## DBの初期化
mariadbにzabbix用にDB作成し、初期設定を実施します。
DB初期化作業は以下を参考にしました。
[1 データベースの作成](https://www.zabbix.com/documentation/current/jp/manual/appendix/install/db_scripts "1 データベースの作成")


```bash
$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8767
Server version: 10.11.4-MariaDB-1~deb12u1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database zabbix character set utf8mb4 collate utf8mb4_bin;
MariaDB [(none)]> create user 'zabbix'@'localhost' identified by 'password';
MariaDB [(none)]> grant all privileges on zabbix.* to 'zabbix'@'localhost';
MariaDB [(none)]> SET GLOBAL log_bin_trust_function_creators = 1;
MariaDB [(none)]> quit;
Bye
```
:::note warn
上記のユーザーのパスワード 'password' は適宜適切なパスワードを使用してください。
:::
作成したDBにスキーマ・イメージ・データをインポートします。
```bash
$ cd /usr/local/src/zabbix-6.4.10/database/mysql
$ cat schema.sql | mysql -u zabbix -p zabbix
$ cat images.sql | mysql -u zabbix -p zabbix
$ cat data.sql | mysql -u zabbix -p zabbix
```
log_bin_trust_function_creatorsを無効にします。
```bash
$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8767
Server version: 10.11.4-MariaDB-1~deb12u1 Debian 12

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> SET GLOBAL log_bin_trust_function_creators = 0;
MariaDB [(none)]> quit;
Bye
```

## zabbixのインストール
以下の手順でzabbixをインストールします。
```bash
$ cd /usr/local/src/zabbix-6.4.10
$ ./configure --enable-server --enable-agent --enable-agent2 --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ssh2 --with-ldap
```
:::note info
事前に必要なモジュールを導入しているのでエラーなしで上記コマンドは終了するはず。
もしエラーとなった場合は、該当する必要なモジュールを導入する。
:::
```bash
$ make
```
念のため、エラーがないことを確認。
```bash
$ sudo make install
```
## 設定ファイルの編集
zabbixサーバーとエージェントの起動の前に設定ファイルの編集を行います。

### zabbix agent
/usr/local/etc/zabbix_agentd.conf ファイルを編集します。
zabbix agent2の場合は /usr/local/etc/zabbix_agent2.conf です。

このファイルは、zabbix_agentdがインストールされているすべてのホストで設定する必要があります。
Zabbix server のIPアドレスを指定する必要があります。他のホストからの接続は拒否されます。

```bash
$ cd /usr/local/etc
$ sudo vi /usr/local/etc/zabbix_agentd.conf
```

```diff_c
- Server=127.0.0.1
+ Server=127.0.0.1,192.168.10.10,zabbix.test.lag
```
:::note info
ここ以外にもPIDファイルやログファイルの出力先の指定もした方がよいでしょう。
```bash
$ sudo mkdir /var/log/zabbix
$ sudo chown zabbix:zabbix /var/log/zabbix
$ sudo mkdir /var/run/zabbix
$ sudo chown zabbix:zabbix /var/run/zabbix
$ sudo vi /usr/local/etc/zabbix_agentd.conf
```
```diff_c
- # PidFile=/tmp/zabbix_agentd.pid
+ PidFile=/var/run/zabbix/zabbix_agentd.pid
- # LogFile=/tmp/zabbix_agentd.log
+ LogFile=/var/log/zabbix/zabbix_agentd.log
```
:::

### zabbix server

/usr/local/etc/zabbix_server.conf ファイルを編集します。 
データベース名、ユーザー名、パスワード（使用している場合）を指定する必要があります。

```bash
$ cd /usr/local/etc
$ sudo vi /usr/local/etc/zabbix_server.conf
```

```diff_c
- DBPassword=
+ DBPassword=password
```
:::note warn
上記パスワードはDB初期化時に指定した適切なパスワードに読み替えてください。
:::

:::note info
ここ以外にもPIDファイルやログファイルの出力先の指定もした方がよいでしょう。
```bash
$ sudo vi /usr/local/etc/zabbix_server.conf
```
```diff_c
- # PidFile=/tmp/zabbix_server.pid
+ PidFile=/var/run/zabbix/zabbix_server.pid
- # LogFile=/tmp/zabbix_server.log
+ LogFile=/var/log/zabbix/zabbix_server.log
```
:::



## フロントエンドへの言語の追加
利用可能な言語を確認します。
```bash
$ locale -a
```
必要な言語がリストされていない場合は`/etc/locale.gen`ファイルを開き、必要なロケールのコメントを解除します。 ZabbixはUTF-8エンコーディングを使用するため、UTF-8文字セットを使用してロケールを選択する必要があります。
```diff_c
- # en_US.UTF-8 UTF-8
+ en_US.UTF-8 UTF-8
- # ja_JP.UTF-8 UTF-8
+ ja_JP.UTF-8 UTF-8
```
その後、以下を実行します。
```bash
$ sudo locale-gen
```
ここでwebサーバーを再起動してください。

```bash
$ sudo systemctl restart apache2
```

Zabbixの翻訳ファイルを手動で生成するには以下のコマンドを実行します。
```bash
$ cd /usr/local/src/zabbix-6.4.10
$ make gettext
$ ui/locale/make_mo.sh
```
[14 フロントエンドへの言語追加](https://www.zabbix.com/documentation/current/jp/manual/appendix/install/locales "14 フロントエンドへの言語追加")


# 4． zabbixの起動とサービス化
zabbix_server を起動します。

```bash
＄ zabbix_server
```

zabbix_agentd を起動します。
```bash
$ zabbix_agentd
```

## Zabbix web interface のインストール
zabbixのUIを稼働させるために必要なファイルをコピーします。
念のため、apache2関連を再起動します。

```bash
$ sudo mkdir /var/www/html/zabbix
$ cd /usr/local/src/zabbix-6.4.10/ui
$ sudo cp -a . /var/www/html/zabbix
$ sudo chown -R zabbix:zabbix /var/www/html/zabbix
$ sudo systemctl stop apache2
$ sudo systemctl stop php8.2-fpm
$ sudo systemctl start php8.2-fpm
$ sudo systemctl start apache2
```

# 5． zabbixの初期化と動作確認
zabbixが稼働できているかweb interfaceにアクセスして確認します。
```http
http://zabbix.test.lab/zabbix
```

![スクリーンショット 2024-01-06 232845.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/9718dc45-1c42-6f12-30db-357b505a5a7a.png)
言語を日本語に変更します。
プルダウンから日本語を選択します。
![スクリーンショット 2024-01-06 232859.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/c56cd5c6-5b6c-da77-2667-e2b1a89953c8.png)
次のステップに進みます。
![スクリーンショット 2024-01-06 232909.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/bf3796b9-8fbe-9ee0-516e-9cf2e56418f9.png)
php.iniの設定内容に修正が必要です。
![スクリーンショット 2024-01-06 232923.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/be058597-9971-edab-d643-6c025ea1bf36.png)
画面に表示されている内容を修正します。
/etc/php/8.2/apache2/php.ini
```diff_c
- post_max_size = 8M
+ post_max_size = 16M
- max_execution_time = 30
+ max_execution_time = 300
- max_input_time = 60
+ max_input_time = 300
```
修正後にapache2関連の再起動
```bash
$ sudo systemctl stop apache2
$ sudo systemctl stop php8.2-fpm
$ sudo systemctl start php8.2-fpm
$ sudo systemctl start apache2
```
![スクリーンショット 2024-01-06 233639.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/cddc05ee-4405-f34d-eff8-1f267d8376c7.png)
次のステップに進みます。
![スクリーンショット 2024-01-06 233734.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/e559f033-9453-ab01-d4e6-bc77cc2a49ba.png)
内容を確認して、次のステップに進みます。
![スクリーンショット 2024-01-06 233847.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/1ad18f98-1a3e-a839-e439-f26e22d8b774.png)
サーバー名とタイムゾーンを設定します。
![スクリーンショット 2024-01-06 233917.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/870aaa6e-405c-fd95-77e4-c222a0bc9fe5.png)
設定したパラメーターを確認します。
![スクリーンショット 2024-01-06 233936.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/1806a5d3-ffeb-913c-eacb-6e56ca93d524.png)
画面の指示の通り、設定ファイルを所定のディレクトリに保存します。
設定ファイルを手元にダウンロードして、これをzabbixサーバーの/tmpにアップロードします。
その後、指定の場所に保存します。
```bash
$ sudo mv /tmp/zabbix.conf.php /var/www/html/zabbix/conf/zabbix.conf.php
```
![スクリーンショット 2024-01-06 234346.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/083f2b82-99ae-b7a1-6eaa-0989d9ac2abb.png)
無事インストール完了
![スクリーンショット 2024-01-06 234355.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/08deabf3-9b6a-6850-357d-194e81c0ce54.png)
ログイン画面が表示されました。
初期ユーザーのAdmin/zabbixでログインします。
![スクリーンショット 2024-01-06 234747.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/fb5980c0-35b9-08c6-b4ff-ebe39abc9fe7.png)
zabbix サーバーがインストールでき、稼働できていることが確認できました。

## zabbix serverとzabbix agentのサービス化

### Zabbix Server
サービスファイルの作成
```bash
＄ cd /etc/systemd/system
＄ sudo vi zabbix-server.service
```
ファイルは以下の通りとしています。
```
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target

[Service]
Environment="DAEMON_ARGS= -c /usr/local/etc/zabbix_server.conf"
EnvironmentFile=-/etc/default/%p
Type=simple
KillMode=control-group
PIDFile=/var/run/zabbix/zabbix_server.pid
ExecStart=/usr/local/sbin/zabbix_server $DAEMON_ARGS
ExecStop=/bin/sh -c '[ -n "$1" ] && kill -s TERM "$1"' -- "$MAINPID"
RestartSec=10s
User=zabbix
Group=zabbix
Restart=on-abnormal

[Install]
WantedBy=multi-user.target
```
自動起動を有効にします。
```bash
＄ systemctl enable zabbix-server.service
```
サービスを起動します。
```bash
＄ systemctl start zabbix-server
```

### Zabbix agent
サービスファイルの作成
```bash
＄ cd /etc/systemd/system
＄ vi zabbix-agent.service
```
こちらは apt で導入した場合に配置される`/lib/systemd/system/zabbix-agent.service`を参考にしました。
```
[Unit]
[Unit]
Description=Zabbix Agent
Documentation=man:zabbix_agentd
After=network.target

[Service]
Type=simple
User=zabbix
Group=zabbix
ExecStart=/usr/sbin/zabbix_agentd --foreground
Restart=on-abnormal

[Install]
WantedBy=multi-user.target
```
:::note info
Agentを`$sudo apt install zabbix-agent`で導入している場合は`/lib/systemd/system/zabbix-agent.service`があるので、上記は必要ない。
zabbix-agent2 の場合も同様。
:::
自動起動を有効にします。
```bash
＄ systemctl enable zabbix-agent
```
サービスを起動します。
```bash
＄ systemctl start zabbix-agent
```

# 6． SAMLログインの設定
IDaaSと認証連携を行います。
IDaaSにはIBM Security Verifyを利用しています。SAML連携なので他のIDaasでも基本は同じはずです。
IBM Security Verifyは以下より無料トライアルの利用が可能です。
[IBM Security Verify Trial](https://www.ibm.com/account/reg/jp-ja/signup?formid=urx-30041 "IBM Security Verify Trial")

zabbix SAML設定は以下を参考にしています。
[ZABBIX - SAML設定](https://www.zabbix.com/documentation/6.4/jp/manual/web_interface/frontend_sections/users/authentication/saml?hl=SAML%2Cauthentication
 "ZABBIX - SAML設定")

### まずは暗号化無しで連携
まずは証明書の取得・配置の必要ない暗号化設定なしで連携設定を行います。
この状態でSAML連携ができていることを確認した後に、暗号化設定などを実施します。
#### IBM Security Verifyの設定
IBM Security VerifyにAdminモードでログインし、アプリケーションメニューよりアプリケーションを追加します。
アプリケーションの追加ボタンを押した後に表示されるダイアログで`zabbix`と入力します。
![スクリーンショット 2024-01-10 16.30.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/a45a0ebd-a039-19bf-8d04-ef370a12893c.png)
zabbixを選択し、アプリケーションの追加を行います。
アプリケーションの追加画面になりますので、ここで設定を行います。
一般タブでホスト名を入力します。
![スクリーンショット 2024-01-10 16.32.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/f0c7e881-2cb2-12e0-221e-f7d820d3cb57.png)
プロバイダーIDにはzabbixで入力するのと同じ値を設定します。
ここでは`zabbix-verify-SAML-integration`としました。
アサーション・コンシューマー・サービスURLとターゲットURLは以下の通りです。
![スクリーンショット 2024-01-10 16.43.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/1893c1fa-ca3a-78f9-253d-d969524be522.png)
SAMLサブジェクト、属性マッピングは以下のようにemailを指定します。
![スクリーンショット 2024-01-10 16.44.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/6b918501-bdac-8adb-0d4f-c522af125877.png)

:::note info
SAMLサブジェクト、属性マッピングについてはemail以外でも問題ないです。
適切な値を設定してください。
:::

#### zabbix側の設定
メニューよりユーザー、認証を開き、SAML認証の設定タブに移動します。
zabbixのSAML認証画面でSAML認証の有効化ボタンをチェックします。
各項目はIBM Security Verifyの画面に表示されていた内容を使用します。
ユーザー名の属性は`Username`とします。

![スクリーンショット 2024-01-10 18.06.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/a408d7ce-7928-0ddc-b5ff-80df28be4543.png)

#### ユーザーの作成
IBM Security Verifyでzabbixにログインするユーザーを作成します。
ここで重要なのは`優先Eメール`です。この値をzabbix側で作成するユーザー名と一致させます。
![スクリーンショット 2024-01-10 16.50.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/aecbe48b-7d38-28d3-e930-f0e5e9b0c818.png)
![スクリーンショット 2024-01-10 16.51.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/ab0ed86d-3f89-56de-4a2f-29b0c1b15359.png)

IBM Security Verifyで作成したユーザーの優先Eメールと同じユーザー名でzabbixにユーザーを作成します。
![スクリーンショット 2024-01-10 18.10.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/6dc94016-caa9-7dae-7f08-26365c9a3fb2.png)

#### IdPの証明書の配置

IDP cert fileとしてIBM Security Verifyの画面に表示されている証明書を`/var/www/html/conf/certs/idp.crt`として保存します。
保存したファイルの所有者をzabbixに変更します。
```bash
$ cd /var/www/html/zabbix/conf/certs
$ sudo chown www-data:www-data idp.crt
$ sudo chmod 400 idp.crt
```

#### SAMLログインの検証
SAMLでのログインを検証するため、一度zabbixおよびIBM Security Verifyからログアウトします。
zabbixにアクセスし、SAMLログインを検証します。
![スクリーンショット 2024-01-10 17.29.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/f4d84e9d-0861-a49e-a377-52d223c31d4d.png)
ログイン画面に表示されている”SSO(SAML)でサインイン"をクリックします。
IｄPの認証画面 - IBM Security Verifyのログイン画面が表示されます。
![スクリーンショット 2024-01-10 17.30.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/02fa57f1-bfe9-f449-7d85-89247ef16955.png)
まだzabbix/apache2のSSL化をしていないため、警告が表示されます。
ここはこのまま進めます。
![スクリーンショット 2024-01-10 17.31.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/7f7a04a6-a483-5d74-9dcc-0acf2bc01579.png)
SAMLでのログインに成功しました。
![スクリーンショット 2024-01-10 17.32.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/44d774c5-0c22-c923-595d-5fac076bacb2.png)

:::note info
SCIMの設定を行うことでzabbix側にユーザーがない場合に自動的にユーザーの作成が可能です。
:::

# 7． zabbixのSSL化
このままですと、ログイン時に毎回警告が出ますのでSSL化を行います。
SSLに必要な証明書はLet's Encryptで取得しました。
Let's Encryptで取得した証明書等 server.crt/server.key を`/tmp`等に一旦アップロードし、これを配置します。
```bash
$ sudo mkdir /etc/apache2/ssl
$ sudo mv /tmp/server.crt /etc/apache2/ssl
$ sudo mv /tmp/server.key /etc/apache2/ssl
$ sudo chown root:root /etc/apache2/ssl/*
$ sudo chmod 400 /etc/apache2/ssl/*
```
配置した証明書が利用されるようにApache2を設定します。
```bash
$ sudo a2enmod ssl
$ sudo vi /etc/apache2/sites-available/default-ssl.conf
```
ファイル内の以下の項目を設定します。
* SSLCertificateFile
* SSLCertificateKeyFile
この項目には先ほど配置したファイルを指定します。
```bash
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key
```
SSLをサイトで有効にします。
```bash
$ sudo a2ensite default-ssl
$ sudo systemctl restart apache2
```
以上でhttpsでのアクセスが可能になります。
IBM Security Verifyの設定で`http`となっているところを`https`に変更します。
以上でSSO/SAML時の警告が表示されなくなります。

# 8． SAMLの暗号化
ここまでの設定で通信がSSLで暗号化されました。
さらにSAML Assertionの暗号化や署名設定を行います。
Apache2のSSL化に利用したのと同じ証明書を利用して、SAML Assertionの暗号化や署名の設定を行います。
SSL化で使用した証明書等を`/var/www/html/zabbix/conf/certs`にsp.crt,sp.keyとして配置します。
```bash
$ sudo cd /var/www/html/zabbix/conf/certs
$ sudo cp /etc/apache2/ssl/* ./
$ sudo mv server.crt sp.crt
$ sudo mv server.key sp.key
$ sudo chown www-data:www-data sp.*
$ sudo chmod 400 sp.*
```
zabbixのSAML設定で以下をチェックします。
##### サイン
* メッセージ
* アサーション
![スクリーンショット 2024-01-11 21.45.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/939a8981-1d30-b6f5-58d4-4005c48bc5b5.png)

IBM Security Verifyでは以下の設定を行います。
上記で配置した証明書をIBM Security Verifyに配置します。
管理画面のセキュリティー → 証明書の画面を開き、`署名証明書の追加`ボタンをクリックします。
表示されるダイアログで証明書を指定しアップロードします。
![スクリーンショット 2024-01-12 18.21.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/0f52aa37-575b-8d7d-9655-82b2dd6a9546.png)
アプリケーションよりzabbix連携設定を開きます。
サインオンタブの署名オプションをチェックし、先ほどアップロードした証明書を選択します。
次に暗号化オプションのアサーションの暗号化をチェックし、こちらにも先ほどアップロードした証明書を選択します。
![スクリーンショット 2024-01-12 18.25.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1263424/9e6b7ebe-fb2b-30c6-3dd0-1dbe5daff0bc.png)
以上で設定が完了です。
以後、SAML連携暗号化されメッセージ・アサーションは署名を確認して行われます。