Schlagwort-Archive: Sicherheit

Festplatte verschlüsseln mit dm-crypt unter Linux

Nachdem ich doch immer einige wichtige Daten auf meinem Laptop mit mir herumtrage, hab ich mich mal damit beschäftigt, meine Festplatte zu verschlüsseln. Ist auch gar nicht so schwer, am Längsten hat das herumkopieren der Daten gedauert. Aber da muss man ja nicht zuschauen :).

Hier also eine Anleitung, um ein bereits existierendes Debian zu verschlüsseln. Als wichtigste Quelle rund um die Verschlüsselung sehe ich diesen guten Artikel. Auch die Readme Dateien von cryptsetup sind nützlich. Aber alles der Reihe nach.

Was benötige ich?

  • Komplettes Backup vom System auf einer externen Festplatte
  • SystemRescueCD auf CD oder USB-Stick
  • Etwas Zeit

Wohin will ich?

  • Komplettes System soll verschlüsselt sein (root-, swap-, Datenpartitionen)
  • Passwort soll leicht änderbar sein (=> LUKS)
  • Ruhezustand (Suspend2disk) soll funktionieren

Was muss ich tun?

  1. Sicherstellen, dass die Pakete lvm2, cryptsetup und busybox installiert sind.
  2. Von der SystemRescueCD booten. Ab jetzt finden alle Schritte in diesem System statt.
  3. Ein Backup machen und sicherstellen, dass es lesbar ist. Am Einfachsten geht das, wenn man eine externe Festplatte zur Verfügung hat, die genausoviel oder mehr Speicherkapazität hat wie die eingebaute Festplatte. Dann reicht ein einfaches „dd if=/dev/sdX of=/dev/sdY“ und etwas Zeit (bei mir 12h oO, vielleicht mal noch „bs=10M“ dranhängen?).
  4. Eingebaute Festplatte mit zufälligen Daten überschreiben, z.B. „dd if=/dev/urandom of=/dev/sdX“ (oder: „shred -n 1 /dev/sdX„)
  5. Neu partitionieren in eine Boot-Partition (100MB, ext3, /dev/sdX1 genannt) und eine Partition mit dem restlichen Speicher (/dev/sdX2 genannt), Bootable-Flag für sdX1 nicht vergessen.
  6. cryptsetup luksOpen –cipher aes-cbc-essiv:sha256 -y /dev/sdX2 lvmcrypt
    Dabei ein geeignetes Passwort eingeben und sich merken (mind 8 Zeichen, besser mehr!)
  7. LVM einrichten (je nach Geschmack unterschiedlich große LogicalVolumes):
    pvcreate /dev/mapper/lvmcrypt
    vgcreate main /dev/mapper/lvmcrypt
    lvcreate -L 12G -n root main
    lvcreate -L 1G -n swap main
    lvcreate… [home/data/whatever]
  8. Partitionen /dev/sdX1, /dev/mapper/main-root und /dev/mapper/main-swap formatieren
  9. Neue root-Partition (/dev/mapper/main-root) nach /mnt/linux mounten und /-Daten des Backups hierhin kopieren
  10. /mnt/linux/boot in /mnt/linux/boot_old umbenennen und /mnt/linux/boot-Ordner neu erstellen
  11. Neue boot-Partition (sdX1) nach /mnt/linux/boot mounten und boot_old-Daten des Backups hierhin kopieren
  12. Soweit so gut. Die Daten sind verschlüsselt. Jetzt muss man nur noch dafür sorgen, dass man auch wieder ins neue System reinkommt
  13. Jetzt das chroot einrichten und hineinwechseln:
    mount –bind /proc /mnt/linux/proc
    mount –bind /sys /mnt/linux/sys
    mount –bind /dev /mnt/linux/dev
    chroot /mnt/linux /bin/bash
  14. In die /etc/crypttab Datei eine Zeile einfügen:
    lvmcrypt /dev/sdX2 none luks
  15. In der /etc/fstab Datei die Einträge für root, boot und swap ändern, so dass die Einträge ähnlich wie hier ausschauen:
    /dev/sdX1 /boot ext3 defaults,errors=remount-ro 0 1
    /dev/mapper/main-root / ext4 defaults,errors=remount-ro 0 1
    /dev/mapper/main-swap none swap defaults 0 0
  16. Damit der Ruhezustand (suspend2disk) funktioniert, müssen in den Dateien /etc/initramfs-tools/conf.d/resume und /etc/uswsusp.conf die korrekte Resume-Partition eingegeben werden (/dev/mapper/main-swap)
  17. Eine neue InitRamdisk erstellen: update-initramfs -u
  18. Und schließlich Grub einrichten: update-grub sowie grub-install /dev/sdX
    Falls in dem Notebook noch eine PATA-Festplatte eingebaut ist und eine Fehlermeldung a la „Cannot find a grub drive“ erscheint, temporär in der /boot/grub/device.map den Eintrag von hdX1 in sdX1 umzubenennen
  19. Jetzt verlassen wir das chroot mit exit und unmounten alles wieder ordentlich:
    umount /mnt/linux/{proc,sys,dev,boot}
    umount /mnt/linux
  20. Das sollte es gewesen sein und das neue verschlüsselte System einsatzbereit.

Ergebnisse bzgl. Performance?

Zuerst muss ich bemerken, dass das Notebook schon recht alt ist, einen Pentium M 1,6GHz mit 1GB Ram und ner nicht besonders flotten 160GB 5400upm Festplatte besitzt.

Bei mir hat wohl die gleichzeitige Umstellung von ext3 auf ext4 performance-mäßig mehr bewirkt als der Wechsel zur verschlüsselten Festplatte. Meine Messungen des Boot-Vorgangs zeigen eine Verbesserung von 55 Sekunden (Grub-Prompt bis X11-Anmeldung mit ext3) auf 48 Sekunden (mit ext4 und Verschlüsselung ohne Zeit um das Passwort einzugeben). Mit den 5-10 Sekunden extra fürs Eingeben des Passworts ist man wieder beim gleichen. Beim Login und Laden der Gnome-Session lag eine Verbesserung von 37sec auf 25sec vor.

Das Kopieren von 90GB Daten von einer externen Festplatte auf die verschlüsselte Partition ging mit ~12MB/s in einer anständigen Geschwindigkeit, ich habe allerdings leider keine Referenzwerte ohne Verschlüsselung.

Wie auch immer 🙂 – Ob man im täglichen Betrieb viel von der zusätzlichen Prozessorbelastung merken wird, kann ich noch nicht sagen. Beim Hantieren mit großen Datenmengen merkt man es vielleicht schon, allerdings ist das bei meinem Notebook eh nie schnell, von daher kann ich das verkraften…

Ich hoffe, dass ich keinen wichtigen Schritt ausgelassen habe und meine Anleitung eine Hilfestellung geben kann. Bei Fragen dazu einfach melden.