Kann ich `dd` verwenden, um das Root-Dateisystem auf einem laufenden Linux-Server zu löschen?

585
Christopher Schultz

Ich habe einen (physisch) Remote-Server, den ich sicher zerstören möchte. Leider ist der Datenträger mit einer einzigen großen Root-Partition und sonst nichts partitioniert. Kann ich dddas Gerät mit dem Root-Dateisystem zuverlässig löschen?

Etwas einfaches wie:

$ sudo nohup dd if=/dev/urandom of=/dev/sda bs=1024 

Offensichtlich sehe ich niemals die Ausgabe des Jobs. Daher kann ich nicht überprüfen, ob der Auftrag erfolgreich abgeschlossen wurde. Das ddund nohup-Programm sollte klein genug sein und zu diesem Zeitpunkt läuft auf dem Server nichts anderes, so dass es keinen Grund gibt, diese Programme während der Ausführung aus dem Speicher zu entfernen. Werden sie ddvollständig ausgeführt, oder wird der Kernel wahrscheinlich vor dem Abschluss in Panik geraten ?

Ich denke über andere Möglichkeiten nach, aber ich frage sie in separaten Fragen.

2

2 Antworten auf die Frage

1
HackSlash

In einer Unternehmensumgebung möchten Sie eine Art Out-of-Band-Verwaltung wie IPMI, iDRAC oder eine andere Remote-KVM-Lösung. Sie würden dieses System verwenden, um von einer Live-CD zu booten, auf der das Löschen durchgeführt und bestätigt werden kann. Wenn Ihr Ziel sicheres Löschen ist, müssen Sie den Vorgang überprüfen. Man kann nicht einfach sagen "Nun, das sollte funktionieren". Denn selbst wenn es funktionieren soll, heißt das nicht, dass es funktioniert hat. Bei einigen IPMI-Systemen können Sie von einem Remote-ISO aus remote booten. Sie könnten etwas einfaches wie ein DBAN-Image verwenden.

Ich habe versucht, dies mit dem gestarteten Betriebssystem zu tun, und es schlug fehl. Dies zu tun, ohne dass das Betriebssystem gestartet wurde oder wenn das Betriebssystem von einer Ramdisk ausgeführt wird, scheint die Lösung zu sein. Da Sie erwähnt haben, dass es sich um einen Server handelt, gehe ich davon aus, dass Out-of-Band-Management verfügbar ist, was die Antwort von Hackslash zu einer guten macht. +1 Hennes vor 6 Jahren 0
Obwohl Sie Ihre Antwort für ihre * Wahrheit * schätzen, beantwortet sie meine eigentliche Frage nicht wirklich. Christopher Schultz vor 6 Jahren 0
Nun, Chris, die Antwort ist, dass Sie nicht sicher sein können, was passiert, wenn das System ausfällt und Sie Ihre Remote-Verbindung verlieren. Diese Antwort ist noch weniger hilfreich. Sie müssen davon ausgehen, dass es fehlgeschlagen ist, wenn Sie den Erfolg nicht bestätigen können. HackSlash vor 6 Jahren 0
1
Christopher Schultz

Ja, das ist absolut möglich, aber es erfordert etwas Arbeit.

Die Antwort ist größtenteils auf StackExchange verfügbar, aber ich fasse sie hier mit Links zu den Quellen zusammen, die viel detaillierter sind und gute Informationen verdienen.

  1. Erstellen Sie eine In-Memory-Basis-Linux-Umgebung, und wechseln Sie dazu mitpivot_root .
  2. Stellen Sie sicher, dass Sie von außen auf den Server zugreifen können ssh.
  3. Wischen Sie das Root-Gerät ab.

    # nohup dd if=/dev/urandom of=/dev/sda bs=512 > wipe.log &

  4. In regelmäßigen Abständen können Sie den Fortschritt überprüfen dd, da Sie normalerweise keinen Hinweis auf den Fortschritt erhalten.

    # kill -USR1 [ddpid]

  5. Kommen Sie später zurück und überprüfen Sie, ob der Vorgang abgeschlossen ist (Protokolldatei überprüfen). Schauen Sie sich die Diskette an, um zu überprüfen, ob zufälliger Junk statt eines echten Dateisystems vorhanden ist. Wischen Sie es ein zweites Mal (oder ein drittes Mal) ab, wenn Sie möchten.

  6. Entscheiden Sie, was als Nächstes zu tun ist.

    Wenn Sie möchten, können Sie einfach hier aufhören und weggehen. Wenn der Computer heruntergefahren wird, verfügen Sie über ein nicht startfähiges Gerät, das so sicher ist, wie Sie ddes sich vorgenommen haben.

    Was ich als Nächstes beschlossen habe, ist etwas zu versuchen, das ich noch nicht gemacht habe: Erstellen eines Remote-Linux-Basissystems. Also fuhr ich fort:

  7. Verwenden, fdiskum das Root - Gerät neu zu partitionieren, wie gewünscht, und verwenden mkfsDateisysteme auf diesen Partitionen zu erzeugen.

  8. Verwenden Sie debootstrapdiese Option, um eine Debian-Basisumgebung auf dem (zukünftigen) Root-Dateisystem zu installieren .
  9. chrootInstallieren Sie in der neuen Basisumgebung zusätzliche Pakete (z. B. sshdeinen Kernel und einen Bootloader) (z. B. grub- stellen Sie sicher, dass der Bootloader tatsächlich auf dem Gerät installiert wird - installieren Sie das Paket nicht nur).
  10. Verwenden root_pivotSie diese Option, um wie in Schritt 1 oben beschrieben zur neuen Umgebung zu wechseln. Rufen Sie alle Dienste (z. B. sshd) auf, um sicherzustellen, dass Sie beispielsweise über den Server zugreifen können ssh.
  11. Starten Sie neu. Ihr frisches Betriebssystem sollte einsatzbereit sein.