Quellen-Konfiguration

Version: 1.0 Datum: 2026-02-10 Autor: IceDataEmphasise Team Klassifikation: INTERN

Revisionshistorie

Version Datum Autor Beschreibung
1.0 2026-02-10 IceDataEmphasise Team Initiale Erstellung der Quellen-Dokumentation (12 Quellen)

Inhaltsverzeichnis

  1. Uebersichtstabelle aller Quellen
  2. Detailbeschreibung pro Quelle
  3. Berechtigungskonzept
  4. Konfiguration via REST API
  5. Monitoring der Quellen
  6. Troubleshooting

1. Uebersichtstabelle aller Quellen

Das Projekt konfiguriert insgesamt 12 Log-Quellen, die ueber Cribl Edge gesammelt und an Cribl Stream zur Verarbeitung weitergeleitet werden. Alle Quellen-Konfigurationen befinden sich als JSON-Dateien unter configs/stream/sources/.

# Quellen-ID Typ Pfad / Quelle Dateifilter Konfigurationsdatei
1 journald:systemd_journal Journald /run/log/journal -- systemd-journal.json
2 file_monitor:apache_access File Monitor /var/log/apache2/access.log* access.log* apache-access.json
3 file_monitor:apache_error File Monitor /var/log/apache2/error.log* error.log* apache-error.json
4 file_monitor:samba File Monitor /var/log/samba/log.* log.* samba.json
5 file_monitor:docker_ha File Monitor /var/lib/docker/containers/*/*.log *.log docker-ha.json
6 file_monitor:mosquitto File Monitor /var/lib/docker/containers/*/*.log *.log (gefiltert) mosquitto.json
7 file_monitor:ssh_auth File Monitor /var/log/auth.log auth.log ssh-auth.json
8 file_monitor:tor_logs File Monitor /var/log/tor/* * tor.json
9 file_monitor:dnsmasq File Monitor /var/log/dnsmasq-tor.log dnsmasq-tor.log dnsmasq.json
10 file_monitor:cups File Monitor /var/log/cups/access_log access_log cups.json
11 file_monitor:boot_logs File Monitor /var/log/boot.log* boot.log* boot.json
12 file_monitor:dpkg File Monitor /var/log/dpkg.log* dpkg.log* dpkg.json
Gemeinsame Einstellungen: Alle Quellen teilen folgende Standardwerte: disabled: false, sendToRoutes: true, staleChannelFlushMs: 10000, pqEnabled: false.

2. Detailbeschreibung pro Quelle

2.1 Systemd Journal

EigenschaftWert
IDjournald:systemd_journal
TypJournald
Journal-Pfad/run/log/journal
Unit-FilterAlle Units (kein Filter)
BeschreibungErfasst alle systemd Journal-Eintraege, inkl. Kernel, Init, Services
RelevanzZentrale Quelle fuer System-Events, Service-Starts/-Stops, Kernel-Meldungen
Voraussetzung: Der Service-User cribl muss Mitglied der Gruppe systemd-journal sein.

2.2 Apache Access Logs

EigenschaftWert
IDfile_monitor:apache_access
TypFile Monitor
Pfad/var/log/apache2/access.log*
Dateifilteraccess.log*
FormatApache Combined Log Format (CLF)
Pipelinepipeline_apache_clf
Extrahierte Felderclient_ip, method, uri, status, bytes, referrer, user_agent

2.3 Apache Error Logs

EigenschaftWert
IDfile_monitor:apache_error
TypFile Monitor
Pfad/var/log/apache2/error.log*
Dateifiltererror.log*
BeschreibungApache-Fehlermeldungen, Modul-Warnungen, PHP-Fehler

2.4 Samba Logs

EigenschaftWert
IDfile_monitor:samba
TypFile Monitor
Pfad/var/log/samba/log.*
Dateifilterlog.*
BeschreibungSamba-Dateiserver-Logs: Zugriffsprotokolle, Authentifizierungsereignisse, Verbindungsfehler

2.5 Docker / Home Assistant Logs

EigenschaftWert
IDfile_monitor:docker_ha
TypFile Monitor
Pfad/var/lib/docker/containers/*/*.log
Dateifilter*.log
FormatDocker JSON Log Format
BeschreibungContainer-Logs aller Docker-Container, inkl. Home Assistant
Hinweis: Der Pfad /var/lib/docker/containers/ erfordert die Gruppenzugehoerigkeit docker fuer den Service-User.

2.6 Mosquitto MQTT Broker Logs

EigenschaftWert
IDfile_monitor:mosquitto
TypFile Monitor
Pfad/var/lib/docker/containers/*/*.log
Filterausdruck_raw.includes('mosquitto') || source.includes('mosquitto')
BeschreibungMQTT-Broker-Logs, gefiltert aus den Docker-JSON-Logs. Erfasst Verbindungen, Subscriptions und Publish-Events.
Besonderheit: Diese Quelle nutzt einen filterExpr, um aus allen Docker-Container-Logs nur die Mosquitto-relevanten Events zu extrahieren.

2.7 SSH Authentication Logs

EigenschaftWert
IDfile_monitor:ssh_auth
TypFile Monitor
Pfad/var/log/auth.log
Dateifilterauth.log
Pipelinepipeline_syslog_enrichment
BeschreibungSSH-Anmeldeversuche, PAM-Events, sudo-Nutzung. Sicherheitsrelevante Quelle.
Sicherheitsrelevanz: Diese Quelle ist fuer die Erkennung von Brute-Force-Angriffen und unbefugten Zugriffsversuchen essenziell. Ein Ausfall der Erfassung muss sofort bemerkt werden.

2.8 Tor Service Logs

EigenschaftWert
IDfile_monitor:tor_logs
TypFile Monitor
Pfad/var/log/tor/*
Dateifilter* (alle Dateien)
BeschreibungTor-Dienst-Logs: Circuit-Aufbau, Verbindungsereignisse, Fehlermeldungen

2.9 dnsmasq (Tor DNS Resolver)

EigenschaftWert
IDfile_monitor:dnsmasq
TypFile Monitor
Pfad/var/log/dnsmasq-tor.log
Dateifilterdnsmasq-tor.log
BeschreibungDNS-Aufloesung ueber den Tor-spezifischen dnsmasq-Resolver. Protokolliert DNS-Anfragen und -Antworten.

2.10 CUPS Print Server

EigenschaftWert
IDfile_monitor:cups
TypFile Monitor
Pfad/var/log/cups/access_log
Dateifilteraccess_log
BeschreibungCUPS-Druckserver-Zugriffsprotokolle: Druckauftraege, Druckeraktionen, IPP-Anfragen

2.11 Boot Logs

EigenschaftWert
IDfile_monitor:boot_logs
TypFile Monitor
Pfad/var/log/boot.log*
Dateifilterboot.log*
BeschreibungSystem-Boot-Protokolle: Service-Initialisierung, Kernel-Meldungen waehrend des Startvorgangs

2.12 dpkg (Paketverwaltung)

EigenschaftWert
IDfile_monitor:dpkg
TypFile Monitor
Pfad/var/log/dpkg.log*
Dateifilterdpkg.log*
BeschreibungDebian-Paketverwaltungs-Log: Installationen, Upgrades, Deinstallationen. Wichtig fuer Change-Management und Compliance-Nachverfolgung.

3. Berechtigungskonzept

3.1 Service-User: cribl

Der Cribl Edge Prozess laeuft unter einem dedizierten, nicht-privilegierten Service-User cribl. Der Zugriff auf Log-Dateien wird ueber Gruppenmitgliedschaften und Linux Capabilities gesteuert.

Konfiguration Wert Zweck
Primaere Gruppe cribl Eigene Gruppe fuer Cribl-Dateien
Supplementaer: adm Mitglied Lesen von /var/log/ Dateien (syslog, auth, dpkg, boot, cups)
Supplementaer: systemd-journal Mitglied Lesen von systemd Journal unter /run/log/journal/
Supplementaer: docker Mitglied Lesen von Docker Container-Logs unter /var/lib/docker/

3.2 Capabilities (systemd)

# Aus cribl-edge.service:
AmbientCapabilities=CAP_DAC_READ_SEARCH CAP_SYSLOG
CapabilityBoundingSet=CAP_DAC_READ_SEARCH CAP_SYSLOG CAP_NET_BIND_SERVICE
Capability Beschreibung Benoetigt fuer
CAP_DAC_READ_SEARCH Umgeht Datei-Leseberechtigungspruefungen Lesen von Log-Dateien, auf die der cribl-User keinen direkten Zugriff hat
CAP_SYSLOG Zugriff auf Kernel-Log-Puffer Lesen von Syslog-/Kernel-Nachrichten
CAP_NET_BIND_SERVICE Binden an Ports < 1024 Optionaler Syslog-Empfang auf Port 514

3.3 Sicherheits-Hardening

# Aus cribl-edge.service:
NoNewPrivileges=false          # Fuer Capabilities erforderlich
ProtectSystem=full             # /usr und /boot read-only
ReadWritePaths=/opt/cribl-edge # Nur Edge-Verzeichnis beschreibbar
ProtectHome=true               # /home nicht zugreifbar
LimitNOFILE=65536              # File-Descriptor-Limit
LimitNPROC=8192                # Prozess-Limit

3.4 ACL-Konfiguration (erweitert)

Fuer Dateien, auf die weder ueber Gruppenzugehoerigkeit noch Capabilities zugegriffen werden kann, koennen POSIX ACLs (Access Control Lists) eingesetzt werden:

# ACL fuer Tor-Logs setzen (falls Standard-Berechtigungen nicht ausreichen)
sudo setfacl -R -m u:cribl:rX /var/log/tor/
sudo setfacl -R -d -m u:cribl:rX /var/log/tor/

# ACL fuer Samba-Logs
sudo setfacl -R -m u:cribl:rX /var/log/samba/
sudo setfacl -R -d -m u:cribl:rX /var/log/samba/

# ACLs pruefen
getfacl /var/log/tor/
getfacl /var/log/samba/

4. Konfiguration via REST API

4.1 Automatisierte Quellen-Konfiguration

Die Quellen werden ueber das Konfigurationsskript 04-configure-sources.sh (geplant) automatisiert erstellt. Die Konfigurationsdateien liegen unter configs/stream/sources/.

4.2 Einzelne Quelle erstellen (Beispiel)

# Authentifizierung
source scripts/lib/common.sh
source scripts/lib/api-helpers.sh
cribl_auth

# File-Monitor-Quelle erstellen
cribl_create_source "file_monitor" "configs/stream/sources/ssh-auth.json"

# Journald-Quelle erstellen
cribl_create_source "journald" "configs/stream/sources/systemd-journal.json"

# Konfiguration committen und deployen
cribl_commit_deploy "Log-Quellen konfiguriert"

4.3 Alle 12 Quellen erstellen (Batch)

# Geplanter Ablauf in 04-configure-sources.sh:

# File-Monitor-Quellen (11 Stueck)
for config in configs/stream/sources/*.json; do
    source_type=$(jq -r '.type' "$config")
    cribl_create_source "$source_type" "$config"
done

# Destinations erstellen
cribl_create_destination "splunk_hec" "configs/stream/destinations/splunk-hec.json"
cribl_create_destination "splunk_s2s" "configs/stream/destinations/splunk-s2s.json"

# Pipelines erstellen
cribl_create_pipeline "configs/stream/pipelines/pipeline-syslog-enrichment.json"
cribl_create_pipeline "configs/stream/pipelines/pipeline-apache-clf.json"

# Committen und deployen
cribl_commit_deploy "Vollstaendige Quellen-, Pipeline- und Destination-Konfiguration"

4.4 Quellen auflisten

# Alle konfigurierten Quellen abfragen
curl -s http://localhost:9000/api/v1/m/default/system/inputs \
  -H "Authorization: Bearer $TOKEN" | jq '.items[] | {id: .id, type: .type, disabled: .disabled}'

# Oder ueber api-helpers.sh:
cribl_list_sources

4.5 Quelle aktualisieren

# Bestehende Quelle aktualisieren (PATCH)
curl -s -X PATCH "http://localhost:9000/api/v1/m/default/system/inputs/file_monitor/file_monitor:ssh_auth" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"disabled": false, "staleChannelFlushMs": 5000}'

5. Monitoring der Quellen

5.1 Input-Metriken in der Stream-UI

Fuer jede konfigurierte Quelle stellt Cribl Stream Echtzeit-Metriken bereit. Diese sind im Dashboard unter Monitoring > Sources einsehbar.

Metrik Beschreibung Einheit
Events In Anzahl eingehender Events pro Zeiteinheit Events/s
Bytes In Eingehendes Datenvolumen pro Zeiteinheit Bytes/s
Total Events Gesamtzahl verarbeiteter Events Anzahl
Errors Fehler beim Lesen/Verarbeiten Anzahl
Health Status Gesamtzustand der Quelle Gruen / Gelb / Rot

5.2 Metriken ueber die API abfragen

# Input-Metriken fuer eine bestimmte Quelle
curl -s http://localhost:9000/api/v1/system/metrics \
  -H "Authorization: Bearer $TOKEN" | jq '.inputs'

# Spezifische Quelle filtern
curl -s http://localhost:9000/api/v1/system/metrics \
  -H "Authorization: Bearer $TOKEN" | jq '.inputs | to_entries[] | select(.key | contains("ssh_auth"))'

5.3 Erwartete Volumen-Richtwerte (PoC)

Quelle Erwartetes Volumen Anmerkung
Systemd Journal Hoch (100+ Events/Min.) Umfasst alle System-Services
Apache Access Mittel (abhaengig von Traffic) Jeder HTTP-Request ein Event
SSH Auth Niedrig bis Mittel Steigt bei Anmeldeversuchen
Docker HA Mittel Abhaengig von Home-Assistant-Aktivitaet
dpkg Sehr niedrig Nur bei Paketinstallationen/Updates
Boot Logs Sehr niedrig Nur bei Systemstart

6. Troubleshooting

6.1 Berechtigungsfehler

Fehler Ursache Loesung
EACCES: permission denied fuer /var/log/auth.log cribl-User nicht in Gruppe adm sudo usermod -aG adm cribl + Edge-Neustart
EACCES fuer /run/log/journal cribl-User nicht in Gruppe systemd-journal sudo usermod -aG systemd-journal cribl + Edge-Neustart
EACCES fuer /var/lib/docker/containers/ cribl-User nicht in Gruppe docker sudo usermod -aG docker cribl + Edge-Neustart
ENOENT: no such file Log-Datei existiert (noch) nicht Pruefen ob der entsprechende Dienst laeuft und Logs schreibt

6.2 Fehlende Logs

# 1. Pruefen, ob die Log-Datei existiert und beschrieben wird
ls -la /var/log/auth.log
tail -5 /var/log/auth.log

# 2. Pruefen, ob der cribl-User die Datei lesen kann
sudo -u cribl cat /var/log/auth.log | head -1

# 3. Pruefen, ob die Quelle in Cribl aktiviert ist
curl -s http://localhost:9000/api/v1/m/default/system/inputs/file_monitor \
  -H "Authorization: Bearer $TOKEN" | jq '.items[] | select(.id | contains("ssh_auth")) | {id, disabled}'

# 4. Edge-Logs auf Fehlermeldungen pruefen
journalctl -u cribl-edge --no-pager | grep -i "error\|permission\|denied" | tail -20

6.3 Haeufige Probleme

Problem Diagnose Loesung
Quelle zeigt "Events In = 0" Log-Datei leer oder nicht vorhanden; Dienst schreibt keine Logs Dienst pruefen/starten; Pfad in der Quellen-Konfiguration pruefen
Doppelte Events Mosquitto-Quelle und Docker-HA-Quelle lesen gleiche Dateien Mosquitto-Quelle verwendet filterExpr zur Filterung -- Route-Konfiguration pruefen
Hohe Latenz staleChannelFlushMs zu hoch Wert reduzieren (z.B. auf 5000ms) fuer schnellere Event-Weiterleitung
Rotierte Dateien nicht gelesen Glob-Pattern erfasst rotierte Dateien nicht Wildcard im Pfad verwenden: /var/log/dpkg.log*
Quellen-Konfiguration nicht angewendet Aenderung nicht committed/deployed cribl_commit_deploy("Beschreibung") ausfuehren

6.4 Schnelltest: Alle Quellen pruefen

# Schnelltest: Pruefen, ob alle 12 Quell-Pfade lesbar sind
PATHS=(
    "/run/log/journal"
    "/var/log/apache2/access.log"
    "/var/log/apache2/error.log"
    "/var/log/samba/"
    "/var/lib/docker/containers/"
    "/var/log/auth.log"
    "/var/log/tor/"
    "/var/log/dnsmasq-tor.log"
    "/var/log/cups/access_log"
    "/var/log/boot.log"
    "/var/log/dpkg.log"
)

for path in "${PATHS[@]}"; do
    if sudo -u cribl test -r "$path" 2>/dev/null; then
        printf "%-45s: LESBAR\n" "$path"
    else
        printf "%-45s: NICHT LESBAR\n" "$path"
    fi
done