[comment]: # translation:outdated

[comment]: # ({5024b934-780b1aa2})
# 12 Einschränken von Agent-Prüfungen

[comment]: # ({/5024b934-780b1aa2})

[comment]: # ({40953ae4-9de656b2})
#### Übersicht

Sie können steuern, welche Datenpunktschlüssel der Zabbix Agent oder Agent 2 bei der Ausführung von Datenpunkt-Prüfungen, Remote-Befehlen oder Skripten verwenden darf oder verweigert.

Verwenden Sie dazu diese Parameter der [Agent-Konfiguration](/manual/appendix/config/zabbix_agentd), um Zulassungs-/Verweigerungsregeln zu definieren:

-   `AllowKey=<pattern>`
-   `DenyKey=<pattern>`

Das `<pattern>` muss genau einen Datenpunktschlüssel enthalten und unterstützt Platzhalter (`*`).
Der Platzhalter entspricht an seiner Position einer beliebigen Anzahl beliebiger Zeichen und kann verwendet werden, um Datenpunktschlüssel oder Parameter abzugleichen (z. B. `vfs.file.*[*]`).

::: noteimportant
Zur Verbesserung der Sicherheit wird empfohlen, exakte Datenpunktschlüssel anstelle von Platzhaltern zu verwenden.
Weitere Informationen finden Sie unter [Absichern von Zulassungs-/Verweigerungsregeln](#securing-allowdeny-rules).
:::

Im Gegensatz zu anderen Parametern der Agent-Konfiguration können Sie eine unbegrenzte Anzahl von `AllowKey`- oder `DenyKey`-Parametern angeben.

[comment]: # ({/40953ae4-9de656b2})

[comment]: # ({6fa61f9f-3145c750})
#### Wichtige Hinweise

-   Alle [`system.run`](/manual/config/items/itemtypes/zabbix_agent/#system.run)-Datenpunkte sind standardmäßig deaktiviert (auch wenn `DenyKey` leer ist), als wäre `DenyKey=system.run[*]` als [letzte Regel](#allowdeny-rule-order) gesetzt.
    Daher können Sie bestimmte `system.run`-Datenpunkte erlauben, ohne andere `system.run`-Datenpunkte ausdrücklich zu verbieten.

-   Ein in `AllowKey` angegebener Datenpunkt muss auch in `DenyKey` angegeben werden (außer bei `system.run`-Datenpunkten); andernfalls **startet** der Zabbix Agent **nicht**.

-   Verwenden Sie nach Möglichkeit `AllowKey`, um nur die erforderlichen Datenpunkte zu erlauben und alles andere zu verbieten.
    Einige Schlüssel können missbraucht werden, um über Path Traversal unbeabsichtigte Dateien zu lesen (z. B. `vfs.file.contents["../../../../etc/passwd"]`), und neue Versionen des Zabbix Agent können Schlüssel einführen, die nicht durch Ihre `DenyKey`-Regeln abgedeckt sind.

-   Die Konfiguration von `AllowKey` und `DenyKey` wirkt sich nicht auf die Agent-Parameter `HostnameItem`, `HostMetadataItem` oder `HostInterfaceItem` aus.

-   Verbotene Datenpunkte werden ohne Hinweise oder Fehlermeldungen nicht unterstützt; zum Beispiel:
    -   Der Befehlszeilenparameter [`--print (-p)`](/manual/concepts/agent#options) des Zabbix Agent zeigt keine verbotenen Datenpunktschlüssel an.
    -   Der Befehlszeilenparameter [`--test (-t)`](/manual/concepts/agent#options) des Zabbix Agent gibt für verbotene Datenpunktschlüssel "Unsupported item key." zurück.
    -   Wenn die Protokollierung aktiviert ist (`LogRemoteCommands=1`), protokolliert die Logdatei des Zabbix Agent keine verbotenen [Remote-Befehle](/manual/config/notifications/action/operation/remote_command).

[comment]: # ({/6fa61f9f-3145c750})

[comment]: # ({071aae59-66ec4bb8})
#### Reihenfolge von Allow-/Deny-Regeln

Sie können eine unbegrenzte Anzahl von `AllowKey`- oder `DenyKey`-Regeln angeben, wobei ihre Reihenfolge wichtig ist.

-   Regeln werden nacheinander von oben nach unten ausgewertet.
-   Wenn ein Datenpunktschlüssel mit einer Regel übereinstimmt, wird er entweder zugelassen oder verweigert, und die Regelauswertung wird beendet.

Zum Beispiel werden bei der Auswertung von `vfs.file.contents[/etc/passwd]` die Regeln wie folgt verarbeitet:

```default
AllowKey=vfs.file.contents[/tmp/app.log]    # Das Muster des Datenpunktschlüssels stimmt nicht überein, Agent fährt mit der nächsten Regel fort.
AllowKey=vfs.file.contents[/etc/passwd]     # Das Muster des Datenpunktschlüssels stimmt überein; Agent erlaubt die Datenpunktprüfung und beendet die Regelauswertung.
DenyKey=vfs.file.*[*]                       # Agent ignoriert die Regel, da die Auswertung bereits beendet wurde.
```

Die folgende Reihenfolge der Regeln verweigert die Datenpunktprüfung:

```default
DenyKey=vfs.file.*[*]                       # Das Muster des Datenpunktschlüssels stimmt überein; Agent verweigert die Datenpunktprüfung und beendet die Regelauswertung.
AllowKey=vfs.file.contents[/etc/passwd]     # Agent ignoriert die Regel, da die Auswertung bereits beendet wurde.
AllowKey=vfs.file.contents[/tmp/app.log]    # Agent ignoriert die Regel, da die Auswertung bereits beendet wurde.
```

[comment]: # ({/071aae59-66ec4bb8})

[comment]: # ({cb10c569-253ad144})
#### Beispiele

Die folgenden Beispiele zeigen gängige Konfigurationsmuster für `AllowKey` und `DenyKey`.

[comment]: # ({/cb10c569-253ad144})

[comment]: # ({0fd42e58-19895d10})
##### Zulassen bestimmter Prüfungen und Befehle

Erlauben Sie nur zwei [`vfs.file`](/manual/config/items/itemtypes/zabbix_agent#vfs.file.cksum)-Datenpunkt-Prüfungen und zwei [`system.run`](/manual/config/items/itemtypes/zabbix_agent#system.run)-Befehle:

```default
AllowKey=vfs.file.contents[/tmp/app.log]
AllowKey=vfs.file.size[/tmp/app.log]
AllowKey=system.run[/usr/bin/uptime]
AllowKey=system.run[/usr/bin/df -h /]
DenyKey=vfs.file.*[*]
```

::: noteclassic
Die Einstellung `DenyKey=system.run[*]` ist nicht erforderlich, da alle anderen `system.run`-Befehle standardmäßig verweigert werden.
:::

[comment]: # ({/0fd42e58-19895d10})

[comment]: # ({b0df3494-3cc5f239})
##### Ausführen von Skripten erlauben

Erlauben Sie dem Zabbix Agent, Skripte auf Hosts über alle verfügbaren Methoden auszuführen:

-   [Globale Skripte](/manual/web_interface/frontend_sections/alerts/scripts), die im Frontend oder über die API ausgeführt werden können (diese Methode verwendet immer den Schlüssel `system.run[myscript.sh]`)
-   Remote-Befehle aus [Aktionsoperationen](/manual/config/notifications/action/operation#operation-details) (diese Methode verwendet immer den Schlüssel `system.run[myscript.sh,nowait]`)
-   [`system.run`](/manual/config/items/itemtypes/zabbix_agent#system.run)-Zabbix-Agent-Datenpunkte mit dem Skript, zum Beispiel:
    -   `system.run[myscript.sh]`
    -   `system.run[myscript.sh,wait]`
    -   `system.run[myscript.sh,nowait]`

```default
AllowKey=system.run[myscript.sh,*]
```

Um den Parameter `wait`/`nowait` zu steuern, müssen Sie eine andere Regel festlegen.
Sie können zum Beispiel nur `system.run[myscript.sh,wait]`-Datenpunkte erlauben und dadurch andere Methoden ausschließen:

```default
AllowKey=system.run[myscript.sh,wait]
```

[comment]: # ({/b0df3494-3cc5f239})

[comment]: # ({abfd7422-1965a7d7})
##### Absichern von Allow-/Deny-Regeln

Dieses Beispiel zeigt, wie sich zu großzügige `AllowKey`- oder `DenyKey`-Regeln absichern lassen.

Betrachten Sie die folgenden Regeln:

```default
AllowKey=system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat*"]
DenyKey=vfs.file.*
DenyKey=system.cpu.load[*]
```

::: noteclassic
Unter Windows müssen Leerzeichen im Pfad mit einem Caret-Zeichen (`^`) maskiert werden.
:::

Diese Regeln enthalten ein Platzhalterzeichen (`*`), das missbraucht werden kann:

-   Das Skript `test.bat` kann mit beliebigen Argumenten ausgeführt werden, auch mit unbeabsichtigten.
-   Das Muster `vfs.file.*` entspricht nur Datenpunkt-Schlüsseln ohne Parameter; allerdings erfordern alle [`vfs.file`](/manual/config/items/itemtypes/zabbix_agent#vfs.file.cksum)-Datenpunkte Parameter.
-   Das Muster `system.cpu.load[*]` entspricht nur Datenpunkt-Schlüsseln mit Parametern; allerdings benötigen [`system.cpu.load`](/manual/config/items/itemtypes/zabbix_agent#system.cpu.load)-Datenpunkte keine Parameter.

Um diese Regeln abzusichern, erlauben Sie die Ausführung von `test.bat` explizit nur mit bestimmten Argumenten und verweigern Sie die korrekten Datenpunkt-Schlüsselmuster; zum Beispiel:

```default
AllowKey=system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat status"]
AllowKey=system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat version"]
DenyKey=vfs.file.*[*]
DenyKey=system.cpu.load
DenyKey=system.cpu.load[*]
```

Sie können die Regeln testen, indem Sie die folgenden Befehle ausführen; diese geben `ZBX_NOTSUPPORTED` zurück.

```bash
cd "C:\Program Files\Zabbix Agent 2"
zabbix_agent2.exe -t system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat debug"]
zabbix_agent2.exe -t vfs.file.size["C:\ProgramData\MyApp\config.ini"]
zabbix_agent2.exe -t vfs.file.contents["C:\Windows\System32\drivers\etc\hosts"]
zabbix_agent2.exe -t system.cpu.load
zabbix_agent2.exe -t system.cpu.load[all,avg1]
```

[comment]: # ({/abfd7422-1965a7d7})

[comment]: # ({23f78b84-16bccaff})
##### Musterbeispiele

Die folgende Tabelle zeigt, wie Datenpunktschlüssel-Muster abgeglichen werden:

-   Ein Schlüssel entspricht dem Muster nur, wenn er **alle** Bedingungen in der Spalte *Entspricht* erfüllt.
-   Parameter müssen vollständig in eckige Klammern eingeschlossen sein (z. B. sind `vfs.file.contents[*` und `vfs.file.contents*utf8]` ungültige Muster).

|Muster|Entspricht|Beispiele|
|--|----|----|
|`*`|Beliebiger Schlüssel mit oder ohne Parameter| |
|`vfs.file.*`|Schlüssel beginnt mit `vfs.file.`<br>Keine Parameter|Entspricht:<br>`vfs.file.size`<br>`vfs.file.contents`<br><br>Entspricht nicht:<br>`vfs.file.contents[]`<br>`vfs.file.size[/var/log/app.log]`|
|`vfs.*.contents`|Schlüssel beginnt mit `vfs.`<br>Schlüssel endet mit `.contents`<br>Keine Parameter|Entspricht:<br>`vfs..contents`<br>`vfs.mount.point.file.contents`<br><br>Entspricht nicht:<br>`vfs.contents`<br>`vfs.file.contents[]`|
|`vfs.file.*[*]`|Schlüssel beginnt mit `vfs.file.`<br>Beliebige oder leere Parameter|Entspricht:<br>`vfs.file.get.custom[]`<br>`vfs.file.size[/var/log/app.log, utf8]`<br><br>Entspricht nicht:<br>`vfs.file.get.custom`|
|`vfs.file.contents`|Schlüssel ist `vfs.file.contents`<br>Keine Parameter|Entspricht:<br>`vfs.file.contents`<br><br>Entspricht nicht:<br>`vfs.file.contents[/etc/passwd]`|
|`vfs.file.contents[]`|Schlüssel ist `vfs.file.contents[]`<br>Leere Parameter|Entspricht:<br>`vfs.file.contents[]`<br><br>Entspricht nicht:<br>`vfs.file.contents`|
|`vfs.file.contents[*]`|Schlüssel ist `vfs.file.contents`<br>Beliebige oder leere Parameter|Entspricht:<br>`vfs.file.contents[/path/to/file]`<br><br>Entspricht nicht:<br>`vfs.file.contents`|
|`vfs.file.contents[/etc/passwd,*]`|Schlüssel ist `vfs.file.contents`<br>Erster Parameter ist `/etc/passwd`<br>Beliebiger oder leerer zweiter Parameter|Entspricht:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf8]`<br><br>Entspricht nicht:<br>`vfs.file.contents[]`<br>`vfs.file.contents[/etc/passwd]`|
|`vfs.file.contents[*passwd*]`|Schlüssel ist `vfs.file.contents`<br>Erster Parameter enthält `passwd`<br>Kein zweiter Parameter|Entspricht:<br>`vfs.file.contents[/etc/passwd]`<br><br>Entspricht nicht:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf8]`|
|`vfs.file.contents[*passwd*,*]`|Schlüssel ist `vfs.file.contents`<br>Erster Parameter enthält `passwd`<br>Beliebiger oder leerer zweiter Parameter|Entspricht:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf8]`<br><br>Entspricht nicht:<br>`vfs.file.contents[/etc/passwd]`<br>`vfs.file.contents[/tmp/test]`|
|`vfs.file.contents[/etc/passwd,utf8]`|Schlüssel ist `vfs.file.contents`<br>Erster Parameter ist `/etc/passwd`<br>Zweiter Parameter ist `utf8`|Entspricht:<br>`vfs.file.contents[/etc/passwd,utf8]`<br><br>Entspricht nicht:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf16]`|

[comment]: # ({/23f78b84-16bccaff})
