Open Source im professionellen Einsatz

© j.berger, Photocase.com

Aus dem Alltag eines Sysadmin: Lsof

Kurz über lang

Je kürzer das Kommando, desto länger ist die Liste der möglichen Parameter. Das gilt nicht nur für

Lsof, ohne jeden weiteren Parameter ausgeführt, gibt eine lange, lange Liste aller geöffneten Dateien aus. Der Rattenschwanz ist nach der PID sortiert, beginnt also mit »init« . Auf dem Notebook, das ich gern zum Testen benutze, bringt es diese Liste auf nicht weniger als 6778 Einträge – schnell erfassbar ist etwas ganz anderes. Fast alle Kommandozeilenparameter, die Lsof entgegenzunehmen willens ist, lichten nur diesen Dateien-Filz.

Wenn ich zum Beispiel wissen möchte, welcher Prozess eine bestimmte Datei im Zugriff hat, gebe ich einfach deren Namen als Parameter an. Daraufhin liefert das Kommando »lsof /var/log/syslog« – leicht gekürzt – die folgende Ausgabe:

COMMAND PID USER
rsyslogd 683 syslog

Auf meinem System läuft also Rsyslog. Jetzt interessiert mich aber auch, mit welchen Dateien Rsyslog außerdem noch jongliert – das Kommando »lsof -c rsyslog« verrät es. Alternativ lasse ich mir außerdem alle Dateien ausgeben, die dem Benutzer »syslog« gehören. Diese Funktion übernimmt der Parameter »-u syslog« .

Da unter Linux sprichwörtlich alles ein File ist, also auch die Netzwerk-Sockets, präsentiert mir das Kommando »lsof -iTCP« alle aktuellen Netzwerkverbindungen. Wenn ich aber nur Dienste sehen will, die auf Verbindungen warten, ergänze ich die Zeile zu:

lsof -iTCP | grep LISTEN

Interessiert mich dagegen nur der Datenverkehr auf einem ganz bestimmten Port, etwa für SSH, zeigt mir »lsof -i :22« alle mit dem Port 22 assoziierten Verbindungen an.

Clever filtern, um zu wissen, was rausgeht

Auch ausgehende Verbindungen zu einem bestimmten Server kann ich ausfiltern. Dazu hänge ich an den »-i« -Parameter ein »@« gefolgt vom Namen oder der IP-Adresse des Zielsystems an, Abbildung 1 zeigt ein Beispiel. Diesen Filter zu verfeinern gelingt, indem ich die Nummer des Zielports anhänge:

Abbildung 1: Ausgehende Verbindungen in Richtung eines bestimmten Servers analysieren gelingt mit Anfragen nach dem Schema lsof -i@example.com.

Abbildung 1: Ausgehende Verbindungen in Richtung eines bestimmten Servers analysieren gelingt mit Anfragen nach dem Schema lsof -i@example.com.

lsof -i@example.com:22

Mit »-a« haben die Lsof-Erfinder um Victor A. Abell an Anwender wie mich gedacht, die gelegentlich Filterfunktionen verketten wollen:

lsof -a -u charly -i@example.com:22

Dieser Befehl listet alle ausgehenden SSH-Verbindungen zum Server Example.com, die Benutzer »charly« aufgebaut hat. Lsof ist also nur auf den ersten Blick unscheinbar, nach dem zweiten und »man lsof« wird es zum unverzichtbaren Werkzeug. (jk)

Der Autor

Charly Kühnast administriert Unix-Systeme im Rechenzentrum Niederrhein in Kamp-Lintfort. Zu seinen Aufgaben gehören die Sicherheit und Verfügbarkeit der Firewalls und der DMZ. Im heißen Teil seiner Freizeit frönt er dem Kochen, im feuchten Teil der Süßwasseraquaristik und im östlichen lernt er Japanisch.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 1 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook