item のブラックリスト、ホワイトリスト、またはホワイトリストとブラックリストの組み合わせを作成することで、agent 側で
チェックを制限することができます。
そのためには、2 つの agent configuration パラメータを組み合わせて使用します。
AllowKey=<pattern>
- どの検査を許可するか、<pattern> はワイルドカード (*) 式を使用して指定します。DenyKey=<pattern>
- どの検査を拒否するか、<pattern> はワイルドカード (*) 式を使用して指定します。なお:
そのため、リモートコマンドを許可するには、許可するコマンドごとに AllowKey=system.run[<command>,*] を指定します
( * は wait および nowait モードを表します)。AllowKey=system.run[*] パラメータを指定すると、wait および nowait
モードを持つすべてのコマンドを許可することも可能です。特定のリモートコマンドを許可しないようにするには、
AllowKey=system.run[ *] パラメータの前に system.run[] コマンドを含む DenyKey パラメータを追加してください。
例えば:
Zabbixの新しいバージョンでは、既存の設定で明示的に制限されていない新しいキーが使用される可能性があるため、
ブラックリストは良い選択とは言えないかもしれません。これはセキュリティ上の欠陥を引き起こす可能性があります。
DenyKey=*
で他のチェックを拒否する。例:
# Allow reading logs:
AllowKey=vfs.file.*[/var/log/*]
# Allow localtime checks
AllowKey=system.localtime[*]
# Deny all other keys
DenyKey=*
パターン | 説明 | 一致 | 非一致 |
---|---|---|---|
* | Matches all possible keys with or without parameters. | Any | None |
vfs.file.contents | Matches vfs.file.contents without parameters. |
vfs.file.contents | vfs.file.contents[/etc/passwd] |
vfs.file.contents[] | Matches vfs.file.contents with empty parameters. |
vfs.file.contents[] | vfs.file.contents |
vfs.file.contents[*] | Matches vfs.file.contents with any parameters; will not match vfs.file.contents without square brackets. |
vfs.file.contents[] vfs.file.contents[/path/to/file] |
vfs.file.contents |
vfs.file.contents[/etc/passwd,*] | Matches vfs.file.contents with first parameters matching /etc/passwd and all other parameters having any value (also empty). |
vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd,utf8] |
vfs.file.contents[/etc/passwd] vfs.file.contents[/var/log/zabbix_server.log] vfs.file.contents[] |
vfs.file.contents[*passwd*] | Matches vfs.file.contents with first parameter matching *passwd* and no other parameters. |
vfs.file.contents[/etc/passwd] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd, utf8] |
vfs.file.contents[*passwd*,*] | Matches vfs.file.contents with only first parameter matching *passwd* and all following parameters having any value (also empty). |
vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd, utf8] |
vfs.file.contents[/etc/passwd] vfs.file.contents[/tmp/test] |
vfs.file.contents[/var/log/zabbix_server.log,*,abc] | Matches vfs.file.contents with first parameter matching /var/log/zabbix_server.log, third parameter matching 'abc' and any (also empty) second parameter. |
vfs.file.contents[/var/log/zabbix_server.log,,abc] vfs.file.contents[/var/log/zabbix_server.log,utf8,abc] |
vfs.file.contents[/var/log/zabbix_server.log,,abc,def] |
vfs.file.contents[/etc/passwd,utf8] | Matches vfs.file.contents with first parameter matching /etc/passwd, second parameter matching 'utf8' and no other arguments. |
vfs.file.contents[/etc/passwd,utf8] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd,utf16] |
vfs.file.* | Matches any keys starting with vfs.file. without any parameters. |
vfs.file.contents vfs.file.size |
vfs.file.contents[] vfs.file.size[/var/log/zabbix_server.log] |
vfs.file.*[*] | Matches any keys starting with vfs.file. with any parameters. |
vfs.file.size.bytes[] vfs.file.size[/var/log/zabbix_server.log, utf8] |
vfs.file.size.bytes |
vfs.*.contents | Matches any key starting with vfs. and ending with .contents without any parameters. |
vfs.mount.point.file.contents vfs..contents |
vfs.contents |
myscript.shのような仮想スクリプトは、Zabbix agent を介してホスト上でいくつかの方法で実行することができます:
1. passive チェック や active チェックの item キーとして、例えば :
ここで、"wait"、"nowait "を追加するか、第2引数を省略し、system.run[ ]のデフォルト値を使用することができる。
2. グローバルスクリプトとして(フロントエンドまたはAPIでユーザーによって開始される)
ユーザはこのスクリプトを Administration → Scripts で "Commands" 入力フィールドに "myscript.sh" を入力し、
"Execute on: Zabbix agent" を設定します。フロントエンドまたはAPIから呼び出されると、Zabbixサーバは agent に以下を
送信します。:
ここでは、ユーザーは "wait"/"nowait "パラメータを制御しません。
3. アクションからのリモートコマンドとして Zabbix server は agent に送信します:
ここでも、ユーザーは "wait"/"nowait "パラメータを制御しません。
どういうことかというと、AllowKeyを次のように設定した場合です。:
では
上記のすべてのバリエーションを許可するには:
を agent / agent 2 パラメータに設定します。