Ich sichere meine wichtigsten Daten regelmäßig auf einer Wechselfestplatte, die ich außer Haus bei meinen Schwiegereltern lagere. So bin ich auch im absoluten Katastrophenfall (Brand, Wasserschaden, etc.) in der Lage auf alle Dokumente zuzugreifen. Dennoch möchte ich nicht, dass meine Daten auf der Wechselfestplatte quasi öffentlich zugänglich sind. Daher verschlüssele ich die Festplatte, so dass sie nur mit dem richtigen Schlüssel ihre Daten hergibt.
Um die Verschlüsselung bei einer fabrikneuen Festplatte einzurichten, schiebe ich die Festplatte so wie sie ist in den Wechselrahmen. Nun muss ich zunächst mal das Device der neuen Festplatte herausfinden mittels lsblk.
$ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 5,5T 0 disk ├─sda1 8:1 0 1M 0 part └─sda2 8:2 0 5,5T 0 part /home sdb 8:16 0 3,7T 0 disk sdc 8:32 0 232,9G 0 disk ├─sdc1 8:33 0 216,9G 0 part / ├─sdc2 8:34 0 1K 0 part └─sdc5 8:37 0 16G 0 part [SWAP] sr0 11:0 1 1024M 0 rom
Die 4TB-Wechselplatte ist offensichtlich als /dev/sdb im System erkannt worden.
Zunächst lege ich eine Partition auf der Wechselfestplatte an. Da sie größer als 2TB ist, kann ich nicht das gewohnte fdisk verwenden, sondern benötige eine GPT, diese lege ich mittels parted an.
$ sudo parted /dev/sdb GNU Parted 3.2 Using /dev/sdb Welcome to GNU Parted! Type 'help' to view a list of commands. (parted)
parted begrüßt mich mit seiner Kommandozeile, zunächst schaue ich der absoluten Sicherheit wegen ob ich mich wirklich auf der richtigen Festplatte bewege.
(parted) print Error: /dev/sdb: unrecognised disk label Model: ATA ST4000DM004-2CV1 (scsi) Disk /dev/sdb: 4001GB Sector size (logical/physical): 512B/4096B Partition Table: unknown Disk Flags:
Das Festplattenmodell und die Größe stimmen, ich kann also loslegen. Zunächst teile ich parted mit, dass ich gerne gpt als Disk-Label verwenden möchte (bei Festplatten größer 2TB wie gesagt ein Muss).
(parted) mklabel New disk label type? gpt
Ich möchte eine große Partition erstellen und als Einheit daher Prozent verwenden (ich könnte auch als Einheit GB, TB, etc angeben, aber Prozent ist in dem Fall das einfachste).
(parted) unit %
Und nun lege ich die Partition tatsächlich an.
(parted) mkpart primary 0% 100%
Zum Abschluss schaue ich mir an ob auch alles wie gewünscht funktioniert hat.
(parted) print Model: ATA ST4000DM004-2CV1 (scsi) Disk /dev/sdb: 100% Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 0,00% 100% 100% primary
Das sieht gut aus, ich kann parted also beenden.
(parted) quit Information: You may need to update /etc/fstab.
Den Anfang der zu verschlüsselnden Partition überschreibe ich mit Zufallsbytes.
$ sudo dd if=/dev/urandom bs=1M count=8 of=/dev/sdb1 8+0 records in 8+0 records out 8388608 bytes (8,4 MB, 8,0 MiB) copied, 0,603032 s, 13,9 MB/s
Den zur Verschlüsselung verwendeten Schlüssel möchte ich nicht jedesmal per Hand eingeben müssen (das Backup läuft nachts per Script), sondern hinterlege diesen in der Datei /etc/luks.key
. Diese sieht dann z.B. so aus (ihr solltet natürlich einen eigenen Schlüssel verwenden).
$ sudo cat /etc/luks.key askjd8hbbewhj26tsfgavSghsSDfgvhDedv
Die Zugriffsrechte auf die /etc/luks.key sollten aus verständlichen Gründen natürlich sehr restriktiv gesetzt werden.
$ sudo chown root:root /etc/luks.key $ sudo chmod 600 /etc/luks.key
Nun kann ich die Partiton /dev/sdb1 formatieren.
$ sudo cryptsetup luksFormat -d /etc/luks.key /dev/sdb1 WARNING! ======== This will overwrite data on /dev/sdb1 irrevocably. Are you sure? (Type uppercase yes): YES
Nun weise ich /dev/sdb1 einem virtuellen Gerät zu, welches ich „wechselplatte“ nenne.
$ sudo cryptsetup luksOpen -d /etc/luks.key /dev/sdb1 wechselplatte
Als Dateisystem verwende ich ext4, welches ich nun in gewohnter Weise anlege.
$ sudo mkfs.ext4 /dev/mapper/wechselplatte mke2fs 1.42.13 (17-May-2015) Ein Dateisystems mit 976753664 (4k) Blöcken und 244195328 Inodes wird erzeugt. UUID des Dateisystems: 509adcf1-cd12-4dce-bc65-1d303c1c3894 Superblock-Sicherungskopien gespeichert in den Blöcken: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544 beim Anfordern von Speicher für die Gruppentabellen: erledigt Inode-Tabellen werden geschrieben: erledigt Das Journal (32768 Blöcke) wird angelegt: erledgt Die Superblöcke und die Informationen über die Dateisystemnutzung werden geschrieben: erledigt
So, damit ist die Festplatte einsatzbereit und kann nun verwendet werden. Ich mounte sie mal probeweise.
$ sudo mount /dev/mapper/wechselplatte /wechselplatte/ $ sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 5,5T 0 disk ├─sda1 8:1 0 1M 0 part └─sda2 8:2 0 5,5T 0 part /home sdb 8:16 0 3,7T 0 disk └─sdb1 8:17 0 3,7T 0 part └─wechselplatte 252:0 0 3,7T 0 crypt /wechselplatte sdc 8:32 0 232,9G 0 disk ├─sdc1 8:33 0 216,9G 0 part / ├─sdc2 8:34 0 1K 0 part └─sdc5 8:37 0 16G 0 part [SWAP] sr0 11:0 1 1024M 0 rom
Alles hat funktioniert, ich kann sie also wieder unmounten.
$ sudo umount /wechselplatte $ sudo cryptsetup luksClose wechselplatte
Wenn ich die Wechselfestplatte verwenden möchte, muss ich sie wieder mounten, dies geht mit
$ sudo cryptsetup luksOpen -d /etc/luks.key /dev/sdb1 wechselplatte $ sudo mount /dev/mapper/wechselplatte /wechselplatte/