Verschluesselung: dm-crypt/luks unter openSUSE
Inhaltsverzeichnis
Verschlüsselung: dm-crypt/luks unter openSUSE
Verschlüsselung einer /home- und swap-Partitionen mit cryptsetup (mit LUKS-Erweiterung), speichern des Keys auf einem (ebenfalls verschlüsselten) USB-Stick und automatische einbinden während des Bootvorgangs.
Hinweis: |
Dieser Artikel beschreibt die Einrichtung einer verschlüsselten Partition unter openSUSE. |
Allgemeines
Voraussetzungen
Installation von cryptsetup (mit LUKS-Erweiterung)
Unter openSUSE 10.2 ist das Programm cryptsetup im Paket
util-linux-crypt
enthalten.
Bis einschließlich SuSE Linux 10.1 gibt es das Paket
cryptsetup-luks
bei Packman.
Unterstützung von dm-crypt und AES im Kernel
Um den Device-Mapper dm-crypt und AES-Verschlüsselung zu nutzen müssen folgende Optionen im Kernel aktiviert sein:
Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers Device Drivers --> RAID and LVM Support --> [*] Multiple devices driver support (RAID and LVM) <*> Device mapper support <*> Crypt target support Cryptographic Options --> <*> AES cipher algorithims (i586) <*> SHA256 digest algorithm
Diese Optionen sind im SUSE-Standardkernel bereits aktiviert.
Nur wer einen eigenen Kernel verwendet muss diese Optionen berücksichtigen.
Kontrollieren lassen sich diese Einstellungen mit:
zcat /proc/config.gz | egrep 'DM_CRYPT|_AES|SHA256|CRYPTO='
oder
egrep 'DM_CRYPT|_AES|SHA256|CRYPTO=' /boot/config-*-default
Beispiel: /proc/config.gz
|
# zcat /proc/config.gz | egrep 'DM_CRYPT|_AES|SHA256|CRYPTO=' CONFIG_DM_CRYPT=m CONFIG_CRYPTO=y CONFIG_CRYPTO_SHA256=m CONFIG_CRYPTO_AES=m CONFIG_CRYPTO_AES_X86_64=m |
Einbinden des USB-Sticks
Um den USB-Stick immer über dasselbe Device ansprechen zu können, muss eine entsprechende UDEV-Regel erstellt, werden,
die automatisch einen Symlink auf den Stick (und die jeweiligen Partitionen) anlegt.
Zuerst ermittelt man die Seriennummer des USB-Sticks
(anhand dieser Nummer kann das Device später eindeutig zugeordnet werden):
udevinfo -a -p `udevinfo -q path -n /dev/<USB-Device>` | grep ATTRS{serial}
Beispiel: USB-Device: /dev/sdc
|
# udevinfo -a -p `udevinfo -q path -n /dev/sdc` | grep ATTRS{serial} ATTRS{serial}=="076A1A939BC2" ATTRS{serial}=="0000:00:02.1" |
Welche Seriennummer nun zum USB-Stick gehört ermittelt man mit:
udevinfo -a -p `udevinfo -q path -n /dev/<USB-Device>` | grep ATTRS{product}
Beispiel: USB-Device: /dev/sdc
|
# udevinfo -a -p `udevinfo -q path -n /dev/sdc` | grep ATTRS{product} ATTRS{product}=="USB DISK 28X" ATTRS{product}=="USB2.0 Hub" ATTRS{product}=="EHCI Host Controller" In diesem Fall gehört also die erste Seriennummer zum USB-Stick. ATTRS{serial}=="076A1A939BC2" |
Anschließend eine UDEV-Regel erstellen:
Mit einem beliebigen Editor die Datei
/etc/udev/rules.d/01-usb-crypto.rules
mit dem Inhalt
# udev-rule for encrypted usb-pen SUBSYSTEMS=="usb", ATTRS{serial}=="<Seriennummer>", KERNEL=="sd*", NAME="%k", SYMLINK+="<Device-Name>%n"
erstellen.
Wobei
ATTRS{serial}=="<Seriennummer>"
natürlich durch die Seriennummer des eigenen USB-Sticks ersetzt werden muss
und mit
SYMLINK+="<Device-Name>%n"
festgelegt wird unter welchem Devicenamen der Stick später verwendet wird.
Beispiel: Seriennummer: 076A1A939BC2, USB-Device: /dev/usbcrypt
|
# udev-rule for encrypted usb-pen SUBSYSTEMS=="usb", ATTRS{serial}=="076A1A939BC2", KERNEL=="sd*", NAME="%k", SYMLINK+="usbcrypt%n" Der komplette Stick kann in diesem Fall mit /dev/usbcrypt die erste Partition mit /dev/usbcrypt1 die zweite Partition mit /dev/usbcrypt2 usw. angesprochen werden. |
Anschließend die UDEV-Regeln mit
udevcontrol reload_rules
neu laden und den USB-Stick einstecken.
Unter
/dev
sollte dann mindestens (je nachdem wieviele Partitionen auf dem Stick existieren), das Device
/dev/usbcrypt
auftauchen unter dem der Stick dann - unabhängig von dem echten Device, dass z.B. bei fdisk -l angezeigt wird - angesprochen werden kann.
USB-Stick partitionieren/formatieren
Zum Partitionieren bieten sich diverse Programme an:
Konsole:
fdisk cfdisk sfdisk parted
GUI:
GParted (empfohlen) QtParted
Es wird mindestens eine Partition benötigt, auf der später die Schlüssel (Keys) gespeichert werden.
Im folgenden Beispiel werden auf einem leeren USB-Stick zwei neue Partitionen angelegt.
Auf der ersten Partition (50MB) wird später der Schlüssel für die /home-Partition gespeichert - die zweite kann für Daten genutzt werden (unverschlüsselt).
Achtung: |
Mit der folgenden Eingabe werden alle Daten auf dem Stick gelöscht! |
Beispiel: Anlegen von zwei Partitionen auf einem leeren/neuen USB-Stick mitt sfdisk
|
# sfdisk -uM /dev/usbcrypt << "EOF" > 0,50,L,+ > ,,L > EOF |
Links
http://www.saout.de/misc/dm-crypt
http://luks.endorphin.org/dm-crypt