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(共通鍵)で暗号化しようと思って設定していたのですが、意外と手順が多かったのでスクリプト化しました。
# 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インターフェイスのホストごとの設定の中にそれぞれを入れる所があります。
共通鍵を使って暗号化できるらしいので実践。まずは下記の設定値を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