Einführung

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:

grep -q aes /proc/cpuinfo  && echo Dein Prozessor kennt die AES Befehlssatzerweiterung!

Prüfen, ob das Modul dafür geladen ist:

$ lsmod | grep aes
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:

$ modinfo aesni_intel
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:

$ wget http://archlinux.puzzle.ch/iso/latest/archlinux-2011.08.19-netinstall-dual.iso

Prüfsummen herunterladen:

$ wget http://archlinux.puzzle.ch/iso/latest/sha1sums.txt

ISO-Image mit den Prüfsummen überprüfen:

$ sha1sum --check sha1sums.txt 2> /dev/null | grep OK

Die Ausgabe soll so aussehen:

archlinux-2011.08.19-netinstall-dual.iso: OK

Jetzt kopiert man das Bootfähige ISO-Image auf einen USB-Stick (/dev/sdb enstpricht dem USB-Stick)

$ sudo dd if=archlinux-2011.08.19-netinstall-dual.iso of=/dev/sdb

Sendet man in einem anderen Fenster das Signal 10 ( SIGUSR1) an den dd-Prozess, schreibt dd den Zwischenstand auf die Standardausgabe.

$ sudo pkill -USR1 dd

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:

$ set -o vi

Dann muss noch das Tastaturlayout angepasst werden:

$ km

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:

# cfdisk

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

sda1  Boot  Primary  Linux      100MB
sda2        Primary  Linux LVM  500GB

Festplatte verschlüsseln

Mit cryptsetup kann man die Festplatte verschlüsseln.

# cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2

Man wird aufgefordert ein Passwort zweimal einzugeben.

Jetzt kann man die Festplatte entschlüsseln:

# cryptsetup luksOpen /dev/sda2 luks

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:

# pvcreate /dev/mapper/luks

Das kann mit pvs und pvdisplay kontrolliert werden.

Danach wird die Volume Group ( VG) erstellt:

# vgcreate rootvg /dev/sda2

Das kann mit vgs und vgdisplay kontrolliert werden.

Nun werden mit lvcreate neue Logical Volumes ( LVs) angelegt:

# lvcreate -n swap -L 4G -C y rootvg
# 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:

# dhclient eth0
# ping archlinux.puzzle.ch

Hat man kein Netzwerkkabel, kann man mit dem wpa\supplicant` eine Verbindung über das WLAN herstellen:

# wpa_passphrase deine_essid dein_passwort | tee wpa.cfg
# 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

  1. Setup starten**
# /arch/setup

Mit OK bestätigen.

  1. Select Source*
Select: core-remote
Mirror: http://archlinux.puzzle.ch

Oder einen Mirror aus deiner Nähe auswählen.

  1. Set Editor
Select: vi (advanced)
  1. Set clock
1: Select region and timezone
- 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.

  1. Prepare Hard Drive(s)
3: Manually Configure block devices, filesystems and mountpoints
- 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.

  1. Select Packages
- Bootloader: grub (GRUB bootloader)
- Packages: base

Weitere Pakete können nach der Installation installiert werden.

  1. Install Packages
- OK und warten...
- Continue

Die Pakete werden vom ausgewählten Spiegelserver heruntergeladen und installiert. Dies kan eine Weile dauern.

  1. Configure System
# vi /etc/rc.conf
[...]
LOCALE="de_CH.UTF-8"
USELVM="yes"
HOSTNAME="eris"
# vi /etc/fstab
[...]
/dev/sda1                /boot  ext2  defaults  0  1
/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.

# vi /etc/mkinitcpio.conf
[...]
HOOKS="base udev autodetect pata scsi sata usb usbinput keymap encrypt lvm2 filesystems fsck"

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.

# vi /etc/hosts_
[...]
127.0.0.1       localhost.localdomain   localhost eris

Der Hostname sollte bereits eingetragen sein.

Root-Passwort Das Root-Passwort muss man zweimal eingeben.

Mit Done beendet man diesen Schritt der Installation.

  1. Install Bootloader

Bei der Kernel-Zeile muss man Änderungen vornehmen, damit ArchLinux booten kann:

kernel /vmlinuz-linux cryptdevice=/dev/sda2:rootvg root=/dev/mapper/rootvg-root ro lang=de locale=de_CH.UTF-8

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:

Install in /dev/sda
  1. Exit Install
OK

ArchLinux wurde jetzt installiert und kann gebootet werden:

# reboot

Viel Spass mit dem komplett verschlüsselten ArchLinux!