Auf einem Notebook sind oft private Daten, welche nicht in andere Hände geraten sollen. Deshalb habe ich mein Notebook komplett verschlüsselt. Ich muss mir dann keine Gedanken machen, wenn ich mein Notebook verliere oder es gestohlen wird. Diese Installation legt Logical Volumes auf einer mit LUKS verschlüsselten Partition an.
Ist mein Notebook dafür geeignet?
Neuere Prozessoren verfügen über eine AES Befehlssatzerweiterung mit welcher AES Verschlüsselungen und Entschlüsselungen erheblich beschleunigt werden.
Folgendermassen kann man feststellen, ob eine CPU die AES Befehlssatzerweiterung kennt:
Prüfen, ob das Modul dafür geladen ist:
aesni_intel 43154 18
aes_x86_64 7508 1 aesni_intel
aes_generic 26138 2 aesni_intel,aes_x86_64
cryptd 8741 6 ghash_clmulni_intel,aesni_intel
Informationen zu diesem Modul anzeigen:
filename: /lib/modules/3.4.4-2-ARCH/kernel/arch/x86/crypto/aesni-intel.ko.gz
alias: aes
license: GPL
description: Rijndael (AES) Cipher Algorithm, Intel AES-NI instructions optimized
alias: x86cpu:vendor:*:family:*:model:*:feature:*0099*
depends: cryptd,aes-x86_64,aes_generic
intree: Y
vermagic: 3.4.4-2-ARCH SMP preempt mod_unload modversions
Eine Liste, welche Programme die AES Befehlssatzerweiterung nutzen können, gibt es bei Wikipedia.
Natürlich kann diese Installation auch bei allen anderen Geräten vorgenommen werden, welche die AES Befehlssatzerweiterung nicht kennen.
ArchLinux herunterladen und auf einen USB-Stick kopieren
Die aktuellste Verion von ArchLinux findet man hier: http://archlinux.puzzle.ch/iso/latest/
Ich bevorzuge das “netinstall-dual” Image, weil dort beide Architekturen (x64 und x86_64) vorhanden sind und alle Pakete direkt vom Internet bezogen werden können.
ISO-Image herunterladen:
Prüfsummen herunterladen:
ISO-Image mit den Prüfsummen überprüfen:
Die Ausgabe soll so aussehen:
Jetzt kopiert man das Bootfähige ISO-Image auf einen USB-Stick (/dev/sdb enstpricht dem USB-Stick)
Sendet man in einem anderen Fenster das Signal 10 (SIGUSR1) an den dd-Prozess, schreibt dd den Zwischenstand auf die Standardausgabe.
ArchLinux starten
Man bootet vom USB-Stick. Der Username lautet root und benötigt kein Passwort. Ich nutze gerne den vi-Modus in der Shell um effizienter arbeiten zu können:
Dann muss noch das Tastaturlayout angepasst werden:
Als Keymap verwende ich (für die Schweiz) i386/quertz/de_CH-latin1.map.gz und für die Console Font default8x16.psfu.gz.
Festplatten vorbereiten
Wir benötigen zwei Partitionen: Eine Boot-Partition und eine Partition die verschlüsselt wird. Die verschlüsselte Partition wird mit dem Logical Volume Manager (LVM) in mehrere Logical Volumes (LVs) unterteilt.
Partitionierungstool cfdisk starten:
Mit d werden alle Partitionen gelöscht und dann mit n eine neue angelegt. Die erste Partition ist die Boot-Partition und soll 100MB gross sein. Diese ist Bootbar und vom Type Linux (83). Die zweite Partition ist vom Type Linux LVM (8E) und ist so gross wie der Rest der Platte. Mit W werden die Änderungen gespeichert und mit q wird cfdisk beendet. Am Schluss soll das etwa so aussehen (/dev/sda entspricht der Festplatte):
sda2 Primary Linux LVM 500GB
Festplatte verschlüsseln
Mit cryptsetup kann man die Festplatte verschlüsseln.
Man wird aufgefordert ein Passwort zweimal einzugeben.
Jetzt kann man die Festplatte entschlüsseln:
Im Verzeichnis /dev/mapper/ ist die Festplatte jetzt unter luks verfügbar.
Logical Volume Manager einrichten
Jetzt legt man ein neues Physical Volume (PV) an:
Das kann mit pvs und pvdisplay kontrolliert werden.
Danach wird die Volume Group (VG) erstellt:
Das kann mit vgs und vgdisplay kontrolliert werden.
Nun werden mit lvcreate neue Logical Volumes (LVs) angelegt:
# lvcreate -n root -L 25G rootvg
# lvcreate -n var -L 5G rootvg
# lvcreate -n home -l 100%FREE rootvg
Mit -n kann man dem Logical Volume einen Namen geben. Die Option -C steht für contiguous und stellt sicher, dass die Datenblöcke direkt nacheinander liegen (damit ist das swappen schneller). Mit -L kann man eine fixe Grösse angeben und mit -l ist es möglich die verbleibenden LogicalExtents zu verwenden. Das kann mit lvs und lvdisplay kontrolliert werden.
Netzwerk herstellen
Hat man ein Netzwerkkabel, schliesst man das an und bezieht eine IP-Adresse per DHCP:
# ping archlinux.puzzle.ch
Hat man kein Netzwerkkabel, kann man mit dem wpa_supplicant eine Verbindung über das WLAN herstellen:
# wpa_supplicant -i wlan0 -c wpa.cfg -B
# dhclient wlan0
# ping archlinux.puzzle.ch
Jetzt ist man parat für die eigentliche Installation.
ArchLinux installieren
0) Setup starten
Mit OK bestätigen.
1) Select Source
Mirror: http://archlinux.puzzle.ch
Oder einen Mirror aus deiner Nähe auswählen.
2) Set Editor
Falls Du vi nicht beherrscht, kannst du nano auswählen.
3) Set clock
- Europa / Zürich
2: Set time and date
- UTC = Weltzeit
- NTP # Gleicht die Zeit mit einem NTP-Server ab
3: Return
Natürlich an deine Umgebung anpassen. Wenn die Uhr per NTP abgegleicht wird, stimmt sie genau.
4) Prepare Hard Drive(s)
- Partition Access Method: dev
- Filesysteme folgendermassen auswählen und konfigurieren:
- Device FS Type Mountpoint Label
/dev/sda1 ext2 /boot boot
/dev/mapper/rootvg-swap swap swap
/dev/mapper/rootvg-root ext4 / root
/dev/mapper/rootvg-var ext4 /var var
/dev/mapper/rootvg-home ext4 /home home
- Done
5: Return
Die Filesysteme wurden jetzt angelegt und können verwendet werden.
5) Select Packages
- Packages: base
Weitere Pakete können nach der Installation installiert werden.
6) Install Packages
- Continue
Die Pakete werden vom ausgewählten Spiegelserver heruntergeladen und installiert. Dies kan eine Weile dauern.
7) Configure System
Datei: /etc/rc.conf
USELVM="yes"
HOSTNAME="eris"
Datei: /etc/fstab
/dev/mapper/rootvg-root / ext4 defaults 0 1
/dev/mapper/rootvg-swap swap swap defaults 0 0
/dev/mapper/rootvg-home /home ext4 defaults 0 1
/dev/mapper/rootvg-var /var ext4 defaults 0 1
tmpfs /tmp tmpfs nodev,nosuid 0 0
Alle Logical Volumes sind bereits automatisch schön eigetragen.
Datei: /etc/mkinitcpio.conf
Die Hooks usb und usbinput werden für USB-Tastaturen verwendet. Der Hook keymap wird verwendet, damit man das richtige Tastaturlayout hat. Der Hook encrypt wird zum Entschlüsseln verwendet und lvm2 wird für den Logical Volume Manager benötigt. Wichtig ist, dass man encrypt vor dem lvm2 Hook einfügt.
Datei: /etc/hosts
Der Hostname sollte bereits eingetragen sein.
Root-Passwort
Das Root-Passwort mussman zweimal eingeben.
Mit Done beendet man diesen Schritt der Installation.
8) Install Bootloader
Bei der Kernel-Zeile muss man Änderungen vornehmen, damit ArchLinux booten kann:
Die Partition /dev/sda2 steht für die LUKS verschlüsselte Partition und rootvg ist der Name der angelegten Volume Group.
Der Bootloader wird in /dev/sda installiert:
9) Exit Install
ArchLinux wurde jetzt installiert und kann gebootet werden:
Viel Spass mit dem komplett verschlüsselten ArchLinux!
Links und weitere Informationen
- WP: AES Befehlssatzerweiterung: http://de.wikipedia.org/wiki/AES_%28Befehlssatzerweiterung%29
- Manpage: cryptsetup(8): http://linux.die.net/man/8/cryptsetup
- ArchLinux Wiki: Festplatten verschlüsseln: https://wiki.archlinux.de/title/Festplatte_verschlüsseln
Guter Einstiegs ins Thema ..
Leider ist Arch bleeding edge .. was bedeutet, dass viele der hiesigen Schritte überholt sind. Kein AIF, kein Grub Legacy.
Ich musste nach den Schritten hier noch Grub2-bios von CD aus installieren.
Ach, und danke; endlich mal einer, der mir sagt, wie ich mit diesen checksum files umgehe. 😉
Hey querwurzelt
Ja, ich weiss. Seit heute ist der grafische Installer (AIF) nicht mehr vorhanden und Grub ist jetzt auch in Version 2 im Core-Repository.
Aber es freut mich, dass ich helfen konnte.
Viel Spass
Emanuel
Ich habe bei der Vorbereitung von LVM nicht /dev/sda2 für vgcreate verwenden können und dann aufgrund des man-Eintrags /dev/mapper/luks wie bei pgcreate davor verwendet. Funktioniert nun bestens, vielen Dank für die Anleitung!
Bitte. Schön, dass es Dir geholfen hat.
Anleitung gefunden, verstanden, konnte es anwenden ohne Probleme.
Frage: ich boote eine Live-CD (partedmagic)
dann muss ich ja: modprobe dm-crypt laden
danach cryptsetup luksOpen /dev/sdx2 luks
Passwort eingeben.
Danach dauert es aber ewig.
Unter Arch direkt dauert es ein paar Sekunden und er bootet weiter. Was mache ich falsch?
Anregung: Eventuell bald umschreiben wie es ohne AIF geht (sind ja nur ein paar Befehle (pacstrap)) und eventuell auch noch zur Vereinfachung: netcfg für WLAN Verbindung
Ich bedanke mich sehr für die tolle Anleitung 🙂 Konnte meine Partition direkt verschlüsseln.
Hallo Nesc
Schön, dass Dir die Anleitung geholfen hat.
Das mit der Live-CD wäre schon richtig. Ist das Modul auch richtig geladen? Was sagt “$ lsmod | grep dm_crypt”? Nach der ewigen Zeit, hat es dann funktioniert oder geht es gar nicht?
Sobald ich mal Arch mit AIF installiere, werde ich auch die Anleitung anpassen bzw. eine neue schreiben. Zudem habe ich jetzt die Grundkonfiguration hier beschrieben: http://emanuelduss.ch/2012/07/arch-linux-grundkofiguration/. Im Abschnitt zu netcfg wird auch WLAN WPA2 mit netcfg beschrieben.
Freut mich Dir geholfen zu haben und dass deine Daten nun komplett verschlüsselt sind.
LG
Emanuel