Osquery: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 89: Zeile 89:
  
  
= FleetDM mit Docker Compose (offizielles Setup) =
+
 
 +
= FleetDM mit Docker Compose (stabiles Setup) =
  
 
== Voraussetzungen ==
 
== Voraussetzungen ==
Zeile 96: Zeile 97:
  
 
== Vorbereitung ==
 
== Vorbereitung ==
Klon das offizielle Fleet-Repository:
+
Lege ein neues Verzeichnis an und wechsle hinein:
* git clone https://github.com/fleetdm/fleet.git
+
* mkdir fleet-quickstart
* cd fleet
+
* cd fleet-quickstart
  
Starte die mitgelieferte Docker-Umgebung:
+
Erstelle eine Datei namens docker-compose.yml mit folgendem Inhalt:
* docker compose up -d
+
<pre>
 +
version: "3.7"
  
Dies startet u. a.:
+
services:
* MySQL
+
  mysql:
* Redis
+
    image: mysql:8.0
* Fleet-Webserver (FleetDM)
+
    environment:
* Weitere Dienste wie Mailhog, Prometheus (optional)
+
      MYSQL_ROOT_PASSWORD: fleetpass
 +
      MYSQL_DATABASE: fleet
 +
    volumes:
 +
      - mysql-data:/var/lib/mysql
 +
    restart: unless-stopped
  
== Datenbank initialisieren ==
+
  redis:
Fleet startet nicht automatisch, wenn die Datenbank leer ist.
+
    image: redis:6.2
 +
    restart: unless-stopped
  
Führe einmalig folgende Initialisierung durch:
+
  fleet:
 +
    image: fleetdm/fleet:v4.45.0
 +
    depends_on:
 +
      - mysql
 +
      - redis
 +
    ports:
 +
      - "8080:8080"
 +
    environment:
 +
      - FLEET_MYSQL_USERNAME=root
 +
      - FLEET_MYSQL_PASSWORD=fleetpass
 +
      - FLEET_MYSQL_DATABASE=fleet
 +
      - FLEET_MYSQL_ADDRESS=mysql:3306
 +
      - FLEET_REDIS_ADDRESS=redis:6379
 +
    command: >
 +
      sh -c "
 +
      fleet prepare db &&
 +
      fleet serve
 +
      "
 +
    restart: unless-stopped
  
<pre>
+
volumes:
docker run -it --rm \
+
   mysql-data:
   --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>
 
</pre>
  
Anschließend Fleet-Container neustarten:
+
== Start ==
* docker restart fleet-fleet-1
+
Startet die Umgebung:
 +
* docker compose up -d
  
 
== Web-Oberfläche aufrufen ==
 
== Web-Oberfläche aufrufen ==
Zeile 135: Zeile 154:
  
 
== Hinweise ==
 
== Hinweise ==
* Die `docker-compose.yml` aus dem Repo enthält alle Dienste – kein eigenes Compose-File notwendig.
+
* Keine Kompilierung notwendig
* Änderungen an Ports oder Volumes können direkt in der vorhandenen Datei vorgenommen werden.
+
* Kein make, kein node, kein bazel
* Das Netzwerk `fleet_default` wird automatisch erzeugt.
+
* Datenbank wird automatisch initialisiert
* Der Befehl `fleet prepare db` muss **nur einmal** beim ersten Start ausgeführt werden.
+
* Umgebung ist sofort einsatzbereit
  
 
== Weitere Schritte ==
 
== Weitere Schritte ==

Version vom 18. April 2025, 11:36 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 (stabiles Setup)

Voraussetzungen

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

Vorbereitung

Lege ein neues Verzeichnis an und wechsle hinein:

  • mkdir fleet-quickstart
  • cd fleet-quickstart

Erstelle eine Datei namens docker-compose.yml mit folgendem Inhalt:

version: "3.7"

services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: fleetpass
      MYSQL_DATABASE: fleet
    volumes:
      - mysql-data:/var/lib/mysql
    restart: unless-stopped

  redis:
    image: redis:6.2
    restart: unless-stopped

  fleet:
    image: fleetdm/fleet:v4.45.0
    depends_on:
      - mysql
      - redis
    ports:
      - "8080:8080"
    environment:
      - FLEET_MYSQL_USERNAME=root
      - FLEET_MYSQL_PASSWORD=fleetpass
      - FLEET_MYSQL_DATABASE=fleet
      - FLEET_MYSQL_ADDRESS=mysql:3306
      - FLEET_REDIS_ADDRESS=redis:6379
    command: >
      sh -c "
      fleet prepare db &&
      fleet serve
      "
    restart: unless-stopped

volumes:
  mysql-data:

Start

Startet die Umgebung:

  • docker compose up -d

Web-Oberfläche aufrufen

Beim ersten Start:

  • Admin-Benutzer, Passwort und Organisation anlegen

Hinweise

  • Keine Kompilierung notwendig
  • Kein make, kein node, kein bazel
  • Datenbank wird automatisch initialisiert
  • Umgebung ist sofort einsatzbereit

Weitere Schritte

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