Osquery: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 88: Zeile 88:
 
* systemctl restart osqueryd
 
* systemctl restart osqueryd
  
= FleetDM mit Docker Compose betreiben =
+
 
 +
= FleetDM mit Docker Compose (offizielles Setup) =
 +
 
 +
== Voraussetzungen ==
 +
* Debian 12 mit installiertem Docker & Docker Compose
 +
* osquery soll zentral über Fleet verwaltet werden
  
 
== Vorbereitung ==
 
== Vorbereitung ==
Installiert git (für das Klonen des Repos) und Docker
+
Klon das offizielle Fleet-Repository:
* apt install -y git docker.io docker-compose
 
 
 
Klon das offizielle FleetDM-Repository
 
 
* git clone https://github.com/fleetdm/fleet.git
 
* git clone https://github.com/fleetdm/fleet.git
 
* cd fleet
 
* cd fleet
  
== Direktstart ohne Build (empfohlen) ==
+
Starte die mitgelieferte Docker-Umgebung:
Startet die komplette Umgebung mit MySQL, Redis und Fleet – **ohne Kompilierung**
+
* docker compose up -d
* cd tools
+
 
* docker-compose up
+
Dies startet u. a.:
 +
* MySQL
 +
* Redis
 +
* Fleet-Webserver (FleetDM)
 +
* Weitere Dienste wie Mailhog, Prometheus (optional)
 +
 
 +
== Datenbank initialisieren ==
 +
Fleet startet nicht automatisch, wenn die Datenbank leer ist.
 +
 
 +
Führe einmalig folgende Initialisierung durch:
 +
 
 +
<pre>
 +
docker run -it --rm \
 +
  --network=fleet_default \
 +
  -e FLEET_MYSQL_USERNAME=root \
 +
  -e FLEET_MYSQL_PASSWORD=fleetpass \
 +
  -e FLEET_MYSQL_DATABASE=fleet \
 +
  -e FLEET_MYSQL_ADDRESS=fleet-mysql-1:3306 \
 +
  -e FLEET_REDIS_ADDRESS=fleet-redis-1:6379 \
 +
  fleetdm/fleet:v4.45.0 fleet prepare db
 +
</pre>
  
FleetDM ist danach erreichbar unter:
+
Anschließend Fleet-Container neustarten:
  http://localhost:8080
+
* docker restart fleet-fleet-1
  
== Ersteinrichtung ==
+
== Web-Oberfläche aufrufen ==
Im Browser:
+
* http://localhost:8080
  Benutzername, Passwort, Organisation vergeben
 
  
Danach:
+
Beim ersten Start:
  Anzeige von Host-Daten, Abfragen und Policies möglich
+
* Admin-Benutzer, Passwort und Organisation anlegen
  
== Hinweis ==
+
== Hinweise ==
Das Setup verwendet persistente Volumes für Datenbank und Konfiguration. Die Umgebung kann jederzeit gestoppt und später wieder gestartet werden.
+
* Die `docker-compose.yml` aus dem Repo enthält alle Dienste – kein eigenes Compose-File notwendig.
 +
* Änderungen an Ports oder Volumes können direkt in der vorhandenen Datei vorgenommen werden.
 +
* Das Netzwerk `fleet_default` wird automatisch erzeugt.
 +
* Der Befehl `fleet prepare db` muss **nur einmal** beim ersten Start ausgeführt werden.
  
Zum Beenden:
+
== Weitere Schritte ==
* docker-compose down
+
* osquery-Clients mit Fleet verbinden
 +
* Queries und Policies definieren
 +
* Live-Abfragen ausführen

Version vom 18. April 2025, 11:14 Uhr

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

Von der Webseite neuste Version runterladen und installieren.

https://osquery.io/downloads/official/5.16.0

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


FleetDM mit Docker Compose (offizielles Setup)

Voraussetzungen

  • Debian 12 mit installiertem Docker & Docker Compose
  • osquery soll zentral über Fleet verwaltet werden

Vorbereitung

Klon das offizielle Fleet-Repository:

Starte die mitgelieferte Docker-Umgebung:

  • docker compose up -d

Dies startet u. a.:

  • MySQL
  • Redis
  • Fleet-Webserver (FleetDM)
  • Weitere Dienste wie Mailhog, Prometheus (optional)

Datenbank initialisieren

Fleet startet nicht automatisch, wenn die Datenbank leer ist.

Führe einmalig folgende Initialisierung durch:

docker run -it --rm \
  --network=fleet_default \
  -e FLEET_MYSQL_USERNAME=root \
  -e FLEET_MYSQL_PASSWORD=fleetpass \
  -e FLEET_MYSQL_DATABASE=fleet \
  -e FLEET_MYSQL_ADDRESS=fleet-mysql-1:3306 \
  -e FLEET_REDIS_ADDRESS=fleet-redis-1:6379 \
  fleetdm/fleet:v4.45.0 fleet prepare db

Anschließend Fleet-Container neustarten:

  • docker restart fleet-fleet-1

Web-Oberfläche aufrufen

Beim ersten Start:

  • Admin-Benutzer, Passwort und Organisation anlegen

Hinweise

  • Die `docker-compose.yml` aus dem Repo enthält alle Dienste – kein eigenes Compose-File notwendig.
  • Änderungen an Ports oder Volumes können direkt in der vorhandenen Datei vorgenommen werden.
  • Das Netzwerk `fleet_default` wird automatisch erzeugt.
  • Der Befehl `fleet prepare db` muss **nur einmal** beim ersten Start ausgeführt werden.

Weitere Schritte

  • osquery-Clients mit Fleet verbinden
  • Queries und Policies definieren
  • Live-Abfragen ausführen