Eindringlingsalarm bei Linux - Seite 2

Offene Dateien löschen

Nachrichten ins Nirwana
Dateien können unter Unix/Linux gelöscht werden, obwohl sie von einem Prozess noch geöffnet sind. Ein Effekt davon ist, dass der Prozess, der die Datei noch verwendet, ohne Probleme weiter in die Datei schreiben und Daten aus ihr lesen kann. Dieses Phänomen macht sich Hacker-Software häufig zu Nutze, wenn sie Daten zwischenspeichern muss.

Hier eine kleine Demonstration dieses Prinzips: Wenn Sie in die Datei ~/sniffer durch das Kommando

cat > ~/sniffer
alle Eingaben von der Standardeingabe (normalerweise Tastatur) hineinschreiben, wird eine Datei zum Schreiben geöffnet. Setzen Sie nun diesen Prozess durch die Tastenkombination [Strg+Z] in den Hintergrund. Anschließend löschen Sie die Datei durch
rm -f ~/sniffer
Wie Sie anhand von
ls ~/sniffer
sehen, existiert die Datei nicht mehr. Holen Sie jetzt den cat-Prozess durch
fg
wieder in den Vordergrund. Tippen Sie ein paar Zeichen und Sie sehen, dass keine Fehlermeldung kommt. Die Datei ist ja noch offen und somit beschreibbar. Setzen Sie den Prozess wieder in den Hintergrund und schauen Sie mit ls nochmals nach, ob die Datei ~/sniffer existiert. Ergebnis: nein.

Durch den Befehl
lsof +L1
erhalten Sie eine Liste der offenen Dateien, deren Link-Count kleiner 1 ist - die also gelöscht sind. Sie werden in der Ausgabe eine ähnliche Zeile wie diese finden:
cat     2415 root    1w   REG    3,7    8     0 160497 /root/sniffer (deleted)
Die Datei ist also noch offen und wird vom cat-Prozess weiter benutzt. Wenn Sie jetzt noch ein paar Mal mit dem cat-Prozess spielen und weitere Zeichen eingeben und lsof danach aufrufen, werden Sie auch feststellen, dass sich die Größe der Datei (zweiter Wert nach "REG") ändert. Die Daten werden also wirklich noch in der Datei gespeichert.

Wenn Sie sich den cat-Prozess durch fg wieder in den Vordergrund holen und [Strg+D] drücken, bereiten Sie dem Spuk ein Ende.

0 * * * *   lsof +L1 | awk ' { if(NR != 1 && $1 != "httpd"){ print }}'
lsof nicht per Standard im System
Bei vielen Distributionen wird lsof nicht per Default installiert. Sie müssen entweder ein Sicherheitspaket zur Installation auswählen, oder den Befehl aus einem Dschungel von Software-Paketen auswählen. Sie finden dieses Kommando jedoch zumeist auf den Installationsmedien Ihrer Distribution in einem separaten Paket lsof, häufig eingeordnet in Kategorien wie "Systemutilities" oder "Administrationstools".

Die neuste Version dieses hilfreichen Tools finden Sie außerdem unter der URL ftp://vic.cc.purdue.edu/pub/tools/unix/lsof/. Falls Ihre Distribution dieses Werkzeug nicht mitliefern sollte, decken Sie sich einfach an dieser Stelle ein.

Artikel kommentieren