Automatischer Disk Wipe Host

Wenn man viele Festplatten Wipen muss greift man normalerweise zu DBAN oder NWIPE oder SHREDOS und lässt das Booten und dann laufen.

Wenn man aber die Möglichkeit hat dafür einen Server mit einem HBA Controller und mehren Diskshelfs zu verwenden. Kann man sich eine schöne kleine Automatische Wipe Station bauen.

Dafür benötigt man ein kleines Installiertes Linux, in meinem Fall ein Ubuntu. Die oben genante Hardware und ein paar Scripte

Für das löschen der Disk verwende ich NWIPE und lasse dies durch ein Script starten.

nano /mnt/WIPE_DISK.sh
#!/bin/bash

SYSTEMDISK_ID="scsi-3600508b1001cb3434d3b27d41eb5ed44"

if [[ "$1" == "/dev/sd"* ]] || [[ "$1" == "sd"* ]]; then

	if [[ "$1" == "/dev/"* ]]; then
		DISK=$1
	else
		DISK="/dev/$1"
	fi

	if [ $(lsblk -OJ ${DISK} |grep id-link |head -1 |awk '{print $2}' |sed 's/"//g' |sed 's/,//g') != ${SYSTEMDISK_ID} ]; then
		DISKNAME=${DISK//\//_}
		if [ ! -f "/tmp/${DISKNAME}" ]; then
			touch /tmp/${DISKNAME}

			echo "WIPE DISK ${DISK}" | wall
			#smartctl -a ${DISK} | wall
			sleep 5
			#/usr/bin/dd if=/dev/zero of=${DISK} &
			/usr/sbin/nwipe --exclude=/dev/sda --method=dodshort --verify=last --nogui --logfile=/mnt/"$(date +"%Y_%m_%d-%H:%M")-$DISKNAME" --autonuke ${DISK}; dd if=/dev/zero of=${DISK}; rm /tmp/${DISKNAME}; &
		else
			echo "Have /tmp/${DISKNAME}" | wall
		fi

	else
		echo "No Wipe ${1}" | wall
	fi
else
	echo "No Wipe ${1}" | wall
fi

Das Script prüft ob ich aus versehen die System Platte löschen würde und unterbindet das.
Des weiteren wird NWIPE im autonuke modus aufgerufen und ein logfile mit dem Datum und dem Diskpath angelegt.

In dem Logfile befinden sich dann alle nötigen Informationen. falls man die braucht.

[2024/08/08 18:37:40] warning: Command not found. Install smartmontools !
[2024/08/08 18:37:40]  notice: Found /dev/sdb,  UNK, HP DG0146BALVN, 146 GB, S/N=@�c	�
[2024/08/08 18:37:40]  notice: bios-version = P70
[2024/08/08 18:37:40]  notice: bios-release-date = 05/24/2019
[2024/08/08 18:37:40]  notice: system-manufacturer = HP
[2024/08/08 18:37:40]  notice: system-product-name = ProLiant DL380p Gen8
[2024/08/08 18:37:40]  notice: system-version = Not Specified
[2024/08/08 18:37:40]  notice: system-serial-number = CZ234714YC      
[2024/08/08 18:37:40]  notice: system-uuid = 39393037-3334-5a43-3233-343731345943
[2024/08/08 18:37:40]  notice: chassis-manufacturer = HP
[2024/08/08 18:37:40]  notice: chassis-type = Rack Mount Chassis
[2024/08/08 18:37:40]  notice: chassis-version = Not Specified
[2024/08/08 18:37:40]  notice: chassis-serial-number = CZ234714YC      
[2024/08/08 18:37:40]  notice: chassis-asset-tag = .                               
[2024/08/08 18:37:40]  notice: processor-family = Xeon
[2024/08/08 18:37:40]  notice: processor-family = Xeon
[2024/08/08 18:37:40]  notice: processor-manufacturer = Intel
[2024/08/08 18:37:40]  notice: processor-manufacturer = Intel
[2024/08/08 18:37:40]  notice: processor-version =  Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz      
[2024/08/08 18:37:40]  notice: processor-version =  Intel(R) Xeon(R) CPU E5-2690 v2 @ 3.00GHz      
[2024/08/08 18:37:40]  notice: processor-frequency = 3000 MHz
[2024/08/08 18:37:40]  notice: processor-frequency = 3000 MHz
[2024/08/08 18:37:40]  notice: Opened entropy source '/dev/urandom'.
[2024/08/08 18:37:40]  notice: hwmon: Module drivetemp loaded, drive temperatures available
[2024/08/08 18:37:40]  notice: Program options are set as follows...
[2024/08/08 18:37:40]  notice:   autonuke = 1 (on)
[2024/08/08 18:37:40]  notice:   autopoweroff = 0 (off)
[2024/08/08 18:37:40]  notice:   do not wait for a key before exiting
[2024/08/08 18:37:40]  notice:   do not show GUI interface
[2024/08/08 18:37:40]  notice:   banner   = nwipe 0.33
[2024/08/08 18:37:40]  notice:   prng     = Isaac64
[2024/08/08 18:37:40]  notice:   method   = DoD Short
[2024/08/08 18:37:40]  notice:   quiet    = 0
[2024/08/08 18:37:40]  notice:   rounds   = 1
[2024/08/08 18:37:40]  notice:   sync     = 100000
[2024/08/08 18:37:40]  notice:   verify   = 1 (last pass)
[2024/08/08 18:37:40]  notice: /dev/sdb has serial number @�c	�
[2024/08/08 18:37:40]  notice: /dev/sdb, sect/blk/dev 512/4096/146815737856
[2024/08/08 18:37:40]  notice: Invoking method 'DoD Short' on /dev/sdb
[2024/08/08 18:37:40]  notice: Starting round 1 of 1 on /dev/sdb
[2024/08/08 18:37:40]  notice: Starting pass 1/3, round 1/1, on /dev/sdb

das Script noch ausführbar machen, und schon könnte man es manuell aufrufen.

chmod +x /mnt/WIPE_DISK.sh
/mnt/WIPE_DISK.sh /dev/sdb

Hier würde jetzt nur die /dev/sdb platte gelöscht werden. Alternative kann man auch nur sdb angeben das /dev/ wird dann hinzugefügt.

Für die Automatisation legen wir eine UDEV Rule an die dann reagiert wenn die Regel getriggert wird

nano /etc/udev/rules.d/wipe_disk.rules
ACTION=="add", KERNEL=="sd*[!0-9]|sr*", SUBSYSTEM=="scsi", RUN+="/mnt/WIPE_DISK.sh '%E{DEVNAME}'"

Diese Regel sorgt dafür wenn ein Block Device hinzugefügt wird, der Devicename (/dev/sd..) an das Script /mnt/WIPE_DISK.sh übergeben wird und das ganze ausgeführt wird.

Udev noch neu-starten und los gehts.

systemctl restart udev

Festplatte in ein Shelf einstecken und automatisch löschen lassen.

Wenn man an dem Rechner noch einen Monitor anschließt bekommt man auch die Info das die Disk gelöscht wird.
Oder man sieht das halt an der Disk LED.

Viel Spaß beim Automatischen löschen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*