Zabbixのセキュリティ設定


Zabbixのセキュリティ設定

Zabbixは平文で通信している所が結構あって、キャプチャされたら嫌だなぁとも思ったので、とりあえず各所セキュリティを気にしてみた。なおここに書いてある事は公式じゃないので、自己責任で。

ディレクトリの権限設定

通信とは関係ないけど、その前に何となくディレクトリのパーミッションが気になった。zabbixはzabbixユーザで動いてるので、設定ファイルはzabbixユーザの持ち物にしてchmod 700でもいい気がする。

# chown     zabbix:zabbix /etc/zabbix/zabbix_agentd.conf
# chown -R  zabbix:zabbix /etc/zabbix/zabbix_agentd.conf.d
# chmod 600 zabbix:zabbix /etc/zabbix/zabbix_agentd.conf
# chmod 700 zabbix:zabbix /etc/zabbix/zabbix_agentd.conf.d

なお、Serverの方webというディレクトリとapache.confというファイルがいて、そいつらがapacheユーザから見える必要があるのでディレクトリごと変更するのはあまりしない方がいいかもしれない。(agentは大丈夫かも)

pskの導入(スクリプト)

PSK(共通鍵)で暗号化しようと思って設定していたのですが、意外と手順が多かったのでスクリプト化しました。

# apt install gnutls-bin
# cd /etc/zabbix
# wget -O generate_zbx_psk.sh https://note.nogisawa.net/files/2019/0526_zabbix_psk/_F/generate_zbx_psk.sh
# chmod +x ./generate_zbx_psk.sh
# ./generate_zbx_psk.sh

終わるとPSKアイデンティティ、PSKが表示されますので、それをサーバー側に設定します。サーバーはWebインターフェイスのホストごとの設定の中にそれぞれを入れる所があります。

pskの導入(手動版)

共通鍵を使って暗号化できるらしいので実践。まずは下記の設定値をzabbix_agentd.confに追記します。

TLSConnect=psk
TLSAccept=psk
TLSPSKFile=/etc/zabbix/passwd.psk

ユーザを決めて共通鍵を生成するらしいんだけど、ユーザを決めるが面倒だったので、そこも自動生成するようにして下記コマンドを叩く。

# psktool -u $(dd if=/dev/urandom bs=8 count=1 | base64 | sed -e 's/[\/\+\=]//g') \
          -s 32 -p passwd.psk
# cat passwd.psk | awk -F: '{print $2}' > zabbix_passwd.psk
# chown zabbix:zabbix zabbix_passwd.psk
# chmod 600           zabbix_passwd.psk
# cat                 passwd.psk

設定に追加します。ものぐさなんで下記コマンド。一旦ファイルが消えるので注意。

# echo 'TLSConnect=psk'                             > zabbix_agentd.d/psk.conf
# echo 'TLSAccept=psk'                             >> zabbix_agentd.d/psk.conf
# echo 'TLSPSKFile=/etc/zabbix/zabbix_passwd.psk'  >> zabbix_agentd.d/psk.conf
# echo "TLSPSKIdentity=$(cat passwd.psk | awk -F: '{print $1}' | tail -n 1)" >> zabbix_agentd.d/psk.conf