Agent OsQuery
Funktion | Abfrage von Hosts mit osquery. Dieses Plugin setzt voraus, dass die ausführbare Datei osqueryi auf dem überwachten Host installiert ist. osqueryi wird über den SKOOR Agent ausgeführt, der ebenfalls auf dem abgefragten Rechner installiert sein und laufen muss. Der osqueryd-Daemon muss nicht ausgeführt werden, damit diese Abfragen funktionieren. |
---|---|
Alarmierung | Hängt von den Rückgabewerten ab, die in den Parametern des Jobs konfiguriert sind. |
osquery ist ein Open-Source-Tool, das von Facebook entwickelt wurde, um verschiedene Informationen über den Zustand von Rechnern abzufragen. Dazu gehören Informationen wie:
Laufende Prozesse
Geladene Kernel-Module
Aktive Benutzerkonten
Aktive Netzwerkverbindungen
und vieles mehr. osquery stellt ein Betriebssystem als hochleistungsfähige relationale Datenbank dar und ermöglicht die Abfrage mittels SQL-Anweisungen.
osquery ist derzeit für die folgenden Betriebssysteme verfügbar:
Linux
Windows
OS X
FreeBSD
Es kann installiert werden, indem Sie den Anweisungen auf der osquery-Downloadseite folgen: https://osquery.io/downloads/. Alternativ kann das osqueryi-Binary auch einfach nach /usr/bin kopiert werden.
Die manuelle Ausführung von Abfragen auf dem Rechner, auf dem osqueryi installiert ist, ist einfach. Führen Sie einfach den Befehl osqueryi aus, der das interaktive Abfragetool aufruft, und geben Sie dann die Abfrage ein, gefolgt von einem Semikolon:
$ 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 Detail
Parameter des Agenten OsQuery
Parameter | Beschreibung |
---|---|
Abfrage | Die Abfrage, die gegen die OsQuery-Datenbank auf dem lokalen (SKOOR Collector) oder entfernten Host ausgeführt werden soll. |
Die Dropdown-Liste Tags ermöglicht die Eingabe vordefinierter Variablen in die obigen Felder, z. B. $NAME$ für den Namen des Auftrags.
Im folgenden Abschnitt mit Beispielen sind einige der möglichen Abfragen aufgeführt. Die von der Abfrage zurückgegebene Ausgabe muss in der richtigen Reihenfolge auf Return-Werte und String-Werte abgebildet werden.
Alternativ kann die Reihenfolge der zurückgegebenen Werte und Zeichenketten beeinflusst werden, indem die Abfrage so angepasst wird, dass sie die erwarteten Wert- und Zeichenkettennamen liefert, z. B. wird die folgende Abfrage den Wert memory_free dem ersten Rückgabewert und memory_total dem zweiten Rückgabewert zuordnen:
select memory_total as return_value2, memory_free as return_value1 from memory_info
Die folgende Abfrage gibt zwei String-Werte in einer bestimmten Reihenfolge zurück:
select feature as string_value1, value as string_value2 from cpuid limit 1
Die Rückgabewerte und String-Werte müssen jedoch noch im Abschnitt Auftragsparameter des Auftrags konfiguriert werden, damit sie im Abschnitt Werte des Auftrags erscheinen.
Agent OsQuery Werte und Alarm Limits
Wert / Alarm Limit | Beschreibung |
---|---|
<Generisch> | Hängt von den in den Auftragsparametern konfigurierten Rückgabewerten ab. |
Fehlercode | Generischer Job-Fehlercode (siehe Abschnitt Job-Fehlercodes) |
Agent OsQuery Beispiele
Beispiel 1 - Abfrage des CPU-Modells
Abfrage | select value as string_value1 from cpuid where feature="product_name" |
---|
Dazu 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 Bytes zurückgibt:
Ausgabe 2
Zusätzliche Beispielabfragen
Abfrage | Beschreibung | Beispiel-Ausgabe |
---|---|---|
select username,description,directory from users where username like '%eranger' | Benutzerinformationen lesen | |
select Wochentag, Tag, Monat, Jahr, unix_time from time | Systemzeit auslesen | |
select count(pid) as total, name from processes group by name order by total desc limit 10 | Rückgabe von Prozessanzahl und -namen für die 10 aktivsten Prozesse | |
select * from uptime | Rückgabe der System-Uptime |