Linux Sicherheit - Protokollierung
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.