Hinweis: Diese Seite gibt meinen Wissensstand von ca. 2014 wieder und sollte heutzutage nicht mehr als Blaupause für das Anlegen eines Fileservers genutzt werden. Für eine Anleitung, die erst später veraltet sein wird, bitte die übergeordnete Seite betrachten. ;-) |
Als Nächstes richten wir den sicheren Datenspeicher ein. Es ist ja schön und gut, wenn man später von außen nur mit einem gut gewählten Passwort an FTP/HTTP dran kommt, aber hilft nicht viel, wenn jemand einfach die USB-Festplatte abzupfen und an einen anderen Rechner anschlließen kann. Wer nur Angst vor Remote-Angriffen hat kann diesen Schritt natürlich überspringen (und wird wahrscheinlich mit einem etwas höheren Datendurchsatz belohnt).
Was ich hier mache ist eine einzelne Partition mit LUKS-Header, die mit einer Passphrase geschützt wird. Wer über Alternativen nachdenken möchte (z.B. ein wesentlich sichereres Key File zu benutzen) findet im dm-crypt-Artikel des ArchWiki jede Menge Zusatzinfos.
Als Erstes schließen wir die Festplatte oder den USB-Stick an und schauen nach, welcher Gerätenamen zugewiesen wird. (Ich verwende im Folgenden zur Demonstration einen USB-Stick mit 4 GB).
# dmesg | tail [ 8730.902036] sd 1:0:0:0: [sda] Write Protect is off [ 8730.902070] sd 1:0:0:0: [sda] Mode Sense: 03 00 00 00 [ 8730.902565] sd 1:0:0:0: [sda] No Caching mode page found [ 8730.921722] sd 1:0:0:0: [sda] Assuming drive cache: write through [ 8730.942699] sd 1:0:0:0: [sda] No Caching mode page found [ 8730.956289] sd 1:0:0:0: [sda] Assuming drive cache: write through [ 8731.400607] sda: unknown partition table [ 8731.403296] sd 1:0:0:0: [sda] No Caching mode page found [ 8731.416931] sd 1:0:0:0: [sda] Assuming drive cache: write through [ 8731.423258] sd 1:0:0:0: [sda] Attached SCSI removable disk
Auf diesem Gerät richten wir jetzt einen LUKS-Header ein:
# cryptsetup luksFormat /dev/sda WARNING! ======== This will overwrite data on /dev/sda irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase: Verify passphrase:
Für uns unsichtbar wurden an dieser Stelle etliche Entscheidungen bezüglich Schlüssellänge und Algorithmus getroffen. Wer sich für die Details interessiert, sei an den Artikel im ArchWiki verwiesen. Wer einfach nur sehen will, was passiert ist, kann den LUKS-Header dumpen:
# cryptsetup luksDump /dev/sda LUKS header information for /dev/sda Version: 1 Cipher name: aes Cipher mode: xts-plain64 Hash spec: sha1 Payload offset: 4096 MK bits: 256 MK digest: b4 77 cf ef 89 ca 1b dd d5 ef 1f 8f 7c 43 3a e4 53 d6 f7 a9 MK salt: 0f 30 a5 0b 4d c6 95 81 a7 a9 5e e6 e1 3a 39 d5 dc 6a 2b 18 23 52 0b 9e be 85 9e 31 06 84 4f 3a MK iterations: 4625 UUID: d5069684-8f7d-49ef-9a24-2312a2923011 Key Slot 0: ENABLED Iterations: 18823 Salt: 71 56 5e 7e 98 33 19 e8 d0 17 55 76 df 78 9b e8 a1 e4 d0 9d 93 07 40 56 11 b2 b3 6f 43 d4 36 f1 Key material offset: 8 AF stripes: 4000 Key Slot 1: DISABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
Als Nächstes wird die LUKS-Partition geöffnet, d.h. einem Ziel im Device Mapper zugeordnet:
# cryptsetup luksOpen /dev/sda crypt Enter passphrase for /dev/sda:
Jetzt ist unsere Partition unter /dev/mapper/crypt
zu finden. Ab hier läuft alles wie gewohnt,
die Verschlüsselung passiert vollkommen transparent. Unsere erste Tat mit der Partition ist das Anlegen
eines ext4-Dateisystems.
# mkfs.ext4 /dev/mapper/crypt mke2fs 1.42.11 (09-Jul-2014) Creating filesystem with 1002496 4k blocks and 250976 inodes Filesystem UUID: aa906fff-8ab6-4b2b-b332-66adbdb5c031 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done
Danach können wir das Dateisystem wie gewohnt mounten. Mit df
schauen wir nach, ob die
Größe stimmt.
# mount /dev/mapper/crypt /mnt # df -h /mnt/ Filesystem Size Used Avail Use% Mounted on /dev/mapper/crypt 3.8G 7.7M 3.5G 1% /mnt
Um die Festplatte/den USB-Stick wieder entfernen zu können, sind die letzten Schritte in umgekehrter Reihenfolge auszuführen:
# umount /mnt # cryptsetup luksClose crypt
Zum erneuten Mounten sind nur noch luksOpen
und mount
notwendig, das andere Brimborium
diente zur initialen Einrichtung.
# cryptsetup luksOpen /dev/sda crypt Enter passphrase for /dev/sda: # mount /dev/mapper/crypt /mnt
Hier muss lediglich beim Öffnen der Partition die Passphrase angegeben werden. Damit eignet sich das Prinzip auch prima um USB-Sticks für den Einsatz an verschiedenen Rechnern zu verschlüsseln (solange auf dem Zielsystem Linux mit Kernel 2.6 oder später zur Verfügung steht und man sich als root einloggen kann).