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.
USB-Stick partitionieren
Links
http://www.saout.de/misc/dm-crypt
http://luks.endorphin.org/dm-crypt