zabbixでpermission 777のフォルダを見つけたらアラートする
マカーなのでディレクトリよりフォルダと呼ぶのが好きです。
logrotate対象のディレクトリが777だと because parent directory has insecure permissions. などと怒って仕事を放棄するので、それを検知するzabbix userparameterを書きました。
手抜きなので .conf
ひとつで書いちゃいました。これだと見づらいのがzabbix userparameterの残念なところです。真面目にやるときは .sh
にしましょう。
zabbix item
$ cat findpermission.conf
# permissionチェックツール
# 777のフォルダが有るとlogrotateがコケるときがあるので、怪しいフォルダがないか探すために作成
#
# 対象dirに 777 のフォルダがあればそのリストを、なければ 0 を返す
# How to use
# Item:
# Type: Zabbix agent
# Type of information: text
#
# findpermission[permission,<location>]
#
# @param permission(int) 777, 644 など探したいdirのpermission(octal)
# @param location(string) "/var /home" など探したい親フォルダのフルパス
# @return (string) ヒットしたdirリスト or 0
#
# Trigger:
# findpermission[777].count(#3,0,eq)}<>3
# 意味:0が返ってきた回数が3回中3回じゃなかったら=3回連続で777のフォルダを見つけたらアラート実行
#
#### チェックコマンド
#### $ zabbix_get -s 192.168.1.3 -k "findpermission[777]"
#### 0 が返れば検索結果ゼロ。見つけた場合は777のフォルダリストを表示します。
UserParameter=findpermission[*],if [ -z "$1" ]; then echo "Please specity one octal permission. e.g. findpermission[777]"; exit 1; fi; if [ -z "$2" ]; then DIR="/var/log"; else DIR=$2; fi; if [ `find $DIR -type d -perm $1 | wc -l` -eq 0 ]; then echo 0; else echo -e "Directories below have permission $1.\n"; find $DIR -type d -perm $1; fi;
trigger
$ cat findpermission.conf
# permissionチェックツール
# 777のフォルダが有るとlogrotateがコケるときがあるので、怪しいフォルダがないか探すために作成
#
# 対象dirに 777 のフォルダがあればそのリストを、なければ 0 を返す
# How to use
# Item:
# Type: Zabbix agent
# Type of information: text
#
# findpermission[permission,<location>]
#
# @param permission(int) 777, 644 など探したいdirのpermission(octal)
# @param location(string) "/var /home" など探したい親フォルダのフルパス
# @return (string) ヒットしたdirリスト or 0
#
# Trigger:
# findpermission[777].count(#3,0,eq)}<>3
# 意味:0が返ってきた回数が3回中3回じゃなかったら=3回連続で777のフォルダを見つけたらアラート実行
#
#### チェックコマンド
#### $ zabbix_get -s 192.168.1.3 -k "findpermission[777]"
#### 0 が返れば検索結果ゼロ。見つけた場合は777のフォルダリストを表示します。
UserParameter=findpermission[*],if [ -z "$1" ]; then echo "Please specity one octal permission. e.g. findpermission[777]"; exit 1; fi; if [ -z "$2" ]; then DIR="/var/log"; else DIR=$2; fi; if [ `find $DIR -type d -perm $1 | wc -l` -eq 0 ]; then echo 0; else echo -e "Directories below have permission $1.\n"; find $DIR -type d -perm $1; fi;
私のzabbix scriptは、zabbix上で「何が悪いのか?」まで見えるようにする信条があるので返り値はだいたい以下になってます。
- 成功:
0
- 失敗: エラー原因をstringsで表示
zabbix v3.0.x 以外はこれをnumericで受け取れないので、itemは text
で受け取って、以下のtriggerで検知させます。
findpermission[777].count(#3,0,eq)}<>3
※ 数値じゃないので単純な比較演算ができないのです
results
こんな感じで、残念なサーバの状況を洗い出せました。あとはこれをひとつずつなんとかしていきたいと思います。除外することになるものもあるでしょう・・。
zabbix上でひっかかったフォルダのリストまで確認できてます。
アラートなど鳴らさず直接 chmod してもいいのですが、しばらくは現状把握の意味でこれを回しておきたいと思います。
新しい技術にトライしているときなどは 777 は有用なので、絶対悪としては扱いたくない所存です。
Author And Source
この問題について(zabbixでpermission 777のフォルダを見つけたらアラートする), 我々は、より多くの情報をここで見つけました https://qiita.com/uturned0/items/33dc56633f8aa51800a9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .