Alte digitale Daten sollten mit der gleichen Sorgfalt behandelt werden wie Papierdokumente, wenn es um die Vernichtung geht. Wir zeigen Ihnen, was Sie über das sichere Löschen von Dateien unter Linux wissen müssen. In diesem Leitfaden werden wir das Kommando `shred` und andere nützliche Programme zur sicheren Datenlöschung beleuchten.
Warum gelöschte Dateien oft wiederherstellbar sind
Das einfache Löschen einer Datei entfernt sie nicht endgültig von Ihrer Festplatte. Der Schlüssel liegt in der Funktionsweise Ihres Dateisystems mit Inodes. Inodes sind Datenstrukturen innerhalb des Dateisystems, die Metadaten zu Dateien enthalten. Dazu gehören der Dateiname, die Position auf der Festplatte, Attribute, Berechtigungen und mehr. Ein Verzeichnis ist im Grunde auch nur eine Datei, die die Namen und Inode-Nummern der darin enthaltenen Dateien speichert.
Wenn Sie eine Datei mit dem Befehl `rm` löschen, gibt das Dateisystem den zugehörigen Inode frei und aktualisiert das Verzeichnis. Der Speicherplatz, der von der Datei genutzt wurde, wird als verfügbar markiert. Stellen Sie sich vor, Sie gehen in eine Bibliothek, finden eine Buchkarte im Katalog und zerreißen sie. Das Buch ist immer noch im Regal, aber es ist schwieriger, es zu finden.
Der von der Datei belegte Speicherplatz kann nun von anderen Dateien genutzt werden. Die alten Daten bleiben jedoch erhalten, bis dieser Bereich überschrieben wird. Bis dahin besteht eine gute Chance, dass die Datei wiederhergestellt werden kann. Ein vollständiges Löschen ist also komplexer als nur das Überschreiben.
Wichtig: Nicht auf SSDs anwenden
Die hier beschriebenen Methoden sind für herkömmliche Festplatten (HDDs) gedacht und sollten nicht für Solid State Drives (SSDs) verwendet werden. Dies ist ineffizient und führt zu unnötigen Schreibvorgängen und erhöhtem Verschleiß bei SSDs. Für die sichere Datenlöschung auf SSDs verwenden Sie bitte die vom Hersteller bereitgestellten Tools.
Das Kommando `shred`
Das Kommando `shred` ist dafür konzipiert, die Datenüberschreibung durchzuführen, sodass gelöschte Dateien nicht wiederhergestellt werden können. Es ist in den meisten gängigen Linux-Distributionen wie Ubuntu, Fedora und Manjaro enthalten.
In diesem Beispiel arbeiten wir in einem Verzeichnis namens `~/research`, das Textdateien und andere Verzeichnisse enthält. Wir nehmen an, dass diese Dateien sensible Daten enthalten und vollständig gelöscht werden müssen.
Mit dem Befehl `tree` können wir die Verzeichnisstruktur anzeigen. Die Option `-d` sorgt dafür, dass `tree` nur Verzeichnisse und keine Dateien auflistet. Hier ist die Baumstruktur:
tree -d
Eine einzelne Datei mit `shred` löschen
So löschen wir eine einzelne Datei mit `shred` und den folgenden Optionen:
- `u`: Datei freigeben und nach dem Überschreiben entfernen.
- `v`: Ausführliche Ausgabe, damit `shred` seine Aktionen anzeigt.
- `z`: Abschließendes Überschreiben mit Nullen.
shred -uvz Preliminary_Notes.txt_01.txt
`shred` überschreibt die Datei standardmäßig viermal. Die ersten drei Durchgänge verwenden Zufallsdaten, der letzte Durchgang Nullen, wie angefordert. Anschließend wird die Datei entfernt und Metadaten im Inode überschrieben.
Anpassen der Anzahl der Überschreibdurchgänge
Mit der Option `-n` (Anzahl) können wir die Anzahl der Durchgänge anpassen. `shred` führt immer mindestens einen Durchgang aus. Die hier angegebene Zahl ist die Anzahl der zusätzlichen Durchgänge. Um also insgesamt drei Durchgänge zu erhalten, fordern wir zwei zusätzliche an:
shred -uvz -n 2 Preliminary_Notes.txt_02.txt
Wie erwartet, führt `shred` hier drei Durchgänge aus.
Weniger Durchgänge bedeuten eine schnellere Ausführung, aber ist es auch weniger sicher? Interessanterweise sind drei Durchgänge in den meisten Fällen ausreichend.
Mehrere Dateien schreddern
Platzhalter können mit `shred` verwendet werden, um Gruppen von Dateien auszuwählen. Das `*` steht für mehrere Zeichen und das `?` für ein einzelnes. Der folgende Befehl löscht alle verbleibenden Dateien, die mit „Preliminary_Notes“ beginnen:
shred -uvz -n 2 Preliminary_Notes_*.*
Die Dateien werden nacheinander von `shred` bearbeitet.
`shred` hat keine rekursive Option und kann daher nicht zum Löschen von verschachtelten Verzeichnisstrukturen verwendet werden.
Das Problem mit der sicheren Dateilöschung
Trotz der Bemühungen von `shred` gibt es ein Problem. Moderne Journaling-Dateisysteme wie ext3 und ext4 sind darauf ausgelegt, Datenverluste und Beschädigungen zu verhindern. In solchen Dateisystemen gibt es keine Garantie dafür, dass das Überschreiben tatsächlich den Speicherbereich betrifft, der von der gelöschten Datei verwendet wurde.
Wenn Sie einfach nur eine etwas gründlichere Löschung als mit `rm` erreichen wollen, ist `shred` wahrscheinlich ausreichend. Sie sollten jedoch nicht davon ausgehen, dass die Daten definitiv weg und völlig unwiederbringlich sind. Dies ist wahrscheinlich nicht der Fall.
Die „Secure Delete Suite“
Die Befehle der „Secure Delete Suite“ versuchen, die Mechanismen von Journaling-Dateisystemen zu umgehen und Dateien sicher zu überschreiben. Es gibt jedoch immer noch die gleichen Vorbehalte. Es ist nicht garantiert, dass das Überschreiben tatsächlich im benötigten Speicherbereich erfolgt. Die Wahrscheinlichkeit ist höher, aber eine Garantie gibt es nicht.
Die Befehle zum sicheren Löschen führen folgende Schritte aus:
- 1x Überschreiben mit dem Wert 0xFF.
- 5x Überschreiben mit Zufallsdaten.
- 27x Überschreiben mit von Peter Gutmann definierten speziellen Werten.
- 5x weitere Überschreibungen mit Zufallsdaten.
- Umbenennen der Datei mit einem Zufallswert.
- Kürzen der Datei.
Wenn Ihnen dies alles übertrieben erscheint, sind Sie nicht allein. Sogar Peter Gutmann, ein Professor an der University of Auckland, hält es für übertrieben. Er veröffentlichte 1996 ein Papier in dem er diese Techniken diskutierte und der Mythos entstand, dass alle in dem Papier beschriebenen Techniken gleichzeitig angewendet werden müssen.
Peter Gutmann hat später versucht, dies zu relativieren, und sagte: „Ein guter Scrub mit Zufallsdaten ist so effektiv, wie man es erwarten kann.“
Aber die hier beschriebenen Techniken sind die, die von den Secure Delete Befehlen verwendet werden. Zuerst müssen wir sie installieren.
Installation von Secure Delete
Verwenden Sie `apt-get`, um das Paket unter Ubuntu oder einer anderen Debian-basierten Distribution zu installieren. Für andere Linux-Distributionen verwenden Sie bitte den Paketmanager Ihrer Distribution.
sudo apt-get install secure-delete
Das „Secure-Delete“-Paket enthält vier Befehle:
- `srm` ist ein sicheres `rm`, das Dateien löscht und den Festplattenspeicher überschreibt.
- `sfill` überschreibt den gesamten freien Speicherplatz auf Ihrer Festplatte.
- `sswap` dient zum Überschreiben und Bereinigen Ihres Swap-Bereichs.
- `sdmem` dient zum Bereinigen Ihres RAMs.
Das Kommando `srm`
Der Befehl `srm` wird ähnlich wie der Befehl `rm` verwendet. So entfernen wir eine einzelne Datei mit der Option `-z` (Nullen), die bewirkt, dass `srm` Nullen anstelle von Zufallsdaten für die letzte Überschreibung verwendet, und mit der Option `-v` (ausführlich), die die Ausgabe von `srm` detaillierter macht:
srm -vz Chapter_One_01.txt
Sie werden sofort feststellen, dass `srm` langsam ist. Es gibt Ihnen visuelles Feedback, während es arbeitet, aber es ist eine Erleichterung, wenn die Eingabeaufforderung wieder angezeigt wird.
Mit der Option `-l` (Sicherheit verringern) können Sie die Anzahl der Durchgänge auf zwei reduzieren, was den Vorgang deutlich beschleunigt.
srm -lvz Chapter_One_02.txt
`srm` warnt Sie, dass dies als weniger sicher angesehen wird, löscht und überschreibt die Datei aber trotzdem.
Sie können die Option `-l` zweimal verwenden, um die Anzahl der Durchgänge auf eins zu reduzieren.
srm -llvz Chapter_One_03.txt
`srm` mit mehreren Dateien
Auch mit `srm` können Platzhalter verwendet werden. Der folgende Befehl löscht alle verbleibenden Teile von Kapitel eins:
srm -vc Chapter_One_0?.txt
Die Dateien werden nacheinander von `srm` bearbeitet.
Verzeichnisse und Inhalt mit `srm` löschen
Mit der Option `-r` (rekursiv) löscht `srm` alle Unterverzeichnisse und deren Inhalt. Dazu übergeben Sie den Pfad des ersten Verzeichnisses an `srm`.
In diesem Beispiel löschen wir alles im aktuellen Verzeichnis `~/research`. Das bedeutet, dass alle Dateien in `~/research` und in allen Unterverzeichnissen sicher entfernt werden:
srm -vz *
`srm` beginnt mit der Bearbeitung der Verzeichnisse und Dateien.
Am Ende kehren Sie zur Eingabeaufforderung zurück. Im Testsystem, auf dem dieser Artikel erstellt wurde, dauerte es etwa eine Stunde, um ca. 200 Dateien zu entfernen, die sich auf das aktuelle Verzeichnis und drei verschachtelte Verzeichnisse verteilten.
Alle Dateien und Unterverzeichnisse wurden wie erwartet entfernt.
Das Kommando `sfill`
Was, wenn Sie sich Sorgen um eine Datei machen, die Sie mit `rm` gelöscht haben? Wie können Sie sicherstellen, dass sie überschrieben wird? Der Befehl `sfill` überschreibt den gesamten freien Speicherplatz auf Ihrer Festplatte.
Dabei werden Sie feststellen, dass der freie Speicherplatz auf Ihrer Festplatte immer geringer wird, bis er aufgebraucht ist. Nach Abschluss der Arbeit gibt `sfill` den freien Speicherplatz wieder frei. Für ein Mehrbenutzersystem wäre dies sehr störend, daher sollte dies eine Wartungsaufgabe außerhalb der Geschäftszeiten sein.
Selbst auf einem Einzelbenutzercomputer führt der Verlust von Speicherplatz dazu, dass er nicht mehr verwendet werden kann, sobald `sfill` den größten Teil des Speicherplatzes belegt hat. Das ist etwas, was Sie starten und dann ignorieren.
Um den Vorgang zu beschleunigen, können Sie die Option `-l` (Sicherheit verringern) verwenden. Die weiteren Optionen sind `-v` (ausführlich) und `-z` (Nullen), die wir zuvor gesehen haben. Hier fordern wir `sfill` an, den gesamten freien Speicherplatz im `/home` Verzeichnis sicher zu überschreiben.
sudo sfill -lvz /home
Machen Sie es sich bequem. Auf dem Testrechner mit nur einer 10 GB Festplatte wurde der Vorgang am Nachmittag gestartet und erst irgendwann in der Nacht abgeschlossen.
Es wird stundenlang arbeiten. Und das mit der Option `-l`. Aber irgendwann kehren Sie zur Eingabeaufforderung zurück.
Das Kommando `sswap`
Der Befehl `sswap` überschreibt den Speicher in Ihrer Swap-Partition. Zunächst müssen wir die Swap-Partition identifizieren. Das können wir mit dem Befehl `blkid` tun, der Blockgeräte auflistet:
sudo blkid
Suchen Sie nach dem Wort „swap“ und notieren Sie sich das zugehörige Blockgerät.
Wir sehen, dass die Swap-Partition an `/dev/sda5` angeschlossen ist.
Wir müssen für die Dauer des Überschreibens das Schreiben auf die Swap-Partition deaktivieren. Dies tun wir mit dem Befehl `swapoff`:
sudo swapoff /dev/sda5
Nun können wir den Befehl `sswap` ausführen.
Wir verwenden `/dev/sda5` als Teil der Befehlszeile für `sswap`. Wir verwenden außerdem die Optionen `-v` (ausführlich) und `-ll` (Sicherheit verringern) , die wir zuvor verwendet haben:
sudo sswap -llv /dev/sda5
`sswap` beginnt, die Swap-Partition zu bearbeiten und alles darin zu überschreiben. Es dauert nicht so lange wie `sfill`, aber es fühlt sich so an.
Sobald dies abgeschlossen ist, müssen wir die Swap-Partition wiederherstellen. Dies geschieht mit dem Befehl `swapon`:
sudo swapon /dev/sda5
Das Kommando `sdmem`
Das Secure Delete Paket enthält auch ein Tool zum Löschen des Arbeitsspeichers (RAM) in Ihrem Computer.
Ein Kaltstartangriff erfordert physischen Zugriff auf Ihren Computer, kurz nachdem er ausgeschaltet wurde. Diese Art von Angriff kann möglicherweise das Abrufen von Daten von Ihren RAM-Chips ermöglichen.
Wenn Sie sich vor dieser Art von Angriff schützen wollen, was die meisten Leute tun würden, können Sie den Arbeitsspeicher löschen, bevor Sie den Computer ausschalten. Wir verwenden wieder die Optionen `-v` (ausführlich) und `-ll` (Sicherheit verringern):
sudo sdmem -vll
Das Terminalfenster füllt sich mit Sternchen, als Hinweis, dass `sdmem` den RAM bearbeitet.
Die einfache Alternative: Verschlüsseln Sie Ihr Laufwerk
Anstatt Dateien sicher zu löschen, warum sichern Sie nicht Ihre Festplatte oder Ihr persönliches Verzeichnis durch Verschlüsselung?
In diesem Fall kann niemand auf Ihre Daten zugreifen, weder auf Live-Dateien noch auf gelöschte. Und Sie müssen nicht ständig daran denken, sensible Dateien sicher zu löschen, da alle Ihre Dateien bereits geschützt sind.
Die meisten Linux-Distributionen bieten bei der Installation die Option zur Verschlüsselung an. Dies zu bejahen erspart Ihnen viel Aufwand in der Zukunft. Sie sollten sowieso nicht mit geheimen oder sensiblen Daten hantieren, aber wenn Sie erwägen, den Computer später zu verkaufen oder weiterzugeben, vereinfacht die Verschlüsselung auch diesen Prozess.