zabbix에서 permission 777 폴더를 찾으면 경고

마커이므로 디렉토리보다 폴더라고 부르는 것을 좋아합니다.

logrotate 대상 디렉토리가 777이라면 because parent directory has insecure permissions.

손 빼기이므로 .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



나의 zabbix script는, zabbix상에서 「무엇이 나쁜 것인가?」까지 보이게 하는 신조가 있으므로 반환값은 대체로 이하가 되고 있습니다.
  • 성공 : 0
  • 실패 : 오류 원인을 문자열로 표시

  • zabbix v3.0.x 이외는 이것을 numeric로 받을 수 없기 때문에, item은 text 로 받아, 이하의 trigger로 검지시킵니다.
     findpermission[777].count(#3,0,eq)}<>3
    

    ※ 수치가 아니기 때문에 간단한 비교 연산을 할 수 없습니다.

    결과



    이런 식으로, 유감스러운 서버의 상황을 씻어낼 수 있었습니다. 그리고는 이것을 하나씩 어떻게든 해 나가고 싶습니다. 제외하게 되는 것도 있겠지・・.


    zabbix에서 굉장한 폴더 목록까지 확인할 수 있습니다.


    경고 등 울리지 않고 직접 chmod 해도 괜찮습니다만, 잠시는 현재 파악의 의미로 이것을 돌려 두고 싶습니다.

    새로운 기술에 트라이하고 있을 때 등은 777 은 유용하기 때문에, 절대 악으로서는 취급하고 싶지 않은 소존입니다.

    좋은 웹페이지 즐겨찾기