Agent OsQuery

Funktion

Abfrage von Hosts mit osquery. Für dieses Plugin muss die ausführbare Datei „osqueryi“ auf dem überwachten Host installiert sein. „osqueryi“ wird über den SKOOR Agent ausgeführt, der ebenfalls auf dem abgefragten Rechner installiert sein und laufen muss. Der osqueryd-Daemon muss nicht laufen, damit diese Abfragen funktionieren.

Alarmierung

Hängt von den in den Job-Parametern konfigurierten Rückgabewerten ab.

osquery ist ein von Facebook entwickeltes Open-Source-Tool zur Abfrage verschiedener Informationen über den Zustand von Rechnern. Dazu gehören Informationen wie:

  • Laufende Prozesse

  • Geladene Kernel-Module

  • Aktive Benutzerkonten

  • Aktive Netzwerkverbindungen

und vieles mehr. osquery stellt ein Betriebssystem als leistungsstarke relationale Datenbank dar und ermöglicht die Abfrage mithilfe von SQL-Anweisungen.

osquery ist derzeit für die folgenden Betriebssysteme verfügbar:

  • Linux

  • Windows

  • OS X

  • FreeBSD

Die Installation erfolgt gemäß den Anweisungen auf der osquery-Download-Seite: https://osquery.io/downloads/. Alternativ kann die osqueryi-Binärdatei einfach in das Verzeichnis /usr/bin kopiert werden.

Das manuelle Ausführen von Abfragen auf dem Host, auf dem osqueryi installiert ist, ist ganz einfach. Führen Sie einfach den Befehl osqueryi aus, um das interaktive Abfrage-Tool zu starten, geben Sie dann die Abfrage ein und schließen Sie diese mit einem Semikolon ab:

$ osqueryi
Using a virtual database. Need help, type '.help'
osquery> select value as string_value1 from cpuid where feature="product_name";
+------------------------------------------+
| string_value1                            |
+------------------------------------------+
| Dual-Core AMD Opteron(tm) Processor 1218 |
+------------------------------------------+
osquery> .quit

Weitere Informationen zu osquery finden Sie hier: https://osquery.readthedocs.io/en/stable/.

Agent OsQuery – Details

Parameter des OsQuery-Agents

Parameter

Beschreibung

Abfrage

Die Abfrage, die gegen die OsQuery-Datenbank auf dem lokalen (SKOOR Collector) oder dem Remote-Host ausgeführt werden soll.

Über die Dropdown-Liste „Tags“ können vordefinierte Variablen in die obigen Felder eingegeben werden, z. B. $NAME$ für den Namen des Jobs.

Im Abschnitt „Beispiele“ weiter unten sind einige der Abfragen aufgeführt, die verwendet werden können. Die von der Abfrage zurückgegebene Ausgabe muss in der richtigen Reihenfolge den Rückgabewerten und Zeichenfolgenwerten zugeordnet werden.

Alternativ lässt sich die Reihenfolge der Rückgabewerte und Zeichenfolgen beeinflussen, indem die Abfrage so angepasst wird, dass sie die erwarteten Werte und Zeichenfolgenbezeichnungen liefert. So ordnet beispielsweise die folgende Abfrage den Wert „memory_free“ dem ersten Rückgabewert und „memory_total“ dem zweiten Rückgabewert zu:

select memory_total as return_value2, memory_free as return_value1 from memory_info

Die folgende Abfrage gibt zwei Zeichenfolgenwerte in einer bestimmten Reihenfolge zurück:

select feature as string_value1, value as string_value2 from cpuid limit 1

Die Rückgabewerte und Zeichenfolgenwerte müssen jedoch weiterhin im Abschnitt „Job-Parameter“ des Jobs konfiguriert werden, damit sie im Abschnitt „Werte“ des Jobs angezeigt werden.

Agent-OsQuery-Werte und Alarm Limits

Wert / Alarm Limit

Beschreibung

<Generisch>

Hängt von den in den Jobparametern konfigurierten Rückgabewerten ab.

Fehlercode

Generischer Job-Fehlercode (siehe Abschnitt „Job-Fehlercodes“)

Beispiele für Agent OsQuery

Beispiel 1 – Abfrage des CPU-Modells

Abfrage

select value as string_value1 from cpuid where feature="product_name"

Hierfür muss der folgende String-Wert konfiguriert werden:

Ausgabe 1

Beispiel 2 – Abfrage des gesamten und freien Speichers

Abfrage

SELECT memory_total, memory_free FROM memory_info

Hierfür müssen die folgenden 2 Rückgabewerte konfiguriert werden:

Die Einheit enthält den Namen des Rückgabewerts, eine Einheit und einen Divisor, da osquery die Werte in Byte zurückgibt:

Ausgabe 2

Weitere Beispielabfragen

Abfrage

Beschreibung

Beispielausgabe

select username, description, directory from users where username like '%eranger'

Benutzerinformationen abrufen

SELECT Wochentag, Tag, Monat, Jahr, Unix-Zeit FROM Zeit

Systemzeit auslesen

SELECT COUNT(pid) AS total, name FROM processes GROUP BY name ORDER BY total DESC LIMIT 10

Anzahl und Namen der 10 aktivsten Prozesse zurückgeben

SELECT * FROM uptime

Systemlaufzeit zurückgeben