Marodeur

WebCams
(anklicken für größeres Bild)



alle 10 Minuten neu

komplett verschlüsselte Festplatten mit Keyfile & Booten per USB-Stick

Ubuntu/Debian/Linux Um was geht's?

Mit Ubuntu (7.04 Feisty Fain) alle Festplatten eines PC verschlüsseln, so das man nur noch per USB-Stick oder CD booten kann. Bootbare MMC- oder SD-Karten sollten ebenfalls funktionieren (ungetestet)

Nicht für Anfänger geeignet!

Vor- & Nachteile:
  • Niemand kann Sie nach dem Passwort erpressen. Sie kennen es nicht :-)
  • Brute-force-Methoden sind sehr aufwendig, denn im Keyfile befindet sich kein Wort, auch keine wilde Reihenfolge von Buchstaben, sondern nur zufällige Bits.
  • Wenn der USB-Stick defekt ist oder verloren geht, sind alle Daten auf dem Rechner nicht mehr zu erreichen!
  • Für Desktop-Systeme, die immer wieder neu gestartet werden, nicht zu empfehlen, schliesslich läßt man aus Faulheit den USB-Stick am Rechner und hat damit nichts gewonnen.

Was brauchen wir:

Eine Installations-CD oder DVD mit Ubuntu/Kubuntu oder ähnliches. Debian wär auch möglich.
(Feisty Fain 7.04 oder Etchy Edge 6.10)
Einen PC, :-) der von einem USB-Stick booten kann!
Einen bootbaren (!) USB-Stick, min. 32MB.
Cryptsetup-luks ab Version 1.0.5, da dort das Keyscript benutzt wird.

Ich habe die Kubuntu-DVD 6.10 Edgy Eft benutzt und dann über Netzwerk auf Feisty Fain 7.04 hochgerüstet.
Mit einer Feisty Fain-CD/DVD sollte es ebenso ablaufen, allerdings gibt es dort keine hdX mehr.

Warnung: Im Kernel 2.6.20.15 (ab dem .16er scheint es wieder zurück geändert worden zu sein) ändern sich  teilweise die Zuordnungen der Festplatten,. Es gibt kein hdX mehr, nur noch sdX. Man muss also alle Einstellungen entsprechend korrigieren (grub/menu.lst, fstab, crypttab)
(dies gilt scheinbar nicht für uralte Systeme, die nur PATA-Ports kennen)

Wir beginnen: Systeminstallation

 Achtung, alle Daten werden bei der Partitionierung der Festplatte vernichtet!
Tun Sie dies nur, wenn Sie diese Daten nicht mehr benötigen oder auf andere Medien gesichert haben!

Wir booten von der CD/DVD und lassen das System normal installieren.
Bei der Einrichtung der Partitionen nehmen wir mindestens 3 Stück:

1. /boot (/dev/sda1) etwa 50MB
2. /        (/dev/sda2) mindestens 2 GB, hierher kommt später die Swap-Partition.
3.          (/dev/sda3) der Rest, hier kommt später die verschlüsselte Root-Partition hin.

man kann natürlich noch eine 4. Partition für /home (/dev/sda4) einrichten, ganz nach Geschmack.

Nach der Installation wird das System neu gestartet. Und es geht weiter:

Platten verschlüsseln

(sudo -s bringt uns in eine root-Shell, ansonsten ist jedem Befehl ein sudo voran zu stellen)

Wir installieren folgende Programme:
    apt-get install cryptsetup dmsetup hashalot
(dmsetup ist ab feisty im Grundsystem, etch-Benutzer müssen es nachinstallieren)

Nun erzeugen wir unser Keyfile:
    mkdir /boot/keys
    dd if=/dev/random of=/boot/keys/sda3.key bs=1 count=32

Wer eine hda4 eingerichtet hat, sollte sich dafür ebenfalls ein keyfile erzeugen:
    mkdir /etc/keys
    dd if=/dev/random of=/etc/keys/sda4.key bs=1 count=32
Wir kopieren uns dieses Keyfile mit in /boot/keys/, um bei einem Crash auf sda3 trotzdem noch auf sda4 zugreifen zu können. cp /etc/keys/sda4.key /boot/keys/

Nun laden wir die Module
    modprobe dm_crypt
    modprobe aes_i585   (uralte Rechner nehmen hier nur aes)
    modprobe sha256

und erzeugen unsere verschlüsselten Partitionen
    cryptsetup luksFormat /dev/sda3 /boot/keys/sda3.key
die Sicherheitsabfrage muss mit YES beantwortet werden.

Partition ins System einbinden
    cryptsetup -d /boot/keys/sda3.key luksOpen /dev/sda3 sda3

Wenn alles geklappt hat meldet cryptsetup folgendes:
key slot 0 unlocked.
Command successful.

für hda4:
    cryptsetup luksFormat /dev/sda4 /etc/keys/sda4.key
die Sicherheitsabfrage muss mit YES beantwortet werden.

Partition ins System einbinden
    cryptsetup -d /etc/keys/sda4.key luksOpen /dev/sda4 sda4

Damit ist die verschlüsselte Partition aktiviert und wir können sie formatieren:
    mkfs.ext3 /dev/mapper/sda3
    mkfs.ext3 /dev/mapper/sda4

und mounten:
    mount /dev/mapper/sda3 /mnt

Die sda4 müssen wir in die sda3 mounten:
mkdir /mnt/home
mount /dev/mapper/sda4 /mnt/home


Config-Dateien anpassen

Nun müssen wir ein paar Config-Dateien verändern und danach kopieren wir alles auf die verschlüsselte Partition.

Als erstes ergänzen wir /usr/share/initramfs-tools/hooks/cryptoroot

am Ende nach
        copy_exec /sbin/cryptsetup /sbin
        copy_exec /sbin/dmsetup /sbin
kommt
        mkdir ${DESTDIR}/keys
        cp /boot/keys/sda3.key ${DESTDIR}/keys/
Das Keyfile für die /home-Partition verbleibt in /etc/keys/.

Dieses veränderte Script sollte man sich gut sichern und bei einem Update von Initramfs-Tools schauen, ob es noch vorhanden ist, sonst wird das Keyfile nicht in die initrd.img kopiert und man hat große Mühe wieder an seine Platte zu kommen!


Nun müssen wir ein Keyscript erstellen.
 vi /etc/keys/showkey

ROOTKEY="$1"
/bin/cat $ROOTKEY

Bei den Rechten bin ich mir nicht sicher. Nachdem ich die Datei auf 777 und User:Group auf den eingerichteten User gesetzt hab, lief es erst. (Über ne Info wieso und was genau sein muss wäre ich dankbar)

nun müssen wir noch die /etc/crypttab und /etc/fstab anpassen.
/etc/crypttab:
    # <target name> <source device>              
    sda3    /dev/sda3  /keys/sda3.key  luks,keyscript=/etc/keys/showkey,cipher=aes-cbc-essiv:sha256
    sda4    /dev/sda4  /etc/keys/sda4.key  
keyscript=/etc/keys/showkey,luks,cipher=aes-cbc-essiv:sha256
    #cswap  /dev/sda2  /dev/urandom         swap,cipher=aes-cbc-essiv:sha256,check=/bin/true

Die Swap-Partition müssen wir erstmal ausklammern, schließlich ist das derzeit unser root-Verzeichnis.

/etc/fstab:
# /etc/fstab: static file system information.
# <filesystem> <mountpoint>
/dev/sda2          /mnt  ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1

/dev/mapper/sda3   /     ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1
/dev/mapper/sda4   /home ext3 nouser,defaults,atime,auto,rw,dev,exec,nosuid                 0 2
#/dev/mapper/cswap none  swap sw                                                            0 0

Alle anderen Einträge lassen wir unberührt.

Kopieren

mit  cp -avx / /mnt  kopieren wir nun unser komplettes System auf die verschlüsselte Plartition.


Weitere Config-Dateien anpassen

in /boot kommt nun Arbeit
Den vorhandenen Kernel kopieren wir uns zur Sicherheit
(die Versionnummern werden sich sicherlich unterscheiden)
    cd /boot
    cp vmlinuz-2.6.17-10-generic vmlinuz-2.6.17-10-kopie
    cp System.map-2.6.17-10-generic
System.map-2.6.17-10-kopie
    cp initrd.img-2.6.17-10-generic initrd.img-2.6.17-10-kopie

nun erzeugen wir ein Bootimage mit unserem Key.
    update-initramfs -u ALL

und lassen Grub ein neues Startmenü bauen
    update-grub

mit vi /boot/grub/menu.lst ändern wir unser Bootsystem
(Versionsnummer entsprechend anpassen!)

/boot/grub/menu.lst
# der erste Eintrag:
title        Ubuntu, kernel 2.6.17-10-generic
root         (hd0,0)
kernel       /vmlinuz-2.6.17-10-generic root=/dev/mapper/sda3 cryptroot=/dev/sda3 ro quiet locale=de_DE
initrd       /initrd.img-2.6.17-10-generic
quiet
boot

#der 3. Eintrag
title        Ubuntu, kernel 2.6.17-10-kopie
root         (hd0,0)
kernel       /vmlinuz-2.6.17-10-kopie root=/dev/sda2 ro quiet locale=de_DE
initrd       /initrd.img-2.6.17-10-kopie
quiet
boot

Wichtig ist, das die /boot heraus genommen werden.

danach editieren wir /etc/fstab zurück (nicht die /mnt/etc/fstab  !)
/etc/fstab
# /etc/fstab: static file system information.
# <filesystem> <mountpoint>
/dev/sda2        /         ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1

#/dev/mapper/sda3 /mnt      ext3 nouser,defaults,errors=remount-ro,atime,auto,rw,dev,exec,suid 0 1
#/dev/mapper/sda4 /mnt/home ext3 nouser,defaults,atime,auto,rw,dev,exec,nosuid                 0 2

Nun können wir zur sda2 im Notfall noch booten.


Neustart

Damit steht einem Neustart nichts mehr im Weg.

Nach dem erfolgreichen Neustart befinden wir uns auf der verschlüsselten Partition als / (und haben die verschlüsslte sda4 unter /home)

Swap aktivieren

Da alles geklappt hat streichen wir den Eintrag von sda2 in /etc/fstab und entfernen das # vor dem Eintrag für die Swap-Partiton.

umount /dev/sda2 lässt die zukünftige Swap-Partition aus dem System verschwinden.

Nun fdisk /dev/sda aufrufen und mit "t" "2" "82" "w" den Partitionseintrag von sda2 auf Swap-Partition ändern.

mit /etc/init.d/cryptdisk start binden wir /dev/sda2 als /dev/mapper/cswap ein.

mkswap /dev/mapper/cswap erezugt nun eine Swap-Partition und swapon -a aktiviert diese.

mit free sollte man nun die aktivierte Swap-Partiton sehen
             total       used       free     shared    buffers     cached
Mem:       1555596    1516112      39484          0     151544     837324
-/+ buffers/cache:     527244    1028352
Swap:      2562356          0    2562356
(die Werte werden anders sein, es darf in der letzten Zeile aber keine 0 0 0 stehen)


Der Bootstick

Nun müssen wir noch unseren Boot-Stick einrichten und die Boot-Partition auf der Festplatte vernichten, den dort liegt derzeit völlig ungeschützt unser Keyfile!

 Achtung, alle Daten werden bei der Partitionierung des USB-Sticks vernichtet!
Tun Sie dies nur, wenn Sie diese Daten nicht mehr benötigen oder auf andere Medien gesichert haben!

Mit fdisk /dev/<usb-stick>zb. sdc löschen wir die derzeitige Partitionierung (d) und stellen den Stick auf Linux  (p & t 83) und bootfähig (a) um (w). (fdisk -l zeigt alle vorhandene Laufwerke an, damit man sein USB-Stick findet.)

Nun formatieren wir den Stick:
mkfs -t ext2 /dev/<usb-stick-partition>

Und binden ihn in System ein:
mount /dev/<usb-stick-partition> /mnt

Kopieren nun das Boot-Verzeichnis auf den Stick:
mount /dev/sda1 /boot
cp -avx /boot/* /mnt

Nehmen den Stick und die erste Partition aus dem System und mounten den Stick als /boot.
umount /dev/sda1
umount /dev/<usb-stick-partition>
mount /dev/<usb-stick-partition> /boot

Den Bootloader auf den Stick installieren.
grub-install --root-directory=/ /dev/<usb-stick>

Nun können wir unser System neu starten.

/dev/sda1 leeren

Wenn alles geklappt hat, können wir nun /dev/sda1 löschen:
shred -v /dev/sda1
überschreibt die Partiton 25 mal mit sinnlosen Werten. Dadurch sollten die Keyfiles dort nicht mehr zu finden sein.

Das wars!
Fehler oder Anregungen übers Feedback zusenden oder als Kommentar anhängen.

Nun noch eine Boot-CD herstellen und diese sehr sehr gut verstecken, falls der USB-Stick mal abhanden kommt.
Booten von CD

komplett verschlüsselte Festplatten mit Keyfile & Booten per USB-Stick

Für den Inhalt der Kommentare sind die Verfasser verantwortlich.


  1. *  schreibt am 25.05.2007 14:55
    Vielen Dank!
Einstellungen
Artikel Bewertung
Ergebnis: 4
Stimmen: 1

stars-4.gif

Bitte nehmen Sie sich die Zeit und bewerten diesen Artikel:
Excellent
Sehr gut
Gut
Okay
Schlecht

Umfrage
Ist das HowTo verständlich

Null Problemo!
2 mal lesen und man versteht es.
könnte stellenweise ausführlicher sein
ich nix verstehen

Ergebnisse
Stimmen: 2
Kommentare: 0
Umfragen