◆Redhat系Linuxの場合
# ls -l /var/log/messages
------------------------------
-rw------- 1 root root 134324 3月 16 12:50 /var/log/messages
------------------------------
$ ls -l /var/log/messages
------------------------------
-rw-r----- 1 root adm 157 3月 11 06:25 /var/log/messages
------------------------------
# cat /etc/zabbix/zabbix_agentd.conf | grep AllowRoot
------------------------------
### Option: AllowRoot
AllowRoot=1
------------------------------
しかし、上記方法は、Zabbix Agentがroot権限で動くことになり、セキュリティ面で推奨されない設定となる。そこで、今回はAllowRoot=1せずにログ監視できる方法を考えてみた。
zabbixユーザーをrootグループに追加して対応する
zabbixユーザーをrootグループ(後述するが、Debian系Linuxではadmグループ)に追加し、監視対象ログの権限をrootグループにて読み取り可能とすることで対応する。Linuxディストリビューションごとに若干手順が異なるため、Redhat系LinuxとDebian系Linuxの手順をそれぞれ記載することにする。Redhat系Linuxの場合
/var/log/messagesの権限を再掲する。# ls -l /var/log/messages
------------------------------
-rw------- 1 root root 134324 3月 16 12:50 /var/log/messages
------------------------------
権限は600となっているおり、rootグループのユーザーであっても読み取りができないため、まずは権限変更を行う。
# chmod 640 /var/log/messages
# ls -l /var/log/messages
------------------------------
-rw-r----- 1 root root 134324 3月 16 12:50 /var/log/messages
------------------------------
権限を変えても、ログローテーションされる際にもとの権限(600)に戻ってしまうため、ログローテーション時に、新しいファイルの権限を640として作成する設定を以下の通り追加する。
# cat /etc/logrotate.d/syslog
------------------------------
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
missingok
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
create 640 root root
}
------------------------------
最後にzabbixユーザーをrootグループに所属させる。
# id zabbix
------------------------------
uid=995(zabbix) gid=993(zabbix) groups=993(zabbix)
------------------------------
# usermod -aG root zabbix
# id zabbix
------------------------------
uid=995(zabbix) gid=993(zabbix) groups=993(zabbix),0(root)
------------------------------
Debian系Linuxの場合
/var/log/messagesの権限を再掲する。$ ls -l /var/log/messages
------------------------------
-rw-r----- 1 root adm 157 3月 11 06:25 /var/log/messages
------------------------------
Redhat系Linuxと異なり、admグループに読み取り権限が付いている。したがって、zabbixユーザーをadmグループに所属させるだけで対処可能である。
$ id zabbixRedhat系Linuxと異なり、admグループに読み取り権限が付いている。したがって、zabbixユーザーをadmグループに所属させるだけで対処可能である。
------------------------------
uid=111(zabbix) gid=116(zabbix) groups=116(zabbix)
------------------------------
$ sudo usermod -aG adm zabbix
$ id zabbix
------------------------------
uid=111(zabbix) gid=116(zabbix) groups=116(zabbix),4(adm)
------------------------------
Zabbixにて確認
zabbixユーザーで読み込み権限のないファイルを監視している場合、該当のアイテムに「ZBX_NOTSUPPORTED」のエラーが表示され、ステータスが「取得失敗」となっているはずである。ログ監視対象のサーバーのZabbix Agentのログからも、エラーが出ていることがわかる。
# tail -100 /var/log/zabbix/zabbix_agentd.log | grep messages
------------------------------
4870:20180317:220745.694 cannot open "/var/log/messages"': [13] Permission denied
4870:20180317:220815.697 cannot open "/var/log/messages"': [13] Permission denied
4870:20180317:220845.700 cannot open "/var/log/messages"': [13] Permission denied
4870:20180317:220845.700 active check "log[/var/log/messages,"@messages word",,,skip]" is not supported
------------------------------
0 件のコメント:
コメントを投稿