SELinux が有効な Linux 環境に zabbix-agent を入れて動かそうとすると起動しなかったりする。以前は動いてた。
CentOS 6.4 の、11月頃にアップデートされた selinux-policy を適用して以来、zabbix_agentd を起動できなくなった。
/var/log/audit/audit.log
を見てみると軽く拒否されている。
zabbix_agentd プロセスに対していろいろと操作の許可をしなければいけないようだ。
いったん SELinux の効果を落として様子を見てみよう。
setenforce 0
目的 zabbix_agentd を動かしてしばらくしたら、どのような操作がブロックされるのか確認してみる。
audit2allow -a -l -r
なにやらたくさん出てくると思うのだけど、その中身を全部はって te をつくる。
ためしに僕の環境で動くように作ってみた te ファイルがこちら → zabbix-agent.te
cd /usr/share/selinux/devel
vi zabbix-agent.te
te ファイルができたら、そいつをコンパイルしてシステムに反映する。
make
semodule -i zabbix-agent.pp
setenforce 1
これで zabbix_agentd を起動させることができるはず。
起動しても、さらにその中で機能が制限されてるかもしれないので、 audit2allow
コマンドで前述の方法で必要な許可を追加して行けば良い。
audit2allow コマンドがなければ yum install policycoreutils-python
で追加できる。