PXE-Server unter CentOS 7.x erweitern - Anwendungsbeispiel: Festplatten sicher löschen mit DBAN
Will man einen Rechner verschrotten oder der Wiederverwertung zuführen, stellt sich die wichtige Frage, was passiert mit den Daten, die auf der/den Festplatten gespeichert waren. Ein simples Löschen, steht ausser Frage, da das Wiederherstellen der Daten ohne grosse Mühen, fast jedem gelingt. Sollte man sich trotz aller Vorsichtsmassnahmen einen Virus eingefangen haben, stellt sich auch meist die Frage, wie bekomme ich diesen wieder los und restlos aus dem System entfernt, wie z.B. dem MBR1).
Zum sicheren Löschen und Vernichten der Inhalte von Datenträgern greifen wir daher auf DBAN2) zurück. DBAN ist ein kleines Festplattenimage, welches Inhalte/Datenstrukturen einer vorhandenen Festplatte erkennt und automatisch löscht.
Download
Bevor wir uns das aktuelle ISO-Image herunter laden, erstellen wir uns im Verzeichnis /var/lib/tftpboot/images/ für DBAN ein eigenes Unterverzeichnis.
# mkdir -p /var/lib/tftpboot/images/dban
Als nächstes holen wir uns von der Projektseite das aktuelle ISO-Image auf unseren PXE-Boot-Server.
# wget http://downloads.sourceforge.net/project/dban/dban/dban-2.3.0/dban-2.3.0_i586.iso
Anschließend mounten wir dieses ISO-Image über das Loopback-Device:
# mount -o loop dban-2.3.0_i586.iso /mnt/
Nun können wir das zu bootende DBAN-Image wie auch die Hilfetexte in unser Zielverzeichnis kopieren
# cp /mnt/dban.bzi /var/lib/tftpboot/images/dban/ # cp /mnt/*.txt /var/lib/tftpboot/images/dban/
Ist dies erledigt, können wir das ISO-Image wieder unmounten, da wir dieses nicht mehr benötigen.
# umount /mnt/
Konfiguration
Damit wir bei einem PXE-Boot DBAN auch als Option im Bootmenü auftaucht, müssen wir noch die Konfigurationsdatei /var/lib/tftpboot/pxelinux.cfg/default ein klein wenig erweitern.
Da es für DBAN sehr viele Optionen beim Laden und ausführen gibt, werden wir all diese Optionen nicht direkt in das Hauptmenü unseres PXE-Bootservers ein, sondern werden diese in ein eigenes Untermenü auslagern.
Hierzu werden wir nun mit dem Editor unserer Wahl, als z.B. vim, einfach den folgenden Block am Ende der Konfigurationsdatei „default“ einfügen.
LABEL A MENU LABEL ^A) Untermenue DBAN: Festplatten sicher loeschen KERNEL vesamenu.c32 APPEND pxelinux.cfg/dban
Die Bezeichnung LABEL passen wir natürlich den eigenen Begebenheiten nach an!
# vim /var/lib/tftpboot/pxelinux.cfg/default
- /var/lib/tftpboot/pxelinux.cfg/default
# Django 2011-11-24 # erstes einfaches Bootmenü für PXE-Boot # Einbinden des User-Interface-Module vesamenu.c32 default vesamenu.c32 # starten des Standardeintrages nach 10 Sekunden timeout 100 # [0] Boot-Prompt ausblenden [1] Boot-Prompt standardmäßig angezeigen prompt 0 # [0] Öffnen des Boot mit ESC ermöglichen [1] Funktion deaktivieren. noescape 0 # Definition der Überschrift unseres Bootmenüs menu title *** PXE Boot-Auswahl Menue *** # Definition einer Hintergrundgraphik für das Bootmenü (Größe: 640x480 Format: PNG) menu background bootgraphik.png menu color title 1;36;44 #0824b5 #00000000 std menu color sel * #00000000 #0824b5 * menu color hotsel 1;7;37;40 #00000000 #999999ff * menu color unsel 1;36;44 #0824b5 #00000000 std menu color hotkey 1;36;44 #0824b5 #00000000 std menu color tabmsg 1;36;44 #ed7500 #00000000 std menu color cmdline 1;36;44 #0824b5 #00000000 std menu color timeout_msg 1;36;44 #0824b5 #00000000 std menu color timeout 1;36;44 #0824b5 #00000000 std # Definition der einzelnen Booteinträge: # LABEL : Eindeutige Bezeichnung eines Booteintrages # MENU LABEL : Aussagekräftige Beschreibung des LABELs, welche im Mootmenü angezeigt werden soll # KERNEL : Definition des zu bootenden Kernel Images # APPEND : Definition von Benutzerspezifischen Kerneloptionen LABEL 1 MENU LABEL ^1) Boot from ^HD (default) localboot 0 LABEL 2 MENU LABEL ^2) CentOS 6.x (64 Bit) Installation (Intranet) KERNEL images/centos/6/x86_64/vmlinuz APPEND ks=http://10.0.0.50/kickstart/ks_centos60_x86_64_intra.cfg initrd=images/centos/6/x86_64/initrd.img ramdisk_size=128000 ksdevice=eth0 ip=dhcp method=http://10.0.0.50/centos/6/os/x86_64 LABEL 3 MENU LABEL ^3) CentOS 6.x (64 Bit) Desktop-Installation (Intranet) KERNEL images/centos/6/x86_64/vmlinuz APPEND ks=http://10.0.0.50/kickstart/ks_centos60_x86_64_intra_desktop.cfg initrd=images/centos/6/x86_64/initrd.img ramdisk_size=128000 ksdevice=eth0 ip=dhcp method=http://10.0.0.50/centos/6/os/x86_64 LABEL 4 MENU LABEL ^4) CentOS 6.x (64 Bit) Installation (DMZ) KERNEL images/centos/6/x86_64/vmlinuz APPEND ks=http://10.0.0.50/kickstart/ks_centos60_x86_64_dmz.cfg initrd=images/centos/6/x86_64/initrd.img ramdisk_size=128000 ksdevice=eth0 ip=dhcp method=http://10.0.0.50/centos/6/os/x86_64 LABEL 5 MENU LABEL ^5) CentOS 6.x (32 Bit) Installation (Intranet) KERNEL images/centos/6/i386/vmlinuz APPEND ks=http://10.0.0.50/kickstart/ks_centos60_i386_intra.cfg initrd=images/centos/6/i386/initrd.img ramdisk_size=128000 ksdevice=eth0 ip=dhcp method=http://10.0.0.50/centos/6/os/i386 LABEL 6 MENU LABEL ^6) CentOS 6.x (32 Bit) Desktop-Installation (Intranet) KERNEL images/centos/6/i386/vmlinuz APPEND ks=http://10.0.0.50/kickstart/ks_centos60_i386_intra_desktop.cfg initrd=images/centos/6/i386/initrd.img ramdisk_size=128000 ksdevice=eth0 ip=dhcp method=http://10.0.0.50/centos/6/os/i386 LABEL 7 MENU LABEL ^7) CentOS 6.x (32 Bit) Installation (DMZ) KERNEL images/centos/6/i386/vmlinuz APPEND ks=http://10.0.0.50/kickstart/ks_centos60_i386_intra.cfg initrd=images/centos/6/i386/initrd.img ramdisk_size=128000 ksdevice=eth0 ip=dhcp method=http://10.0.0.50/centos/6/os/i386 # Django : 2014-02-28 Fedora 20 angefügt LABEL 8 MENU LABEL ^8) Fedora 20 (32 Bit) Installation (Intranet) KERNEL images/fedora/20/i386/vmlinuz APPEND initrd=images/fedora/20/i386/initrd.img ramdisk_size=128000 ip=dhcp method=http://dl.fedoraproject.org/pub/fedora/linux/releases/20/Fedora/i386/os/ LABEL 9 MENU LABEL ^9) Fedora 20 (64 Bit) Installation (Intranet) KERNEL images/fedora/20/x86_64/vmlinuz APPEND initrd=images/fedora/20/x86_64/initrd.img ramdisk_size=128000 ip=dhcp method=http://dl.fedoraproject.org/pub/fedora/linux/releases/20/Fedora/x86_64/os/ LABEL A MENU LABEL ^A) Untermenue DBAN: Festplatten sicher loeschen KERNEL vesamenu.c32 APPEND pxelinux.cfg/dban LABEL C MENU LABEL ^C) Clonezilla (i686-PAE) KERNEL images/clonezilla/i686-pae/vmlinuz APPEND initrd=images/clonezilla/i686-pae/initrd.img fetch=http://10.0.0.50/clonezilla/i686-pae/filesystem.squashfs boot=live config noswap edd=on nomodeset noprompt nosplash locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no gfxpayload=1024x768x16,1024x768 ip=frommedia i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.blacklist=yes LABEL D MENU LABEL ^D) Clonezilla (AMD-64) KERNEL images/clonezilla/amd64/vmlinuz APPEND initrd=images/clonezilla/amd64/initrd.img fetch=http://10.0.0.50/clonezilla/i686-pae/filesystem.squashfs boot=live config noswap edd=on nomodeset noprompt nosplash locales= keyboard-layouts= ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no gfxpayload=1024x768x16,1024x768 ip=frommedia i915.blacklist=yes radeonhd.blacklist=yes nouveau.blacklist=yes vmwgfx.blacklist=yes
Das eigentliche Auswahlmenü der einzelnen Boot-Parameter von DBAN lagern wir, wie Eingangs schon angeschnitten in eine eigene Konfigurationsdatei dban aus. Diese Datei legen wir uns nun an.
# vim /var/lib/tftpboot/pxelinux.cfg/dban
- /var/lib/tftpboot/pxelinux.cfg/dban
# Django 2014-07-02 # verschachteltes Bootmenü ( Baumstruktur) für PXE-Boot # Einbinden des User-Interface-Module vesamenu.c32 default vesamenu.c32 # starten des Standardeintrages nach 60 Sekunden timeout 600 # [0] Boot-Prompt ausblenden [1] Boot-Prompt standardmäßig angezeigen prompt 0 # [0] Öffnen des Boot mit ESC ermöglichen [1] Funktion deaktivieren. noescape 0 # Definition der Überschrift unseres Bootmenüs menu title *** DBAN - Festplatten/Partitionen unrettbar loeschen *** # Definition einer Hintergrundgraphik für das Bootmenü (Größe: 640x480 Format: PNG) menu background bootgraphik.png menu color title 1;36;44 #0824b5 #00000000 std menu color sel * #00000000 #0824b5 * menu color hotsel 1;7;37;40 #00000000 #999999ff * menu color unsel 1;36;44 #0824b5 #00000000 std menu color hotkey 1;36;44 #0824b5 #00000000 std menu color tabmsg 1;36;44 #ed7500 #00000000 std menu color cmdline 1;36;44 #0824b5 #00000000 std menu color timeout_msg 1;36;44 #0824b5 #00000000 std menu color timeout 1;36;44 #0824b5 #00000000 std # Definition der einzelnen Booteinträge: # LABEL : Eindeutige Bezeichnung eines Booteintrages # MENU LABEL : Aussagekräftige Beschreibung des LABELs, welche im Mootmenü angezeigt werden soll # KERNEL : Definition des zu bootenden Kernel Images # APPEND : Definition von Benutzerspezifischen Kerneloptionen LABEL 1 MENU LABEL ^1) Zurueck zum Hauptmenue KERNEL vesamenu.c32 APPEND pxelinux.cfg/default LABEL 2 MENU LABEL ^2) DBAN - Standard: autonuke KERNEL images/dban/dban.bzi APPEND nuke="dwipe --autonuke" silent nousb vga=785 LABEL 3 MENU LABEL ^3) DBAN - Standard: mit Auswahl der Methode KERNEL images/dban/dban.bzi APPEND nuke="dwipe" silent vga=785 LABEL 4 MENU LABEL ^4) DBAN - Standard: Methode "dod" KERNEL images/dban/dban.bzi APPEND nuke="dwipe --autonuke --method dod522022m" silent vga=785 LABEL 5 MENU LABEL ^5) DBAN - Standard: Methode "dod3pass" KERNEL images/dban/dban.bzi APPEND nuke="dwipe --autonuke --method dod3pass" silent vga=785 LABEL 6 MENU LABEL ^6) DBAN - Standard: Methode "dodshort" KERNEL images/dban/dban.bzi APPEND nuke="dwipe --autonuke --method dodshort" silent vga=785 LABEL 7 MENU LABEL ^7) DBAN - Standard: Methode "gutmann" KERNEL images/dban/dban.bzi APPEND nuke="dwipe --autonuke --method gutmann" silent vga=785 LABEL 8 MENU LABEL ^8) DBAN - Standard: Methode "ops2" KERNEL images/dban/dban.bzi APPEND nuke="dwipe --autonuke --method ops2" silent vga=785 LABEL 9 MENU LABEL ^9) DBAN - Standard: Methode "paranoid" KERNEL images/dban/dban.bzi APPEND nuke="dwipe --autonuke --method prng --rounds 8 --verify all" silent vga=785 LABEL A MENU LABEL ^A) DBAN - Standard: Metode "prng" KERNEL images/dban/dban.bzi APPEND nuke="dwipe --autonuke --method prng --rounds 8" silent vga=785 LABEL B MENU LABEL ^B) DBAN - Standard: Methode "quick" KERNEL images/dban/dban.bzi APPEND nuke="dwipe --autonuke --method quick" silent vga=785 LABEL C MENU LABEL ^C) DBAN - Standard: Methode "zero" KERNEL images/dban/dban.bzi APPEND nuke="dwipe --autonuke --method zero" silent vga=785 # Troubleshooting Labels LABEL D MENU LABEL ^D) DBAN - Troubleshooting - Option: nofloppy KERNEL images/dban/dban.bzi APPEND nuke="dwipe" floppy=0,16,cmos vga=785 LABEL E MENU LABEL ^E) DBAN - Troubleshooting - Option: nosilent KERNEL images/dban/dban.bzi APPEND nuke="dwipe" vga=785 LABEL F MENU LABEL ^F) DBAN - Troubleshooting - Option: noverify KERNEL images/dban/dban.bzi APPEND nuke="dwipe --verify off" vga=785 # Debugging Labels LABEL G MENU LABEL ^G) DBAN - Debugging - Option: debug KERNEL images/dban/dban.bzi APPEND nuke="exec /bin/ash" debug vga=785 LABEL H MENU LABEL ^H) DBAN - Debugging - Option: shell KERNEL images/dban/dban.bzi APPEND init=/bin/sh vga=785 LABEL I MENU LABEL ^I) DBAN - Debugging - Option: verbose KERNEL images/dban/dban.bzi APPEND nuke="dwipe --method quick" vga=785 # Print the product banner and liability disclaimer. DISPLAY images/dban/warning.txt # Extra screens. F1 images/dban/warning.txt F2 images/dban/about.txt F3 images/dban/quick.txt F4 images/dban/raid.txt # The Boot Prompt # --------------- # # Usage: [label [kernel options] [nuke="dwipe [dwipe options]"]] # # Dwipe Options: # # --autonuke Be really sure. # -m --method The wipe method to use. # -r --rounds The number of times to run the method. # --verify The verification level. # # Dwipe Methods: # # dod522022m American Department of Defense 5220.22-M standard wipe. # dodshort dod3pass DoD short wipe, passess 1,2,7 from the standard wipe. # gutmann Peter Gutmann's wipe. # ops2 RCMP TSSIT OPS-II standard wipe. # prng random PRNG stream wipe. # quick zero Quick erase. # # Verification Levels: # # 0 off Do not read anything back from the device. # 1 last Check whether the device is empty after wiping. # 2 all Check whether all passes were written properly. # # Notes: # # * The rounds option does not apply to to the quick method. This method # always runs one round. # # * Use at least four rounds with the prng method. Using eight rounds with # the prng method is recommended. # # * The last pass of every method fills the device with zeros, except the # ops2 method which fills the device with a random stream on its last pass. #
Test
An dem fraglichen Rechner führen wir einen Netzwerk-Boot aus.
Hier wählen wir dann den Menüpunkt Untermenue DBAN: Festplatten sicher loeschen aus.
Wählen wir die Option autonuke aus, wird unmittelbar das betreffende Boot-Image geladen und die Festplatte automatisch gelöscht.
Nachdem DBAN gebootet wurde, erfolgt auch gleich das Löschen. Je nach Festplattengröße kann dies durchaus mehrere Stunden betragen!
Am Ende der erfolgreichen Datenverbichtung, wird dies am Bildschirm angezeigt und man wird gebeten, eine Taste zu drücken oder den Rechner auszuschalten.
Haben wir die Option DBAN - Standard: mit Auswahl der Methode beim PXE-Auswahlmenü ausgewählt, können wir manuell die einzelnen Lösch- und Überschreiboptionen auswählen, wie auch das Hilfe-Menü duch Drücken der Taste [F1] erreichen.
Mit [F2] werden uns weitere Informationen zu DBAN angezeigt.
Mit Drücken der Taste [F3] erhalten wir weitere Informationen zu den einzelnen Löschoptionen.
Spezielle Hinweise zu RAID-Controllern erhalten wir, sofern wir die Taste [F4] drücken.