Installation auf eine verschlüsselte root-Partition
Anmerkung: Es gibt Wichtiges zu beachten, wenn Root- oder Datenpartitionen verschlüsselt werden. Darunter:
- Diese Anleitung gilt ab aptosid-2010-03-apate.
- Folgende Anleitung beinhaltet nur Grundlegendes. Wir raten, mehr über LUKS, cryptsetup und Verschlüsselung in Erfahrung zu bringen. Weitere Informationen sind am Ende dieser Seite verlinkt. Die gelisteten Informationen sind nur erste weitere Schritte. Englischkenntnisse sind notwendig.
- cryptsetup kann keine existierende Datenpartition verschlüsseln, daher muss eine neue Partition erstellt werden, die mit cryptsetup aufgesetzt wird. Im Anschluss können Daten auf diese Partition geschrieben werden.
- Es können auch Schlüsseldateien verwendet werden. Für Daten können Mehrfachschlüssel verwendet werden (bis zu maximal acht). Dies wird in dieser Anleitung nicht erläutert.
- Bitte vergessen Sie nicht Ihre Passwörter! Ohne sie kann auf die Daten nicht mehr zugegriffen werden! Auch mittels chroot mit Passwörtern kann nur auf /boot zugegriffen werden.
- Das Passwort wird früh im Bootprozess abgefragt und das System startet danach wie vorgesehen.
Verschlüsselungsbeispiele:
Verschlüsselung innerhalb von LVM-Gruppen
Dieses Beispiel nutzt die Verschlüsselung innerhalb des LVM-Volumens, um home von / abzutrennen und eine Swap-Partition zu haben, ohne multiple Passwörter verwenden zu müssen. Diese Möglichkeit existiert ab aptosid-2010-03-apate.
Bevor der Installer gestartet werden kann, muss das Dateisystem, welches für die Installation verwendet wird, vorbereitet werden. Eine einfache Anleitung dazu findet sich im Kapitel Logical Volume Manager - LVM-Partitionierung.
Man benötigt zumindest ein nicht verschlüsseltes /boot-Dateisystem und ein verschlüsseltes Dateisystem für /. Ferner sind verschlüsselte Dateisysteme für /home und swap anzulegen.
- Falls nicht geplant ist, eine existierende LVM-Gruppe zu verwenden, wird eine normale LVM-Gruppe angelegt. In diesem Beispiel wird angenommen, dass die LVM-Gruppe vg benannt ist und boot wie verschlüsselte Daten beinhaltet.
- Ein LVM wird für /boot und die verschlüsselten Daten benötigt. Mit lvcreate werden LVMs in vg mit gewünschter Größe erstellt:
lvcreate -n boot --size 250m vg lvcreate -n crypt --size 300g vg
Mit diesen Befehlen wurden die LVMs "boot" und "crypt" benannt, ihre Größen sind 250MB bzw. 300GB. - Nun wird das Dateisystem für /boot erstellt, damit es im Installer vorhanden ist:
mkfs.ext4 /dev/mapper/vg-boot
- cryptsetup wird nun verwendet, um vg-crypt zu verschlüsseln. Dabei wird die schnellere Option xts mit dem stärksten Schlüssel (Länge: 512bit) verwendet. Danach wird das Dateisystem geöffnet. Es wird zweimal nach dem Passwort gefragt, um es zu setzen, und ein drittes Mal, um das Dateisystem zu öffnen. Geöffnet wird es mit den Default-Bootoptionen von cryptopt und dem Zielnamen cryptroot:
cryptsetup --verify-passphrase --cipher aes-xts-plain:sha512 luksFormat /dev/mapper/vg-crypt
cryptsetup luksOpen /dev/mapper/vg-crypt cryptroot
- Nun wird die LVM innerhalb des verschlüsselten Dateisystems verwendet, um eine zweite LVM-Gruppe zu erstellen, welche für /swap und /home verwendet wird. Mit pvcreate wird cryptroot ein physisches Volumen und mit vgcreate wird eine weitere Volumen-Gruppe erstellt, die wir cryptvg nennen:
pvcreate /dev/mapper/cryptroot vgcreate cryptvg /dev/mapper/cryptroot
- Als nächstes verwenden wir lvcreate mit der neuen verschlüsselten LVM-Gruppe cryptvg, um die LVMs / , /swap und /home mit der gewünschten Größe zu erstellen:
lvcreate -n swap --size 2g cryptvg lvcreate -n root --size 40g cryptvg lvcreate -n home --size 80g cryptvg
Nun wurden die LVMs swap, root und home mit den Größen 2GB, 40GB bzw. 80GB erstellt. - Im nächsten Schritt werden die Dateisysteme für cryptvg-swap, cryptvg-root und cryptvg-home erstellt, damit sie für den Installer vorhanden sind:
mkswap /dev/mapper/cryptvg-swap mkfs.ext4 /dev/mapper/cryptvg-root mkfs.ext4 /dev/mapper/cryptvg-home
- Der Installer kann nun gestartet werden, wobei folgende Optionen benutzt werden sollen:
vg-boot für /boot,
cryptvg-root für /,
cryptvg-home für /home,
cryptvg-swap für swap sollte automatisch erkannt werden.
Das installierte System sollte eine Kernel-Befehlszeile mit folgenden Optionen aufweisen:
root=/dev/mapper/cryptvg-root cryptopts=source=/dev/mapper/vg-crypt,target=cryptroot,lvm=cryptvg-root
crypt und boot sind innerhalb der LVM-Gruppe vg und root, home wie swap sind innerhalb der LVM-Gruppe vgcrypt (innerhalb des passwortgeschützten verschlüsselten Bereichs).
Anmerkung: Falls auf ein bereits verschlüsseltes LVM-Volume installiert wird, muss dem Installer diese Information bereitgestellt werden:
cryptsetup luksOpen /dev/mapper/cryptvg-root cryptvg vgchange -a y
Anmerkungen zu crypt mit traditioneller Partitionierung
Als erstes muss das Layout der Festplatte festgelegt werden. Es werden mindestens zwei Partitionen benötigt, eine normale Partition für /boot und eine für die verschlüsselten Daten.
Falls swap benötigt wird (swap sollte auch verschlüsselt sein), wird eine dritte Partition benötigt. Das Passwort für swap muss während des Bootvorgangs extra eingegeben werden (es gibt zwei Passwortabfragen).
Es ist möglich, für swap Schlüssel von innerhalb des verschlüsselten Systems zu benutzen, dann jedoch ist ein suspend-to-disk nicht möglich. Aus diesem Grund ist es langfristig besser, LVMs mit voll verschlüsselten Partitionen und Schlüsseln zu verwenden.
Grundannahmen:
- Es gibt nur drei Partitionen auf der Festplatte:
/boot mit 250MB
/swap mit 2GB
/ und /home vereint: Rest. - Es werden zwei Passwörter verwendet, eines für swap, das andere für die gemeinsame Partition für / und /home.
Nach Abschluss der Partitionierung müssen die verschlüsselten Partitionen vorbereitet werden, damit sie vom Installer erkannt werden.
Falls ein Partitionierungsprogramm mit graphischer Oberfläche benutzt wurde, muss dieses beendet werden und ein Terminal geöffnet, da die Verschlüsselungsbefehle über die Befehlszeile eingegeben werden.
Die Partition /boot
Die Partition /boot wird mit ext4 formatiert, falls dies noch nicht erledigt wurde:
/sbin/mkfs.ext4 /dev/sda1
Verschlüsselte swap-Partition
Für die verschlüsselte swap muss das Gerät /dev/sda2 zunächst formatiert und als verschlüsseltes Gerät geöffnet werden - wie vg-crypt oben, aber unter einem anderen Namen: swap.
cryptsetup --verify-passphrase --cipher aes-xts-plain:sha512 luksFormat /dev/sda2
cryptsetup luksOpen /dev/sda2 swap
echo "swap UUID=$(blkid -o value -s UUID /dev/sda2) none luks" >> /etc/crypttab
Die erstellte /dev/mapper/swap wird formatiert, damit der Installer sie erkennen kann:
/sbin/mkswap /dev/mapper/swap
Verschlüsselte Partition /
Für die verschlüsselte / muss das Gerät /dev/sda3 zunächst formatiert und als verschlüsseltes Gerät geöffnet werden - wie vg-crypt oben.
cryptsetup --verify-passphrase --cipher aes-xts-plain:sha512 luksFormat /dev/sda3
cryptsetup luksOpen /dev/sda3 cryptroot
Die erstellte /dev/mapper/cryptroot wird formatiert, damit der Installer sie sehen kann:
/sbin/mkfs.ext4 /dev/mapper/cryptroot
Start des Installers
Nun kann der Installer geöffent werden und folgende Optionen sind zu benutzen:
sda1 für /boot
cryptroot für / und /home
swap sollte automatisch erkannt werden.
Das installierte System sollte eine Kernel-Befehlszeile mit folgenden Optionen aufweisen (UUID wird benutzt):
root=/dev/mapper/cryptroot cryptopts=source=UUID=12345678-1234-1234-1234-1234567890AB,target=cryptroot
/boot ist nun eine normale Partition, die swap-Partition ist verschlüsselt wie auch die gemeinsame Partition für root und /home.
Weitere Informationen:
Unbedingt zu lesen:
man cryptsetup
LUKS (Englisch)
Protect Your Stuff With Encrypted Linux Partitions (Englisch)
KVM how to use encrypted images (Englisch)
aptosid-WIKI-Eintrag (Englisch)