Verschluesselung: dm-crypt/luks unter openSUSE

Aus Linupedia.org
Version vom 29. April 2007, 08:56 Uhr von B3ll3roph0n (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Konsole

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.

Also:
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



Zurück zu Konsole