エージェント側でアイテムのブラックリスト、ホワイトリスト、またはホワイトリスト/ブラックリストの組み合わせを作成することで、チェックを制限することができます。
そのためには、2つのエージェント設定パラメータを組み合わせて使用します:
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=*^ でスペースをエスケープしてください。例:
# 引数の有無にかかわらず test.bat の実行を許可
AllowKey=system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat*"]テスト方法:
PS C:\Program Files\Zabbix Agent 2> .\zabbix_get.exe -s 127.0.0.1 -k system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat caret"]この設定により、引数(caret など)の有無にかかわらずスクリプトの実行が許可され、スクリプトのパスにスペースが含まれていても system.run の実行が許可されます。
| パターン | 説明 | 一致 | 不一致 |
|---|---|---|---|
| * | パラメータの有無にかかわらず、すべてのキーに一致します。 | すべて | なし |
| vfs.file.contents | パラメータなしのvfs.file.contentsに一致します。 |
vfs.file.contents | vfs.file.contents[/etc/passwd] |
| vfs.file.contents[] | 空のパラメータを持つvfs.file.contentsに一致します。 |
vfs.file.contents[] | vfs.file.contents |
| vfs.file.contents[*] | 任意のパラメータを持つvfs.file.contentsに一致します。角括弧なしのvfs.file.contentsには一致しません。 |
vfs.file.contents[] vfs.file.contents[/path/to/file] |
vfs.file.contents |
| vfs.file.contents[/etc/passwd,*] | 最初のパラメータが/etc/passwdに一致し、他のすべてのパラメータが任意の値(空も含む)であるvfs.file.contentsに一致します。 |
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*] | 最初のパラメータが*passwd*に一致し、他のパラメータがないvfs.file.contentsに一致します。 |
vfs.file.contents[/etc/passwd] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd, utf8] |
| vfs.file.contents[*passwd*,*] | 最初のパラメータが*passwd*に一致し、以降のすべてのパラメータが任意の値(空も含む)であるvfs.file.contentsに一致します。 |
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] | 最初のパラメータが/var/log/zabbix_server.log、3番目のパラメータが'abc'、2番目のパラメータが任意(空も含む)であるvfs.file.contentsに一致します。 |
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] | 最初のパラメータが/etc/passwd、2番目のパラメータが'utf8'で、他の引数がないvfs.file.contentsに一致します。 |
vfs.file.contents[/etc/passwd,utf8] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd,utf16] |
| vfs.file.* | パラメータなしでvfs.file.で始まる任意のキーに一致します。 |
vfs.file.contents vfs.file.size |
vfs.file.contents[] vfs.file.size[/var/log/zabbix_server.log] |
| vfs.file.*[*] | 任意のパラメータを持つvfs.file.で始まる任意のキーに一致します。 |
vfs.file.size.bytes[] vfs.file.size[/var/log/zabbix_server.log, utf8] |
vfs.file.size.bytes |
| vfs.*.contents | vfs.で始まり.contentsで終わるパラメータなしの任意のキーに一致します。 |
vfs.mount.point.file.contents vfs..contents |
vfs.contents |
仮想的なスクリプト「myscript.sh」は、Zabbixエージェントを介してホスト上でいくつかの方法で実行できます。
1. パッシブまたはアクティブチェックのアイテムキーとして、例えば:
ここでユーザーは「wait」や「nowait」を追加したり、第2引数を省略してsystem.run[]のデフォルト値を使用できます。
2. グローバルスクリプトとして(フロントエンドまたはAPIでユーザーが開始)。
ユーザーはこのスクリプトをアラート → スクリプトで設定し、「実行先: Zabbix agent」を設定し、スクリプトの「コマンド」入力フィールドに「myscript.sh」を入力します。フロントエンドまたはAPIから呼び出されると、Zabbixサーバーはエージェントに以下を送信します:
ここではユーザーは「wait」/「nowait」パラメータを制御できません。
3. アクションからのリモートコマンドとして。Zabbixサーバーはエージェントに以下を送信します:
ここでもユーザーは「wait」/「nowait」パラメータを制御できません。
これは、AllowKeyを次のように設定した場合:
この場合
すべてのバリエーションを許可するには、次のように追加できます:
をエージェント/agent2のパラメータに追加します。