FleetDM: Policies, Queries und Labels (Debian 12)
Version vom 20. April 2025, 08:34 Uhr von Thomas.will (Diskussion | Beiträge)
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