linux-security security sudo audit forensics hardening advanced

Sudo Hardening: Session Recording & Audit (Artikel 325)

Maximale Absicherung des sudo-Befehls. Erfahren Sie alles über Session-Recording (I/O Logging), zentrale Log-Server und die revisionssichere Protokollierung administrativer Aktionen.

# Sudo Hardening: Jede Aktion lückenlos überwachen

TL;DR / Management Summary In hochregulierten Umgebungen reicht es nicht zu wissen, dass jemand Sudo genutzt hat. Wir müssen wissen, was genau getan wurde. Mit Sudo I/O Logging zeichnen wir jede Tastatureingabe und jede Bildschirmausgabe einer Sudo-Sitzung auf – wie ein digitaler Videorekorder. In diesem Modul lernen wir, wie wir diese “Session Recordings” aktivieren, zentral speichern und mittels sudoreplay für forensische Analysen wiedergeben.


# 1. Einführung & Architektur

Die visuelle Kontrolle.

Sudo kann so konfiguriert werden, dass es den gesamten Datenstrom (stdin, stdout, stderr) in eine Datei schreibt.

# Die Audit-Architektur (Mermaid)

graph TD
    A[Admin User] -->|sudo -i| B[Sudo Engine]
    B -->|Start Recording| C[/var/log/sudo-io/]
    B -->|Execute| D[Shell / Command]
    D -->|Screen Output| B
    B -->|Write to| C
    E[Security Auditor] -->|sudoreplay| C
    C -->|Playback Session| E

# 2. Implementierung: I/O Logging aktivieren

Der Mitschnitt.

Erstellen Sie eine Datei unter /etc/sudoers.d/99-audit:

# Aktiviert I/O Logging für alle User
Defaults iolog_dir=/var/log/sudo-io/%{user}/%{command}
Defaults log_stdin, log_stdout, log_stderr

Performance & Disk: I/O Logging erzeugt bei interaktiven Befehlen (z.B. vim oder top via Sudo) massive Datenmengen. Überwachen Sie den Speicherplatz von /var/log/sudo-io/!


# 3. Session Replay: Die forensische Analyse

Die Vergangenheit abspielen.

Wenn ein Vorfall gemeldet wird, können Sie die Sitzung wie einen Film ansehen.

# Sitzungen finden

sudo sudoreplay -l user=admin

# Sitzung wiedergeben

sudo sudoreplay <session_id>
  • Tipp: Mit der Taste > können Sie die Wiedergabe beschleunigen.

# 4. Day-2 Operations: Zentrales Logging

Revisionssicherheit.

Lokale Logs auf dem Server können von einem Angreifer mit Root-Rechten gelöscht werden. Nutzen Sie ab Sudo 1.9.0 den sudo_logsrvd, um Logs in Echtzeit an einen zentralen, gehärteten Log-Server zu senden.


# 5. Troubleshooting & “War Stories”

Wenn der Admin sich beobachtet fühlt.

# Story 1: “Das Passwort im Log”

Symptom: Ein Security-Audit stellt fest, dass in den Sudo-I/O-Logs Passwörter im Klartext stehen. Ursache: Der Admin hat innerhalb einer Sudo-Sitzung ein Tool gestartet, das nach einem Passwort fragt (z.B. mysql -p). Da stdin geloggt wird, landet das Passwort in der I/O-Log-Datei. Lösung: Beschränken Sie das I/O-Logging auf kritische User oder Gruppen. Nutzen Sie für Passwörter immer Maskierungstools oder externe Passwort-Safes.

# Story 2: “Terminal-Resize Chaos”

Symptom: sudoreplay zeigt nur Zeichensalat oder verschobene Fenster an. Ursache: Der Admin hat während der Sitzung die Größe seines Terminalfensters geändert. Sudo zeichnet die Dimensionen nicht dynamisch auf. Lösung: Nutzen Sie das Flag Defaults log_rows, log_cols, um die initiale Größe zu fixieren, und bitten Sie Admins, das Fenster während Sudo-Sitzungen nicht zu skalieren.


# 6. Fazit & Empfehlung

  • Pflicht: Aktivieren Sie einfaches Sudo-Logging (Defaults logfile=...) auf jedem Server.
  • Wahl: Nutzen Sie I/O Logging nur auf “High-Value” Targets (Domain Controller, Backup-Server).
  • Sicherheit: Sichern Sie das Verzeichnis /var/log/sudo-io/ mit restriktiven Rechten (700 für root).

# Anhang: Cheatsheet

Aufgabe Syntax / Befehl
I/O Log Pfad Defaults iolog_dir=...
Alles loggen Defaults log_output
Nur bestimmte Befehle Defaults!/usr/bin/passwd !log_output
Sitzungen suchen sudoreplay -l
Echtzeit-Play sudoreplay -f
TTY erzwingen Defaults requiretty
Env nicht erben Defaults env_reset
Logfile Pfad /var/log/sudo.log