12 Aģenta pārbaužu ierobežošana

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 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.*[*]).

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.

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

Svarīgas piezīmes

  • Visi 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. 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) komandrindas parametrs nerādīs aizliegto vienumu atslēgas.
    • Zabbix aģenta --test (-t) 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.

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:

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:

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.

Piemēri

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

Atļaut konkrētas pārbaudes un komandas

Atļaut tikai divas vfs.file vienumu pārbaudes un divas system.run komandas:

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

Iestatīt DenyKey=system.run[*] nav nepieciešams, jo visas pārējās system.run komandas pēc noklusējuma ir aizliegtas.

Skriptu atļaušana

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

  • Globālie skripti, 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 (šī metode vienmēr izmanto system.run[myscript.sh,nowait] atslēgu)
  • system.run Zabbix aģenta vienumi ar skriptu, piemēram:
    • system.run[myscript.sh]
    • system.run[myscript.sh,wait]
    • system.run[myscript.sh,nowait]
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:

AllowKey=system.run[myscript.sh,wait]
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:

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

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 vienumiem ir nepieciešami parametri.
  • Šablons system.cpu.load[*] atbilst tikai vienumu atslēgām ar parametriem; tomēr 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:

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.

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]
Š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.
Nav parametru
Atbilst:
vfs.file.size
vfs.file.contents

Neatbilst:
vfs.file.contents[]
vfs.file.size[/var/log/app.log]
vfs.*.contents Atslēga sākas ar vfs.
Atslēga beidzas ar .contents
Nav parametru
Atbilst:
vfs..contents
vfs.mount.point.file.contents

Neatbilst:
vfs.contents
vfs.file.contents[]
vfs.file.*[*] Atslēga sākas ar vfs.file.
Jebkuri vai tukši parametri
Atbilst
vfs.file.get.custom[]
vfs.file.size[/var/log/app.log, utf8]

Neatbilst:
vfs.file.get.custom
vfs.file.contents Atslēga ir vfs.file.contents
Nav parametru
Atbilst:
vfs.file.contents

Neatbilst:
vfs.file.contents[/etc/passwd]
vfs.file.contents[] Atslēga ir vfs.file.contents[]
Tukši parametri
Atbilst:
vfs.file.contents[]

Neatbilst:
vfs.file.contents
vfs.file.contents[*] Atslēga ir vfs.file.contents
Jebkuri vai tukši parametri
Atbilst:
vfs.file.contents[/path/to/file]

Neatbilst:
vfs.file.contents
vfs.file.contents[/etc/passwd,*] Atslēga ir vfs.file.contents
Pirmais parametrs ir /etc/passwd
Jebkurš vai tukšs otrais parametrs
Atbilst:
vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd,utf8]

Neatbilst:
vfs.file.contents[]
vfs.file.contents[/etc/passwd]
vfs.file.contents[*passwd*] Atslēga ir vfs.file.contents
Pirmais parametrs satur passwd
Nav otrā parametra
Atbilst:
vfs.file.contents[/etc/passwd]

Neatbilst:
vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd,utf8]
vfs.file.contents[*passwd*,*] Atslēga ir vfs.file.contents
Pirmais parametrs satur passwd
Jebkurš vai tukšs otrais parametrs
Atbilst:
vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd,utf8]

Neatbilst:
vfs.file.contents[/etc/passwd]
vfs.file.contents[/tmp/test]
vfs.file.contents[/etc/passwd,utf8] Atslēga ir vfs.file.contents
Pirmais parametrs ir /etc/passwd
Otrais parametrs ir utf8
Atbilst:
vfs.file.contents[/etc/passwd,utf8]

Neatbilst:
vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd,utf16]