HowTo CryptoFS mit luks und USB-Stick als Mantrahüter

Diskussion rund um unser Wiki.
Antworten
Gottvonallem
Beiträge: 286
Registriert: 20.10.2006 20:46:21

HowTo CryptoFS mit luks und USB-Stick als Mantrahüter

Beitrag von Gottvonallem » 13.04.2007 13:43:11

Ich wollte erstmal ein bisschen Feedback haben bevor ich das ganze ins Wiki stelle.

Vorwort

Dieses HowTo soll erklären wie man relativ leicht ein verschlüsseltes Dateisystem mit einem USB-Stick als Keyhüter und einem Passwort aufsetzt. Am Ende dieses HowTo's werden wir eine verschlüsselte /home, swap und tmp-Partition haben.
ACHTUNG: Nur unter Debian SID getestet!

Vorbereitungen

Um loslegen zu können brauchen wir folgendes im Kernel oder als Modul.

Code: Alles auswählen

Code maturity level options ---> <*> Prompt for development and/or incomplete code/drivers
General setup ---> <*> Support for hot-pluggable devices
Device Drivers > *Multi-device support (RAID and LVM).
      <M/*> Device mapper support
      <M/*> Crypt target support
und noch den zu verwendenden Cryptoalgorythmus in unserem Fall AES.

Code: Alles auswählen

Cryptographic options ---> <*> AES cipher algorithms 
Zusätzlich brauchen wir noch cryptsetup.

Code: Alles auswählen

apt-get install cryptsetup
Wenn ihr einen Standardkernel benutzt oder alles als Module ausgelegt habt müsst ihr sie jetzt laden:

Code: Alles auswählen

modprobe aes
modprobe dm-crypt
modprobe dm-mod
Des weiteren benötigt ihr die Module für den USB-Stick (wenn ihr die Festplattenkeys auf einem USB-Stick haben wollt. Theoretisch geht auch jedes andere wiederbeschreibbare Medium z.B. Diskette,Tape etc.).
Also:

Code: Alles auswählen

modprobe sd_mod
modprobe usb_storage
Key erzeugen

Jetzt erzeugen wir auf dem USB-Stick (er darf NICHT gemountet sein.) ein neues Cryptofilesystem:

Code: Alles auswählen

cryptsetup luksFormat --verify-passphrase /dev/sda1
Achtung!m Alle daten auf dem USB-Stick werden gelöscht!
Er fragt uns nun nach einem Passwort, dass man sich unbedingt merken sollte.

Nun öffnen wir das neue Cryptofs:

Code: Alles auswählen

cryptsetup luksOpen /dev/sda1 dongle
Er fragt uns nach dem gerade angegebenen Passwort.
Jetzt sollte unter /dev/mapper/ das Device dongle sein.
In diesem erstellen wir nun ein neues Filesystem, hier im Beispiel xfs

Code: Alles auswählen

mkfs.xfs /dev/mapper/dongle
Nun können wir unseren verschlüsselten Stick mounten. Legt am besten irgendwqo ein temporäres Verzeichniss an wo ihr ihn hinmountet, z.B. /tmp/usb

Code: Alles auswählen

mount -t xfs /dev/mapper/dongle /tmp/usb
Nun können wir das Keyfile für die späteren verschlüsselten Partitionen erstellen:

Code: Alles auswählen

head -c 1024 /dev/random > /tmp/usb/key
So fertig. Es kann ein Weilchen dauern bis /dev/radnom die 1024 Bits erzeugt hat, also gebt nicht gleich auf. Macht nebenbei noch irgendwas an eurem Rechner dann geht es schneller, da /dev/random seinen Zufall aus Tastatureingaben,Mausbewegungen etc. generiert.

Cryptopartitionen erzeugen

Nun legen wir unsere Partitionen an die verschlüsselt werden sollen.
Ich gehe hier davon aus, dass hdb1 die zu verschlüsselnde Partition ist.
ACHTUNG: Auch hier gehen wieder alle Daten verloren!

Code: Alles auswählen

cryptsetup luksFormat /dev/hdb1 /tmp/usb/key
damit wird die Partition mit dem Keyfile /tmp/usb/key verschlüsselt.
Dann öffnen wir die Partition wieder.

Code: Alles auswählen

cryptsetup luksOpen /dev/hdb1 home --key-file=/tmp/usb/key
Jetzt können wir ein Filesystem auf der Partition erzeugen, hier im Beispiel wieder xfs.

Code: Alles auswählen

mkf.xfs /dev/mapper/home
Und das ganze wieder mounten.

Code: Alles auswählen

mount -t xfs /dev/mapper/home /home
Nun könne wir unser Backup wieder in Home einspielen.
Danach erzeugen wir in /home ein Verzeichniss .tmp.

Code: Alles auswählen

mkdir /home/.tmp
Dieses wird später als verschlüsseltes /tmp benutzt.

Crypttab und fstab modifizieren.

Jetzt verändern wir diverse Konfigurationsdateien damit unsere Partitionen beim booten gemountet werden.
Als erstes verändern wir /etc/crypttab und geben hier unsere crypto-Partition, die key-Partition und die swap-Partition an.

Code: Alles auswählen

echo "dongle  /dev/sda1 none            luks" >> /etc/crypttab
echo "home    /dev/hdb1 /media/.usb/key luks" >> /etc/crypttab
echo "swap    /dev/hda2 /dev/random     swap,cipher=aes,size=128,hash=ripemd160
" >> /etc/crypttab
Wir editieren jetzt /etc/default/cryptdisks damit der USB-Stick mit dem Key gemountet wird bevor versucht wird die Homepartition zu mounten. Wir suchen die Stelle "CRYPTDISKS_MOUNT=" und ändern sie wie folgt:

Code: Alles auswählen

CRYPTDISKS_MOUNT="/media/.usb"
Jetzt werden wir /etc/fstab editieren.
Der USB-Stick mit dem Key

Code: Alles auswählen

/dev/mapper/dongle  /media/.usb     xfs      defaults        0       0
Wir ersetzen unseren alten /home Eintrag durch:

Code: Alles auswählen

/dev/mapper/home        /home        xfs     defaults,auto   0       0
und anstatt unseres alten swap Eintrages fügen wir das

Code: Alles auswählen

/dev/mapper/swap  none             swap     sw              0       0
ein.
Zusätzlich leiten wir /tmp auf /home.tmp um:

Code: Alles auswählen

/home/.tmp      /tmp            none    bind,user,auto          0       0
So ,fertig!
Nach einem Reboot dürfte alles automatisch gemountet werden ,wenn du das Passwort für deinen Dongle (in unserem Fall der USB-Stick) hast.


Feedback ist immer willkommen (vor allem Rechtschreibfehler etc.).

mfg Benjamin
Zuletzt geändert von Gottvonallem am 15.04.2007 20:55:19, insgesamt 3-mal geändert.

Benutzeravatar
uljanow
Beiträge: 529
Registriert: 20.09.2005 21:14:00

Beitrag von uljanow » 13.04.2007 14:03:16

AFAIK ist die Bearbeitung von init-Skripten unnötig, lasst sich alles mit /etc/crypttab und /etc/def*/cryptdisks machen.

Eine Beschreibung für ein Setup mit verschlüsselter "/", dessen Key auf einem USB-Stick sind, wäre auch nicht schlecht. :)

Gottvonallem
Beiträge: 286
Registriert: 20.10.2006 20:46:21

Beitrag von Gottvonallem » 13.04.2007 14:33:03

Ah gut OK. Mit /etc/default/cryptdisks geht es natürlich sehr viel einfacher. Ich werds gleich ändern.

Zu der verschlüsselten Rootpartition gibt es schon ein sehr gutes HowTo im Gentoowiki welches sich ohne großes Umschreiben für Debian adaptieren lässt.

Benutzeravatar
Incom
Beiträge: 417
Registriert: 09.11.2003 13:35:27
Lizenz eigener Beiträge: GNU General Public License
Wohnort: Paderborn
Kontaktdaten:

Beitrag von Incom » 13.04.2007 15:27:48

Ich hab für meine Swap in der /etc/crypttab

Code: Alles auswählen

cswap         /dev/sda2               /dev/random     swap,cipher=aes-cbc-plain,size=128,hash=ripemd160
und in der /etc/fstab

Code: Alles auswählen

/dev/mapper/cswap  none         swap    sw            0       0
Du suchst eine Schritt-für-Schritt Anleitung? Dann schau im Wiki nach!

Gottvonallem
Beiträge: 286
Registriert: 20.10.2006 20:46:21

Beitrag von Gottvonallem » 14.04.2007 09:40:50

Das hat bei mir nicht funktioniert deswegen habe ich erstmal diese Notlösung geschrieben.
Sobald ich diese Variante zum laufen gebracht habe wird das HowTo ergänzt.

mfg Benjamin

Antworten