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.runvienumi pēc noklusējuma ir atspējoti (pat jaDenyKeyir tukšs), it kāDenyKey=system.run[*]būtu iestatīts kā pēdējais noteikums. Tādēļ varat atļaut konkrētussystem.runvienumus, skaidri neaizliedzot citussystem.runvienumus. -
Vienumam, kas norādīts
AllowKey, jābūt norādītam arīDenyKey(izņemotsystem.runvienumus); 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ūsuDenyKeynoteikumi. -
AllowKeyunDenyKeykonfigurācija neietekmēHostnameItem,HostMetadataItemvaiHostInterfaceItemaģ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.
- Zabbix aģenta
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.runZabbix 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.batvar izpildīt ar jebkādiem argumentiem, tostarp neparedzētiem. - Šablons
vfs.file.*atbilst tikai vienumu atslēgām bez parametriem; tomēr visiemvfs.filevienumiem ir nepieciešami parametri. - Šablons
system.cpu.load[*]atbilst tikai vienumu atslēgām ar parametriem; tomērsystem.cpu.loadvienumiem 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[*unvfs.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.sizevfs.file.contentsNeatbilst: vfs.file.contents[]vfs.file.size[/var/log/app.log] |
vfs.*.contents |
Atslēga sākas ar vfs.Atslēga beidzas ar .contentsNav parametru |
Atbilst: vfs..contentsvfs.mount.point.file.contentsNeatbilst: vfs.contentsvfs.file.contents[] |
vfs.file.*[*] |
Atslēga sākas ar vfs.file.Jebkuri vai tukši parametri |
Atbilstvfs.file.get.custom[]vfs.file.size[/var/log/app.log, utf8]Neatbilst: vfs.file.get.custom |
vfs.file.contents |
Atslēga ir vfs.file.contentsNav parametru |
Atbilst:vfs.file.contentsNeatbilst: 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.contentsJebkuri 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.contentsPirmais parametrs ir /etc/passwdJebkurš 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.contentsPirmais parametrs satur passwdNav 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.contentsPirmais parametrs satur passwdJebkurš 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.contentsPirmais parametrs ir /etc/passwdOtrais parametrs ir utf8 |
Atbilst:vfs.file.contents[/etc/passwd,utf8]Neatbilst: vfs.file.contents[/etc/passwd,]vfs.file.contents[/etc/passwd,utf16] |