Osquery
Einführung
osquery ist ein Framework zur sicherheitsrelevanten Systemüberwachung. Es stellt Betriebssystemdaten als SQL-Tabellen dar. So können Dateien, Prozesse, Nutzer, Netzwerke und Konfigurationen abgefragt werden.
Ursprünglich von Facebook entwickelt, eignet sich osquery für forensische Analysen, Security Monitoring und Integritätsprüfungen.
Architektur
Die Anwendung besteht aus zwei Komponenten:
+-------------------+
| osqueryi Shell | <-- Interaktive SQL-Abfragen
+-------------------+
|
v
+-------------------+
| osqueryd | <-- Daemon für geplante Abfragen
+-------------------+
|
v
+-------------------+
| Systemtabellen | <-- z.B. processes, users, etc.
+-------------------+
Installation unter Debian 12
Erstellt das Verzeichnis für den GPG-Schlüssel
- mkdir -p /etc/apt/keyrings
Fügt den osquery-GPG-Schlüssel hinzu
- curl -fsSL https://pkg.osquery.io/gpg.key | gpg --dearmor | tee /etc/apt/keyrings/osquery.gpg > /dev/null
Fügt das osquery-Repository hinzu
- echo "deb [signed-by=/etc/apt/keyrings/osquery.gpg] https://pkg.osquery.io/deb deb main" > /etc/apt/sources.list.d/osquery.list
Aktualisiert die Paketliste
- apt update
Installiert osquery
- apt install osquery
Konfiguration
Kopiert die Beispielkonfiguration
- cp /opt/osquery/share/osquery/osquery.example.conf /etc/osquery/osquery.conf
Dienst starten
Startet den osquery-Dienst
- systemctl start osqueryd
Prüft den Dienststatus
- systemctl status osqueryd
● osqueryd.service - The osquery Daemon Loaded: loaded (/lib/systemd/system/osqueryd.service; enabled) Active: active (running)
Interaktive Nutzung mit osqueryi
Startet die interaktive Shell
- osqueryi
Beispielabfragen:
Zeigt aktuell eingeloggte Benutzer
- SELECT * FROM logged_in_users;
Zeigt laufende Prozesse von root
- SELECT name, pid FROM processes WHERE uid = 0;
Zeigt alle Cronjobs
- SELECT * FROM crontab;
Zeigt alle offenen Netzwerkports
- SELECT * FROM listening_ports;
Eigene Regeln über Queries konfigurieren
Bearbeitet die zentrale Konfigurationsdatei vi /etc/osquery/osquery.conf
Beispielkonfiguration:
{
"schedule": {
"users_check": {
"query": "SELECT * FROM users;",
"interval": 600
},
"passwd_check": {
"query": "SELECT * FROM file WHERE path = '/etc/passwd';",
"interval": 300
}
}
}
Aktualisiert osquery nach Konfig-Änderungen
- systemctl restart osqueryd
Aha-Erlebnisse in der Schulung
- SQL statt kryptischer Tools – transparenter Zugriff auf Systeminformationen
- Ideal für Security-Monitoring ohne Agent-Overhead
- Kombinierbar mit SIEM-Tools
- Realtime-Query + Zeitplanung möglich
- Zeigt Linux von einer völlig neuen Seite