Linux Sicherheit - Protokollierung

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Linux Sicherheit - Protokollierung

  • Protokollierung (Logging) ist ein unverzichtbarer Bestandteil der Systemsicherheit. Nur durch vollständige und unveränderliche Aufzeichnung von Ereignissen können Sicherheitsvorfälle erkannt, nachvollzogen und forensisch analysiert werden. Moderne Linux-Systeme setzen auf systemd-journald als zentrales Logging-Framework.*

Grundlagen

  • Logs dienen der Nachvollziehbarkeit von Systemereignissen, Authentifizierungen, Dienstaktivitäten und Fehlern.
  • Jede Sicherheitsstrategie ist wertlos, wenn keine ausreichende Protokollierung vorhanden ist.
  • Ziele der Protokollierung:
  • Erkennen von Angriffen und Fehlkonfigurationen.
  • Nachweis von Benutzeraktionen (Accountability).
  • Forensische Analyse nach einem Vorfall.
  • Seit systemd ist journald die Standardkomponente, klassische rsyslog- oder syslog-ng-Dienste sind optional.

systemd-journald Grundlagen

  • systemd-journald sammelt Meldungen aus Kernel, Systemdiensten, Anwendungen und der Konsole.
  • Alle Meldungen werden binär und manipulationssicher in /var/log/journal/ gespeichert.
  • Journald ersetzt herkömmliche Textlogs und unterstützt strukturierte Felder (Priority, Unit, PID, Message, etc.).

Journald-Status und Konfiguration prüfen

  • systemctl status systemd-journald
  • journalctl --verify
  • cat /etc/systemd/journald.conf
  • Standardmäßig werden Logs persistent in /var/log/journal gespeichert.
  • Falls das Verzeichnis fehlt, werden Logs nur temporär im RAM gehalten – und gehen beim Neustart verloren.
  • mkdir -p /var/log/journal
  • systemd-tmpfiles --create --prefix /var/log/journal
  • systemctl restart systemd-journald

Journald Konfigurationsparameter

  • vi /etc/systemd/journald.conf
[Journal]
Storage=persistent
Compress=yes
Seal=yes
SystemMaxUse=500M
MaxFileSec=1month
ForwardToSyslog=no
  • Storage=persistent: Logs dauerhaft speichern.
  • Compress=yes: ältere Log-Dateien komprimieren.
  • Seal=yes: kryptographische Prüfsummen zur Manipulationserkennung.
  • SystemMaxUse: Speicherplatzlimit.
  • MaxFileSec: maximale Zeitspanne pro Log-Datei.
  • systemctl restart systemd-journald

Logeinträge anzeigen

  • journalctl
  • journalctl -xe
  • journalctl -b
  • journalctl -p 3 -xb
  • journalctl -u ssh
  • journalctl _PID=1234
  • Logs lassen sich nach Priorität, Dienst, Zeit oder Benutzer filtern.
  • „-b“ zeigt nur Meldungen seit dem letzten Boot, „-p 3“ filtert nach Priorität (z. B. Fehler und kritische Einträge).

Filterung und Analyse

  • journalctl -p err..alert
  • journalctl --since "2025-11-01" --until "2025-11-11"
  • journalctl _SYSTEMD_UNIT=sshd.service
  • Journald erlaubt komplexe Filterabfragen, ideal für sicherheitsrelevante Analysen.
  • Auch kombinierte Filter sind möglich:
  • journalctl _UID=0 PRIORITY=3 -r
  • Zeigt die letzten Root-bezogenen Fehlermeldungen rückwärts sortiert.

Weiterleitung und zentrale Sammlung

  • Journald kann Ereignisse an zentrale Systeme weiterleiten (z. B. journald-remote, journal-gatewayd oder syslog-Forwarding).
  • systemctl enable --now systemd-journal-remote
  • systemctl enable --now systemd-journal-gatewayd
  • Logs können verschlüsselt über HTTPS oder HTTP abgerufen werden.
  • Kombination mit SIEM-Systemen (z. B. Wazuh, Graylog, ELK) möglich.
  • Beispiel: Journald-Forwarding auf externen Server:
  • journalctl -o export | ssh logserver "journalctl --import"

Manipulationsschutz und Integrität

  • Journald unterstützt kryptografisches Signieren („Seal“) der Logs.
  • Manipulationen führen zu Integritätsfehlern, die mit folgendem Befehl erkannt werden:
  • journalctl --verify
  • Für hohe Sicherheitsanforderungen kann journald-Logrotation mit systemd-cat kombiniert werden, um Anwendungen sicher zu protokollieren.
  • systemd-cat echo "Security event: user login failure"

Protokollierung sicherheitsrelevanter Ereignisse

  • Überwachung von Authentifizierungen:
  • journalctl _COMM=sshd
  • journalctl -t sudo
  • Überwachung fehlgeschlagener Logins:
  • journalctl -m USER_LOGIN --grep "FAILED"
  • Überwachung von sudo-Nutzung:
  • journalctl -u sudo --since today
  • Erkennung von Root-Eskalationen:
  • journalctl _UID=0 --since yesterday

Logrotation und Speicherverwaltung

  • journalctl --disk-usage
  • journalctl --vacuum-size=500M
  • journalctl --vacuum-time=30d
  • Alte Logs regelmäßig rotieren, um Speicherüberlauf zu verhindern.
  • Automatisierung über systemd-Timer empfohlen.

Integration in Überwachungssysteme

  • Journald kann direkt in Security-Tools eingebunden werden:
  • Fail2ban: wertet journald-Logs aus, um IPs bei Fehlversuchen zu blockieren.
  • apt install fail2ban -y
  • vi /etc/fail2ban/jail.local
[sshd]
enabled = true
backend = systemd
maxretry = 5
findtime = 600
bantime = 1800
  • systemctl enable --now fail2ban
  • Suricata und Wazuh können journald-Logs in Echtzeit auswerten.

Quick Checklist

  • Logs dauerhaft speichern (Storage=persistent).
  • Integrität aktivieren (Seal=yes).
  • SystemMaxUse begrenzen und regelmäßig rotieren.
  • Nur autorisierte Benutzer dürfen Logs lesen (Gruppe: systemd-journal).
  • Sicherheitsrelevante Logs (sshd, sudo, kernel) regelmäßig auswerten.
  • Logs zentral sammeln oder mit SIEM integrieren.
  • Fail2ban oder ähnliche Tools für automatisches Blocking nutzen.

Zusammenfassung

  • Protokollierung ist die Basis für Transparenz und Nachvollziehbarkeit in Linux-Systemen.
  • Mit systemd-journald steht ein leistungsfähiges, manipulationssicheres Framework zur Verfügung.
  • Nur wer überwacht, kann Angriffe erkennen – ein System ohne Logs ist blind.
  • Ziel: manipulationssichere, vollständige und zentral auswertbare Logdaten als Bestandteil jedes Sicherheitskonzepts.