linux-cli-shell cli monitoring networking lsof security advanced

Lsof: Monitoring Open Files & Ports (Artikel 270)

Beherrschung des lsof-Werkzeugs zur Identifizierung offener Dateien und Netzwerkverbindungen. Erfahren Sie, wie Sie blockierte Ressourcen finden und Sicherheits-Audits durchführen.

# Lsof Mastery: Alles ist eine Datei

TL;DR / Management Summary Das Unix-Dogma lautet: Everything is a file. Egal ob eine echte Textdatei, eine Netzwerkverbindung (Socket), eine Hardware-Komponente oder eine Pipe – für den Kernel ist es ein File Descriptor. lsof (List Open Files) ist das Fenster in dieses Universum. Ein Senior Admin nutzt lsof, um zu sehen, welcher Prozess eine Partition blockiert, wer auf einem Port lauscht oder welche Dateien ein verdächtiger User gerade im Zugriff hat.


# 1. Einführung & Architektur

Der Blick auf die File Descriptors.

Jeder Prozess hat ein Verzeichnis unter /proc/<PID>/fd/. lsof aggregiert diese Informationen in einer lesbaren Form.

# Die Analyse-Szenarien (Mermaid)

graph TD
    A[lsof command] --> B{What to find?}
    B -->|Network| C[Ports: -i :80]
    B -->|Process| D[Files by PID: -p 1234]
    B -->|User| E[Files by User: -u admin]
    B -->|Partition| F[Blockers: /mnt/data]
    C/D/E/F --> G[Result: PID, User, Command, File Path]

# 2. Netzwerkanalyse: Wer hört zu?

Ersatz für netstat/ss.

# Alle offenen Netzwerkverbindungen

sudo lsof -i

# Spezifischen Port prüfen

sudo lsof -i :22
# Zeigt genau, welcher SSH-Prozess welche IP-Verbindung hält.

# 3. Datei-Management: Den Blocker finden

Unmount-Probleme lösen.

# Wer blockiert /mnt/data?

sudo lsof +D /mnt/data
# Findet alle Prozesse, die Dateien in diesem Pfad offen haben.

# In welche Dateien schreibt ein Prozess gerade?

sudo lsof -p 1234

# 4. Day-2 Operations: Security Audit

Sichtbarkeit von Aktivitäten.

# Welche Dateien nutzt der User ‘johndoe’?

sudo lsof -u johndoe

# Gelöschte Dateien finden, die Platz fressen

sudo lsof | grep "(deleted)"
# Ideal, um Prozesse zu finden, die gelöschte Log-Files offen halten.

# 5. Troubleshooting & “War Stories”

Wenn lsof zur Rettung eilt.

# Story 1: “Die unlöschbare Partition”

Symptom: umount /data schlägt fehl mit target is busy. Ursache: Ein vergessener screen oder tmux Prozess hält eine Shell in diesem Verzeichnis offen. Lösung: lsof +D /data zeigt die PID der Shell. Beenden Sie die Shell, und der Unmount funktioniert sofort.

# Story 2: “Das Port-Geheimnis”

Symptom: Der Webserver startet nicht, weil Port 80 angeblich belegt ist. ss zeigt den Port als LISTEN, verrät aber den Namen des Prozesses nicht. Ursache: Ein verwaister Worker-Prozess oder ein Container-Proxy blockiert den Socket. Lösung: sudo lsof -i :80. Das Tool zeigt Ihnen die PID. Oft ist es ein abgestürzter Vorgängerprozess, der nicht sauber aufgeräumt hat.


# 6. Fazit & Empfehlung

  • Pflicht: Nutzen Sie das Flag -n (No DNS) und -P (No Port Names), wenn das Netzwerk langsam ist. Es beschleunigt lsof massiv.
  • Wahl: Nutzen Sie lsof für Datei-Probleme und ss für reine Netzwerk-Probleme.
  • Sicherheit: Ein regelmäßiger Check mit lsof -i findet oft unautorisierte Backdoor-Sockets.

# Anhang: Cheatsheet

Aufgabe Befehl
Port suchen lsof -i :<port>
IPv4 Verbindungen lsof -i 4
Alles von PID lsof -p <pid>
Alles von User lsof -u <user>
Blockierte Directory lsof +D <path>
Nur PIDs ausgeben lsof -t -i :80 (Ideal für scripts)
Keine Namen (schnell) lsof -nP
Gelöschte Dateien lsof +L1
Bestimmte Datei lsof /etc/passwd
Hilfe lsof -h