FleetDM: Policies, Queries und Labels (Debian 12): Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „== FleetDM: Policies, Queries und Labels für Debian 12 == === Übersicht === Diese Sammlung enthält grundlegende Policies, Live-Queries und Label-Abfragen f…“)
 
 
Zeile 1: Zeile 1:
== FleetDM: Policies, Queries und Labels für Debian 12 ==
 
  
=== Übersicht ===
+
=== Zielsetzung ===
Diese Sammlung enthält grundlegende Policies, Live-Queries und Label-Abfragen für den Einsatz von osquery unter FleetDM auf Debian 12-Systemen. Ziel ist ein schneller Einstieg in Sicherheitsprüfung und Systeminventarisierung.
+
Diese Anleitung beschreibt, wie man FleetDM verwendet, um grundlegende Sicherheitsrichtlinien, automatische Host-Gruppierung und geplante Sicherheitsabfragen einzurichten – vollständig über die Weboberfläche.
  
 
=== Voraussetzungen ===
 
=== Voraussetzungen ===
* Eine funktionierende FleetDM-Installation mit mindestens einem angebundenen Debian 12-Client
+
* Ein oder mehrere Hosts erscheinen unter „Hosts“
* osquery und orbit laufen korrekt auf dem Zielsystem
+
* Zugriff auf die FleetDM-Weboberfläche ist möglich (z. B. https://fleet.it113.int:8080)
* Der Zugriff auf die Fleet-Weboberfläche ist möglich
 
  
=== Policies (WebUI: Policies → Add a Policy) ===
+
=== Policies anlegen (Sicherheitsprüfungen) ===
*SSH-Server aktiv
+
* Öffne die Weboberfläche
 +
* Klicke auf „Settings“ → Reiter „Policies“
 +
* Klicke auf „+ Add a policy“
 +
* Gib einen Namen an (z. B. SSH-Server aktiv)
 +
* Trage die SQL-Abfrage ein:
 +
 
 +
<pre>
 
SELECT 1 FROM processes WHERE name = 'sshd' OR path = '/usr/sbin/sshd';
 
SELECT 1 FROM processes WHERE name = 'sshd' OR path = '/usr/sbin/sshd';
 +
</pre>
  
*UFW Firewall aktiv
+
* Wähle „All Hosts“ oder ein bestimmtes Label
SELECT * FROM processes WHERE name = 'ufw' OR path = '/usr/sbin/ufw';
+
* Speichere die Policy
  
*Root-Konto aktiv verwendet
+
Weitere Beispiele:
SELECT * FROM logged_in_users WHERE uid = 0;
 
  
*Auditd läuft
+
;Auditd läuft
 +
<pre>
 
SELECT * FROM processes WHERE name = 'auditd';
 
SELECT * FROM processes WHERE name = 'auditd';
 +
</pre>
  
*Hostname entspricht nicht Standard
+
;Root-Konto wurde genutzt
 +
<pre>
 +
SELECT * FROM logged_in_users WHERE uid = 0;
 +
</pre>
 +
 
 +
;Hostname entspricht nicht dem Muster „debian-*“
 +
<pre>
 
SELECT hostname FROM system_info WHERE hostname NOT LIKE 'debian-%';
 
SELECT hostname FROM system_info WHERE hostname NOT LIKE 'debian-%';
 +
</pre>
 +
 +
=== Labels erstellen (automatische Gruppierung) ===
 +
* Klicke auf „Hosts“ → Reiter „Labels“
 +
* Klicke auf „+ Create new label“
 +
* Gib einen Namen ein (z. B. Ist VM)
 +
* Trage die SQL-Abfrage ein:
 +
 +
<pre>
 +
SELECT * FROM system_info WHERE hardware_model LIKE '%VirtualBox%' OR hardware_model LIKE '%KVM%';
 +
</pre>
 +
 +
Weitere Beispiele:
 +
 +
;Ist ein Laptop (hat Akku)
 +
<pre>
 +
SELECT * FROM battery;
 +
</pre>
  
=== Queries (WebUI: Queries → New Query) ===
+
;Ist ein Server (Debian, kein Akku, kein GUI)
*Alle laufenden Prozesse
+
<pre>
SELECT name, pid, path, cmdline FROM processes;
+
SELECT * FROM os_version WHERE name = 'debian' AND platform = 'ubuntu' AND build != '';
 +
</pre>
  
*Aktive Benutzerkonten
+
Nach dem Speichern wird das Label automatisch auf passende Hosts angewendet.
SELECT username, uid, gid, directory, shell FROM users WHERE shell NOT IN ('/usr/sbin/nologin', '/bin/false');
 
  
*Listening Netzwerk-Ports
+
=== Scheduled Queries einrichten (regelmäßige Prüfungen) ===
SELECT pid, address, port, protocol, family FROM listening_ports;
+
* Klicke in der Weboberfläche auf „Schedule“
 +
* Klicke auf „+ Schedule a query“
 +
* Wähle eine bestehende oder neue gespeicherte Query
 +
* Gib das Intervall ein (z. B. „Every 24 hours“)
 +
* Wähle Zielhosts oder ein Label
 +
* Speichere den Zeitplan
  
*Welt-schreibbare Dateien unter /etc
+
Beispiele:
SELECT * FROM file WHERE directory = '/etc' AND mode LIKE '%w%';
 
  
*SUID-Binaries im System
+
;Tägliche SUID-Binary-Erkennung
 +
<pre>
 
SELECT path, permissions FROM suid_bin;
 
SELECT path, permissions FROM suid_bin;
 +
</pre>
  
=== Labels (WebUI: Hosts → Labels → Add Label) ===
+
;Welt-schreibbare Dateien unter /etc (alle 24h)
*Ist virtualisiert (VirtualBox oder KVM)
+
<pre>
SELECT * FROM system_info WHERE hardware_model LIKE '%VirtualBox%' OR hardware_model LIKE '%KVM%';
+
SELECT * FROM file WHERE directory = '/etc' AND mode LIKE '%w%';
 +
</pre>
  
*Ist ein Laptop (Batterie vorhanden)
+
;Offene Ports (alle 4 Stunden)
SELECT * FROM battery;
+
<pre>
 +
SELECT pid, address, port, protocol, family FROM listening_ports;
 +
</pre>
  
*Ist ein Server (Debian ohne Akku, GUI optional)
+
;Prozesse (alle 60 Minuten)
SELECT * FROM os_version WHERE name = 'debian' AND platform = 'ubuntu' AND build != '';
+
<pre>
 +
SELECT name, pid, path, cmdline FROM processes;
 +
</pre>
  
=== Hinweise ===
+
=== Ergebnis ===
* Policies zeigen sofort „pass“ oder „fail“ in der UI und sind webhookfähig
+
* Policies werden regelmäßig ausgewertet und zeigen „pass“ oder „fail“ pro Host
* Queries sind manuell oder geplant ausführbar
+
* Labels ordnen Hosts automatisch Gruppen zu
* Labels gruppieren Hosts automatisch nach Eigenschaften
+
* Scheduled Queries liefern regelmäßig verwertbare Ergebnisse
* Alle Abfragen sind auf Debian 12 getestet, funktionieren aber auch auf ähnlichen Systemen
+
* Alles funktioniert zentral über die Weboberfläche ohne zusätzliche Agenten- oder CLI-Konfiguration
  
 
[[Kategorie:FleetDM]]
 
[[Kategorie:FleetDM]]
 
[[Kategorie:osquery]]
 
[[Kategorie:osquery]]
[[Kategorie:Security Monitoring]]
+
[[Kategorie:xinux.net Anleitung]]
[[Kategorie:Debian]]
+
[[Kategorie:Sicherheitsrichtlinien]]

Aktuelle Version vom 20. April 2025, 08:34 Uhr

Zielsetzung

Diese Anleitung beschreibt, wie man FleetDM verwendet, um grundlegende Sicherheitsrichtlinien, automatische Host-Gruppierung und geplante Sicherheitsabfragen einzurichten – vollständig über die Weboberfläche.

Voraussetzungen

  • Ein oder mehrere Hosts erscheinen unter „Hosts“
  • Zugriff auf die FleetDM-Weboberfläche ist möglich (z. B. https://fleet.it113.int:8080)

Policies anlegen (Sicherheitsprüfungen)

  • Öffne die Weboberfläche
  • Klicke auf „Settings“ → Reiter „Policies“
  • Klicke auf „+ Add a policy“
  • Gib einen Namen an (z. B. SSH-Server aktiv)
  • Trage die SQL-Abfrage ein:
SELECT 1 FROM processes WHERE name = 'sshd' OR path = '/usr/sbin/sshd';
  • Wähle „All Hosts“ oder ein bestimmtes Label
  • Speichere die Policy

Weitere Beispiele:

Auditd läuft
SELECT * FROM processes WHERE name = 'auditd';
Root-Konto wurde genutzt
SELECT * FROM logged_in_users WHERE uid = 0;
Hostname entspricht nicht dem Muster „debian-*“
SELECT hostname FROM system_info WHERE hostname NOT LIKE 'debian-%';

Labels erstellen (automatische Gruppierung)

  • Klicke auf „Hosts“ → Reiter „Labels“
  • Klicke auf „+ Create new label“
  • Gib einen Namen ein (z. B. Ist VM)
  • Trage die SQL-Abfrage ein:
SELECT * FROM system_info WHERE hardware_model LIKE '%VirtualBox%' OR hardware_model LIKE '%KVM%';

Weitere Beispiele:

Ist ein Laptop (hat Akku)
SELECT * FROM battery;
Ist ein Server (Debian, kein Akku, kein GUI)
SELECT * FROM os_version WHERE name = 'debian' AND platform = 'ubuntu' AND build != '';

Nach dem Speichern wird das Label automatisch auf passende Hosts angewendet.

Scheduled Queries einrichten (regelmäßige Prüfungen)

  • Klicke in der Weboberfläche auf „Schedule“
  • Klicke auf „+ Schedule a query“
  • Wähle eine bestehende oder neue gespeicherte Query
  • Gib das Intervall ein (z. B. „Every 24 hours“)
  • Wähle Zielhosts oder ein Label
  • Speichere den Zeitplan

Beispiele:

Tägliche SUID-Binary-Erkennung
SELECT path, permissions FROM suid_bin;
Welt-schreibbare Dateien unter /etc (alle 24h)
SELECT * FROM file WHERE directory = '/etc' AND mode LIKE '%w%';
Offene Ports (alle 4 Stunden)
SELECT pid, address, port, protocol, family FROM listening_ports;
Prozesse (alle 60 Minuten)
SELECT name, pid, path, cmdline FROM processes;

Ergebnis

  • Policies werden regelmäßig ausgewertet und zeigen „pass“ oder „fail“ pro Host
  • Labels ordnen Hosts automatisch Gruppen zu
  • Scheduled Queries liefern regelmäßig verwertbare Ergebnisse
  • Alles funktioniert zentral über die Weboberfläche ohne zusätzliche Agenten- oder CLI-Konfiguration