LVM (Logical Volume Manager) bietet unter Linux eine sehr komfortable Methode an, Festplatten und Partitionen zu verwalten.
LUKS (Linux Unified Key Setup) erlaubt die transparente (Anwendungen bemerken nichts davon) Verschlüsselung ganzer Festplatten oder Teilen davon. LUKS ist Nachfolger von dm_crypt und bietet unter anderem den Vorteil, mehrere Passwörter vergeben zu können und beim Ändern (d.h. ein neues erstellen und ein altes löschen) eines Passwortes muss nicht der gesamte Inhalt neu verschlüsselt werden.
LUKS kann auf LVM aufsetzen (bspw. das Verschlüsseln einer Partition oder volume group (Gruppe) oder LVM kann auf LUKS aufsetzen. Über die Vor- und Nachteile sei hier im Moment nichts weiter geschrieben. Das Thema ist recht weitläufig.
Komfortabel ist die Benützung des LVM Tools (Redhat, Centos, Fedora: system-config-lvm oder Menü System->Admininstration->Logical Volume Management). Doch per Hand geht es auch:
Auf einer Harddisk (/dev/sdb) wird eine Partition (dev/sdb1) eingerichtet, die dann LVM "beherbergt". In (auf) dieser Partition wird ausgeführt (Annahme: die Tools befinden sich im Pfad):
Initialisieren der Partition für LVM:
# pvcreate /dev/sdb1
Erstellen einer "volume group" mit Namen LV03 (frei wählbar) in dieser LVM-Partition:
# vgcreate LV03 /dev/sdb1
Erstellen eines Volumens (herkömmlich: einer Partition) auf LV03 mit Namen LV03_crypted (frei wählbar):
# lvcreate -L 10G -n LV03_crypted LV03
Füllen des Volumens (Partition) mit Zufallszeichen. Dies verhindert, dass ein Angreifer anhand der sonst erkennbaren Strukturierung der Daten einen Angriff starten kann. Achtung dieser Vorgang kann (wird) mehrere Stunden dauern, je nach Grösse des Bereiches und Geschwindigkeit des Rechners:
# dd if=/dev/urandom of=/dev/LV03/LV03_crypted bs=1M
Verschlüsseln (Hinterlegen des Schlüssels) und erstellen des Block Devices. Auf CentOS5.4 (RHEL5.4) wird dabei AES mit CBC-Essiv und SHA256 verwendet (auf den neueren Fedoras (ab 12) AES-XTS-PLAIN).
# cryptsetup -y luksFormat /dev/mapper/LV03_crypted
(ergibt auf CentOS: cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat ...)
"Unlocking" des Block Devices und Eingabe des Passwortes (Pass phrase):
# cryptsetup luksOpen /dev/mapper/LV03_crypted crypt
Erstellen des Dateisystems. Es kann prinzipiell jedes verfügbare Dateisystem benutzt werden:
# mkfs.ext3 -j -m 1 -O dir_index,filetype,sparse_super /dev/mapper/crypt
# mkdir /mnt/crypt # mount /dev/mapper/crypt /mnt/crypt
# umount /mnt/crypt # cryptsetup luksClose /dev/mapper/crypt
Dafür wird die eindeutige UUID der zu mountenden Partition benötigt:
# cryptsetup luksUUID /dev/mapper/LV03_crypted
Das ergibt eine Zeile der Art:
5f110d4c-e746-2114-9f08-efc7b5cd1206
Diese wird auf einer Zeile in eine (neue, wenn nicht vorhandene) Datei /etc/crypttab geschrieben:
echo "luks-5f110d4c-e746-2114-9f08-efc7b5cd1206 UUID=5f110d4c-e746-2114-9f08-efc7b5cd1206 none" >>/etc/crypttab
Der Ort zum Einbinden wird erstellt (frei wählbar):
# mkdir /mnt/crypt
Dann wird die Datei /etc/fstab erweitert um die Zeile:
echo "/dev/mapper/luks-5f110d4c-e746-2114-9f08-efc7b5cd1206 /mnt/crypt ext3 defaults 1 2" >>/etc/fstab
Beim nächsten Booten wird nach dem Passwort der neuen Partition gefragt und das System hängt sie in den vorher definierten "mountpoint".
Man weitere Schlüssel hinzufügen oder entfernen. Bei beiden Befehlen kann man entweder den Schlüssel angeben oder eine Schlüsseldatei.
# cryptsetup luksAddKey /dev/mapper/LV03_crypted [<Schlüsseldate>] # cryptsetup luksRemoveKey /dev/mapper/LV03_crypted [<Schlüsseldatei>]
Wenn man einen Schlüssel entfernen möchte, den man nicht mehr kennt, aber man ist noch in Besitz eines weiteren, dann geht das unter Angabe eines bekannten Schlüssels direkt mit:
# cryptsetup luksDelKey /dev/mapper/LV03_crypted <Schlüsselnummer>