[comment]: # translation:outdated

[comment]: # ({5024b934-780b1aa2})
# 12 Aģenta pārbaužu ierobežošana

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

[comment]: # ({40953ae4-9de656b2})
#### Pārskats

Jūs varat kontrolēt, kuras vienumu atslēgas Zabbix aģents vai agent 2 drīkst vai nedrīkst izmantot, izpildot vienumu pārbaudes, attālās komandas vai skriptus.

Lai to izdarītu, izmantojiet šos [aģenta konfigurācijas](/manual/appendix/config/zabbix_agentd) parametrus, lai definētu atļaušanas/aizliegšanas noteikumus:

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

`<pattern>` jāietver viena vienuma atslēga un tas atbalsta aizstājējzīmes (`*`).
Aizstājējzīme atbilst jebkuram jebkādu rakstzīmju skaitam tās pozīcijā, un to var izmantot, lai saskaņotu vienumu atslēgas vai parametrus (piemēram, `vfs.file.*[*]`).

::: noteimportant
Lai uzlabotu drošību, ieteicams aizstājējzīmju vietā izmantot precīzas vienumu atslēgas.
Sīkāku informāciju skatiet sadaļā [Atļaušanas/aizliegšanas noteikumu drošība](#securing-allowdeny-rules).
:::

Atšķirībā no citiem aģenta konfigurācijas parametriem, varat norādīt neierobežotu skaitu `AllowKey` vai `DenyKey` parametru.

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

[comment]: # ({6fa61f9f-3145c750})
#### Svarīgas piezīmes

-   Visi [`system.run`](/manual/config/items/itemtypes/zabbix_agent/#system.run) vienumi pēc noklusējuma ir atspējoti (pat ja `DenyKey` ir tukšs), it kā `DenyKey=system.run[*]` būtu iestatīts kā [pēdējais noteikums](#allowdeny-rule-order).
    Tādēļ varat atļaut konkrētus `system.run` vienumus, skaidri neaizliedzot citus `system.run` vienumus.

-   Vienumam, kas norādīts `AllowKey`, jābūt norādītam arī `DenyKey` (izņemot `system.run` vienumus); pretējā gadījumā Zabbix aģents **nestartēsies**.

-   Ja iespējams, izmantojiet `AllowKey`, lai atļautu tikai nepieciešamos vienumus un aizliegtu visu pārējo.
    Dažas atslēgas var tikt ļaunprātīgi izmantotas, lai nolasītu neparedzētus failus, izmantojot ceļa traversēšanu (piemēram, `vfs.file.contents["../../../../etc/passwd"]`), un jaunās Zabbix aģenta versijās var tikt ieviestas atslēgas, kuras neaptver jūsu `DenyKey` noteikumi.

-   `AllowKey` un `DenyKey` konfigurācija neietekmē `HostnameItem`, `HostMetadataItem` vai `HostInterfaceItem` aģenta parametrus.

-   Aizliegtie vienumi kļūst neatbalstīti bez jebkādām norādēm vai kļūdu ziņojumiem; piemēram:
    -   Zabbix aģenta [`--print (-p)`](/manual/concepts/agent#options) komandrindas parametrs nerādīs aizliegto vienumu atslēgas.
    -   Zabbix aģenta [`--test (-t)`](/manual/concepts/agent#options) komandrindas parametrs aizliegtajām vienumu atslēgām atgriezīs "Unsupported item key.".
    -   Kad žurnalēšana ir aktivizēta (`LogRemoteCommands=1`), Zabbix aģenta žurnālfailā netiks reģistrētas aizliegtās [attālinātās komandas](/manual/config/notifications/action/operation/remote_command).

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

[comment]: # ({071aae59-66ec4bb8})
#### Atļaut/aizliegt noteikumu secība

Varat norādīt neierobežotu skaitu `AllowKey` vai `DenyKey` noteikumu, taču to secībai ir nozīme.

-   Noteikumi tiek izvērtēti pa vienam, no augšas uz leju.
-   Kad vienuma atslēga atbilst noteikumam, tā tiek vai nu atļauta, vai aizliegta, un noteikumu izvērtēšana tiek pārtraukta.

Piemēram, izvērtējot `vfs.file.contents[/etc/passwd]`, noteikumi tiek apstrādāti šādi:

```default
AllowKey=vfs.file.contents[/tmp/app.log]    # Vienuma atslēgas raksts neatbilst, aģents pāriet pie nākamā noteikuma.
AllowKey=vfs.file.contents[/etc/passwd]     # Vienuma atslēgas raksts atbilst; aģents atļauj vienuma pārbaudi un pārtrauc noteikumu izvērtēšanu.
DenyKey=vfs.file.*[*]                       # Aģents ignorē noteikumu, jo izvērtēšana ir pārtraukta.
```

Šāda noteikumu secība aizliegs vienuma pārbaudi:

```default
DenyKey=vfs.file.*[*]                       # Vienuma atslēgas raksts atbilst; aģents aizliedz vienuma pārbaudi un pārtrauc noteikumu izvērtēšanu.
AllowKey=vfs.file.contents[/etc/passwd]     # Aģents ignorē noteikumu, jo izvērtēšana ir pārtraukta.
AllowKey=vfs.file.contents[/tmp/app.log]    # Aģents ignorē noteikumu, jo izvērtēšana ir pārtraukta.
```

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

[comment]: # ({cb10c569-253ad144})
#### Piemēri

Tālāk sniegtie piemēri parāda bieži izmantotus `AllowKey` un `DenyKey` konfigurācijas modeļus.

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

[comment]: # ({0fd42e58-19895d10})
##### Atļaut konkrētas pārbaudes un komandas

Atļaut tikai divas [`vfs.file`](/manual/config/items/itemtypes/zabbix_agent#vfs.file.cksum) vienumu pārbaudes un divas [`system.run`](/manual/config/items/itemtypes/zabbix_agent#system.run) komandas:

```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
Iestatīt `DenyKey=system.run[*]` nav nepieciešams, jo visas pārējās `system.run` komandas pēc noklusējuma ir aizliegtas.
:::

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

[comment]: # ({b0df3494-3cc5f239})
##### Skriptu atļaušana

Atļaujiet Zabbix aģentam izpildīt skriptus hostos, izmantojot visas pieejamās metodes:

-   [Globālie skripti](/manual/web_interface/frontend_sections/alerts/scripts), kurus var izpildīt lietotāja saskarnē vai izmantojot API (šī metode vienmēr izmanto `system.run[myscript.sh]` atslēgu)
-   Attālinātās komandas no [darbību operācijām](/manual/config/notifications/action/operation#operation-details) (šī metode vienmēr izmanto `system.run[myscript.sh,nowait]` atslēgu)
-   [`system.run`](/manual/config/items/itemtypes/zabbix_agent#system.run) Zabbix aģenta vienumi ar skriptu, piemēram:
    -   `system.run[myscript.sh]`
    -   `system.run[myscript.sh,wait]`
    -   `system.run[myscript.sh,nowait]`

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

Lai kontrolētu `wait`/`nowait` parametru, jāiestata cits noteikums.
Piemēram, varat atļaut tikai `system.run[myscript.sh,wait]` vienumus, tādējādi izslēdzot citas metodes:

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

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

[comment]: # ({abfd7422-1965a7d7})
##### Allow/deny noteikumu drošināšana

Šis piemērs parāda, kā padarīt drošākus pārāk visatļaujošus `AllowKey` vai `DenyKey` noteikumus.

Apsveriet šādus noteikumus:

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

::: noteclassic
Sistēmā Windows atstarpes ceļā ir jāekranē, izmantojot jumtiņa simbolu (`^`).
:::

Šie noteikumi satur aizstājējzīmi (`*`), ko var izmantot ļaunprātīgi:

-   Skriptu `test.bat` var izpildīt ar jebkādiem argumentiem, tostarp neparedzētiem.
-   Šablons `vfs.file.*` atbilst tikai vienumu atslēgām bez parametriem; tomēr visiem [`vfs.file`](/manual/config/items/itemtypes/zabbix_agent#vfs.file.cksum) vienumiem ir nepieciešami parametri.
-   Šablons `system.cpu.load[*]` atbilst tikai vienumu atslēgām ar parametriem; tomēr [`system.cpu.load`](/manual/config/items/itemtypes/zabbix_agent#system.cpu.load) vienumiem parametri nav nepieciešami.

Lai padarītu šos noteikumus drošākus, skaidri atļaujiet `test.bat` izpildi tikai ar konkrētiem argumentiem un aizliedziet pareizos vienumu atslēgu šablonus; piemēram:

```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[*]
```

Varat pārbaudīt noteikumus, izpildot šādas komandas, kas atgriezīs `ZBX_NOTSUPPORTED`.

```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})
##### Šablonu piemēri

Tālāk esošajā tabulā parādīts, kā tiek saskaņoti vienumu atslēgu šabloni:

-   Atslēga atbilst šablonam tikai tad, ja tā atbilst **visiem** nosacījumiem kolonnā *Atbilst*.
-   Parametriem jābūt pilnībā ietvertiem kvadrātiekavās (piemēram, `vfs.file.contents[*` un `vfs.file.contents*utf8]` ir nederīgi šabloni).

|Šablons|Atbilst|Piemēri|
|--|----|----|
|`*`|Jebkura atslēga ar vai bez parametriem| |
|`vfs.file.*`|Atslēga sākas ar `vfs.file.`<br>Nav parametru|Atbilst:<br>`vfs.file.size`<br>`vfs.file.contents`<br><br>Neatbilst:<br>`vfs.file.contents[]`<br>`vfs.file.size[/var/log/app.log]`|
|`vfs.*.contents`|Atslēga sākas ar `vfs.`<br>Atslēga beidzas ar `.contents`<br>Nav parametru|Atbilst: <br>`vfs..contents`<br>`vfs.mount.point.file.contents`<br><br>Neatbilst:<br>`vfs.contents`<br>`vfs.file.contents[]`|
|`vfs.file.*[*]`|Atslēga sākas ar `vfs.file.`<br>Jebkuri vai tukši parametri|Atbilst<br>`vfs.file.get.custom[]`<br>`vfs.file.size[/var/log/app.log, utf8]`<br><br>Neatbilst:<br>`vfs.file.get.custom`|
|`vfs.file.contents`|Atslēga ir `vfs.file.contents`<br>Nav parametru|Atbilst:<br>`vfs.file.contents`<br><br>Neatbilst:<br>`vfs.file.contents[/etc/passwd]`|
|`vfs.file.contents[]`|Atslēga ir `vfs.file.contents[]`<br>Tukši parametri|Atbilst:<br>`vfs.file.contents[]`<br><br>Neatbilst:<br>`vfs.file.contents`|
|`vfs.file.contents[*]`|Atslēga ir `vfs.file.contents`<br>Jebkuri vai tukši parametri|Atbilst:<br>`vfs.file.contents[/path/to/file]`<br><br>Neatbilst:<br>`vfs.file.contents`|
|`vfs.file.contents[/etc/passwd,*]`|Atslēga ir `vfs.file.contents`<br>Pirmais parametrs ir `/etc/passwd`<br>Jebkurš vai tukšs otrais parametrs|Atbilst:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf8]`<br><br>Neatbilst:<br>`vfs.file.contents[]`<br>`vfs.file.contents[/etc/passwd]`|
|`vfs.file.contents[*passwd*]`|Atslēga ir `vfs.file.contents`<br>Pirmais parametrs satur `passwd`<br>Nav otrā parametra|Atbilst:<br>`vfs.file.contents[/etc/passwd]`<br><br>Neatbilst:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf8]`|
|`vfs.file.contents[*passwd*,*]`|Atslēga ir `vfs.file.contents`<br>Pirmais parametrs satur `passwd`<br>Jebkurš vai tukšs otrais parametrs|Atbilst:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf8]`<br><br>Neatbilst:<br>`vfs.file.contents[/etc/passwd]`<br>`vfs.file.contents[/tmp/test]`|
|`vfs.file.contents[/etc/passwd,utf8]`|Atslēga ir `vfs.file.contents`<br>Pirmais parametrs ir `/etc/passwd`<br>Otrais parametrs ir `utf8`|Atbilst:<br>`vfs.file.contents[/etc/passwd,utf8]`<br><br>Neatbilst:<br>`vfs.file.contents[/etc/passwd,]`<br>`vfs.file.contents[/etc/passwd,utf16]`|

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