staging.inyokaproject.org

HOW-To - Ubuntu Verschlüsselung (cryptsetup) unter Karmic Koala 9.10 (Grub2)

Status: Gelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

buddy9876

Anmeldungsdatum:
9. Juli 2007

Beiträge: Zähle...

(tested Ubuntu Karmic Koala 9.10 32-bit & Xubuntu Karmic Koala 9.10 64bit)

Servus miteinand,

aus den verschiedenen Anleitungen und Wikiartikeln habe ich eine weitere Schritt-für-Schritt Anleitung für die aktuelle Ubuntuversion mit Grub2 zusammengestellt.

Folgende Punkte sind möglicherweise vorab relevant für Euch:

  • Komplettverschlüsselung bis auf /boot mit cryptsetup von LIVE-CD

  • Karmic 32bit & 64bit funktioniert

  • Grub2

  • "normale" Partitionierung (im Gegensatz zum Wikiartikel mit LVM)

  • SWAP als Datei, statt Partition

  • Keyfile für die home-Partition


Man sollte natürlich das blutige Anfängerstadium bereits hinter sich gelassen haben und ansatzweise wissen, was man tut.

Existierende Daten werden NICHT verschlüsselt, sondern gelöscht!! Datensicherung VORHER....

1) Live-CD booten und Festplatten reinigen (optional):

/dev/sdX mit Nullen beschreiben:

sudo dd if=/dev/zero of=/dev/sdX bs=1M

/dev/sdX mit Zufallsdaten beschreiben:

sudo dd if=/dev/urandom of=/dev/sdX bs=20480

2) Partitionen erstellen

sudo apt-get install gparted cryptsetup
sudo modprobe dm-crypt

gksudo gparted

Z.B.:

sda1 /boot (150MB)

sda2 / (13GB - inkl. 1,5GB für eine SWAP-Datei)

sda3 /home (Rest)

3) Cryptdevices erstellen und ext3 formatieren - Festplatten/Partitionen dürfen nicht eingehängt sein, sonst kein Zugriff:

sudo cryptsetup -c aes-xts-essiv:sha256 -s 512 luksFormat /dev/sda2
sudo cryptsetup -c aes-xts-essiv:sha256 -s 512 luksFormat /dev/sda3
sudo cryptsetup luksOpen /dev/sda2 root
sudo cryptsetup luksOpen /dev/sda3 home
sudo mkfs.ext3 -m 1 /dev/mapper/root
sudo mkfs.ext3 -m 1 /dev/mapper/home

(unterschiedliche UND sichere Passwörter verwenden, später wird ein Keyfile für home erstellt)

4) Ubuntu installieren - Manuelle Partitionierung:

/dev/sda1 ext3 formatieren und auf /boot mounten

/dev/mapper/root/ ext3 formatieren und auf / mounten

/dev/mapper/home/ ext3 formatieren und auf /home mounten

⇒ Installation - danach weiter im Livesystem!

5) Im Livesystem mittels chroot in das installierte System wechseln

(sicherstellen, dass im Live-System der Ordner "/mnt" existiert, der nicht benutzt wird - ansonsten sudo mkdir /mnt ; Es kann auch jeder andere leere, exisitierende Ordner sein ⇒ Befehle/Pfade anpassen):

mount

Zeigt nochmal an, wo die /dev/mapper/* gemountet sind; sollte es bei "mount /dev/mapper/root/ /mnt/" einen Fehler geben, geht man den Zwischenschritt gehen: "sudo umount /dev/mapper/root && sudo umount /dev/mapper/home", dann

sudo su
cryptsetup luksOpen /dev/sda2 root      #(=> sind normalerweise noch geöffnet, nur nach Neustart ins Live) 
cryptsetup luksOpen /dev/sda3 home   #(=> sind normalerweise noch geöffnet, nur nach Neustart ins Live)
mount /dev/mapper/root /mnt
mount /dev/sda1 /mnt/boot
mount /dev/mapper/home /mnt/home  #(=> eigentlich unnötig, da nichts ins home geschrieben wird.*)
mount -o bind /dev /mnt/dev
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
cp /etc/resolv.conf /mnt/etc/resolv.conf
chroot /mnt /bin/bash 

Hier erfolgt eine kurze Prüfung der Mountbefehle: Im Livesystem Dateimanager öffnen und den Ordner /mnt checken. Müsste wie ein zweites System aussehen, prüfen, ob auch unter /mnt/boot entsprechende Systemdateien zu finden sind; (* Man könnte Dateien, die man im Livesystem erstellt hat, ins home kopieren, damit sie dort gleich verfügbar sind)

!!!! Alle Befehle müssen in dieser Shell ausgeführt werden! Sonst Kennzeichnung mit ** ⇒ zweites Terminal öffnen)!!!

sudo su
apt-get update && apt-get upgrade && apt-get install cryptsetup gparted && modprobe dm-crypt

**Zweites Terminal um UUIDs in Erfahrung zu bringen

sudo blkid
 => beispielsweise
/dev/sda1: UUID="12b520d2-b91f-4afd-9e1c-4a25a9044a75" TYPE="ext3" 
/dev/sda2: UUID="128400f7-3342-4e31-b676-9deb109c7bde" TYPE="crypto_LUKS" 
/dev/sda3: UUID="1c83e0f7-9f4d-40ea-b427-4fc67f4ef16f" TYPE="crypto_LUKS" 
/dev/mapper/root: UUID="6365328d-7e9c-4z71-9743-6213ff2ecf14" TYPE="ext3" 
/dev/mapper/home: UUID="09e1395c-fc85-4196-bN30-25214d753ad1" TYPE="ext3" 

6) crypttab anpassen (wieder zurück im chroot-Terminal)

nano /etc/crypttab
# <target name>	<source device>		<key file>	<options>
root UUID=128400f7-3342-4e31-b676-9deb109c7bde none luks,retry=1,cipher=aes-xts-essiv:sha256
home UUID=1c83e0f7-9f4d-40ea-b427-4fc67f4ef16f none luks,retry=1,cipher=aes-xts-essiv:sha256

UUIDs beziehen sich auch die /dev/sdax und nicht auf /dev/mapper! ciphers kommen vom obigen cryptsetup Befehl!

7) fstab prüfen und eventuell anpassen

nano /etc/fstab

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# /boot was on /dev/sda1 during installation
UUID=12b520d2-b91f-4afd-9e1c-4a25a9044a75 /boot           ext3    defaults        0       2
/dev/mapper/root /               ext3    errors=remount-ro 0       1
/dev/mapper/home /home           ext3    defaults        0       2

⇒ die automatisch generierten Einträge von "/" und "/home" werden mit den /dev/mapper entsprechend angepasst, falls dies nicht bereits automatisch erkannt wurde; /boot UUID bleibt
8) Bei mehreren Festplatten kann man noch prüfen, ob diese in der richtigen Reihenfolge erkannt/behandelt werden:

nano /boot/device.map
(hd0)	/dev/sda
(hd1)	/dev/sdb

9) initramfs updaten (heißt: Kernel wird upgedatet; -u =update; -k all =welche Kernel ⇒ all = alle)

update-initramfs -u -k all

10) GRUB2 anpassen ("quiet splash" entfernen, damit Passworteingabe erfolgen kann!)

nano /etc/default/grub 

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"  
#in folgende Zeile umwandeln =>
GRUB_CMDLINE_LINUX_DEFAULT=""  
update-grub2
update-initramfs -u -k all

11) chroot verlassen und LIVE System per reboot verlassen

exit
reboot

⇒ Erst hier sollte die oben geöffnete Shell geschlossen werden!!

12) Neustart von Festplatte; mit rechter Shift-Taste kommt man ins Grub2 Menü; allerdings sollte der Bootvorgang bis zur LUKS Passworteingabe durchlaufen; Passwort für home KANN manchmal ein "Enter" vor der eigentlichen Passworteingabe benötigen.

13) Home mit keyfile öffnen: Prüfen, ob Ordner /etc/keys bereits existiert, dann

Keyfile mit Zufallsdaten erzeugen

sudo dd if=/dev/random of=/etc/keys/home.key bs=1 count=256

Keyfile zu home zufügen (sda3)

sudo cryptsetup luksAddKey /dev/sda3 /etc/keys/home.key

crypttab anpassen: "none" durch Pfad zu Keyfile ersetzen "/etc/keys/home.key"

sudo nano /etc/crypttab
# <target name>	<source device>		<key file>	<options>
home UUID=1c83e0f7-9f4d-40ea-b427-4fc67f4ef16f /etc/keys/home.key luks,retry=1,cipher=aes-xts-essiv:sha256

Rechte für das Keyfile richtig setzen:

sudo chown root:root /etc/keys/home.key
sudo chmod 400 /etc/keys/home.key

14) SWAP Speicher als Datei erstellen

Verzeichnis erstellen

sudo mkdir -p /var/cache/swap/ 

Datei mit Nullen erstellen, Größe count=1536 (1,5GB)

sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=1M count=1536

Als SWAP formatieren

sudo mkswap /var/cache/swap/swap0 

Dateibesitzer ist root, nun Dateirechte auf Lesen&Schreiben für root beschränken

sudo chmod 0600 /var/cache/swap/swap0

SWAP direkt einschalten, kein Neustart erforderlich

sudo swapon /var/cache/swap/swap0

SWAP permanent in das System einbinden; Zeile einfügen

sudo nano /etc/fstab
/var/cache/swap/swap0    none    swap    sw      0 0

15) initramfs updaten

sudo update-initramfs -u -k all



ALLGEMEINES cryptsetup - device handling:

a) Schließen Sobald das enthaltene Dateisystem nicht mehr eingehängt ist oder anderweitig verwendet wird, kann das LUKS-Gerät wie folgt geschlossen werden:

cryptsetup luksClose <Name> 

b) Passwörter verwalten LUKS bietet insgesamt acht Speicherplätze (genannt "Slot" 0-7) für änderbare Passwörter, die jeweils den Zugriff auf die Daten erlauben. Die belegten Speicherplätze und Headerinformationen lassen sich mittels dieses Befehl überprüfen:

cryptsetup luksDump <Gerät> 

c) Passwort hinzufügen Zuerst das alte Passwort eingeben, dann das Neue.

cryptsetup luksAddKey <Gerät> 

d) Passwort löschen Ein bekanntes Passwort kann ab Intrepid mit folgendem Befehl entfernt werden:

cryptsetup luksRemoveKey <Gerät> 

Will man hingegen einen bestimmten Slot löschen, kann man dies mit folgendem Befehl tun:

cryptsetup luksKillSlot <Gerät> <Speicherplatz> 

Alternativ muss in Dapper und Hardy wie folgt ein Slot entfernt werden:

cryptsetup luksDelKey <Gerät> <Speicherplatz> 

e) Passwort ändern Zum Ändern eines Passworts wird zuerst das neue Passwort hinzugefügt und anschließend das alte entfernt.

Siehe auch viele Forenbeiträge und Wikiartikel: System verschlüsseln, LUKS

Natürlich habe ich mit diesem Tutorial das Rad nicht neu erfunden. Danke an alle, die hier schon fleißig Anleitungen und Artikel geschrieben habe, aus denen ich "das Beste" extrahiert habe und hier einfach nochmal zusammengefasst habe!!!

Viele Grüße


buddy

Drache

Anmeldungsdatum:
5. April 2007

Beiträge: 2377

Bei solchen Howtos im Forum frage ich mich immer wieso nicht eine Wiki-Seite erstellen…? Die könnte ja z.B. Beispielanleitung zur Verschlüsselung oder so heißen ☺

jug Team-Icon

Ehemalige
Avatar von jug

Anmeldungsdatum:
19. März 2007

Beiträge: 12335

Drache schrieb:

Bei solchen Howtos im Forum frage ich mich immer wieso nicht eine Wiki-Seite erstellen…?

Ich mich auch. Ehrlich, buddy9876 – vielen Dank für deine Mühe. Allerdings finde ich Anleitungen, egal welcher Art im Wiki besser aufgehoben. Bedenke, dass Beiträge im Forum statisch sind und nicht mehr verändert werden können. Auch von dir nicht. Im Wiki dagegen können Anleitungen verbessert, an neue Versionen von Ubuntu angepasst werden oder man kann mal schnell einen Fehler beheben. Außerdem predigen wir doch immer wieder, dass alles im Wiki steht, jetzt soll deine Anleitung auf einmal im Forum stehen? 😉

System verschlüsseln – möchtest du vielleicht überarbeiten?

~jug

RvD Team-Icon

Avatar von RvD

Anmeldungsdatum:
26. Mai 2006

Beiträge: 2870

buddy9876 schrieb:

sudo cryptsetup -c aes-xts-essiv:sha256 -s 512 luksFormat /dev/sda2

Das ist Voodoo, sorry: Auch wenn cryptsetup auch solche Kombinationen akzeptiert (und still verwirft), ist ESSIV nur für CBC sinnvoll, um dort Watermark-Angriffe zu verhindern. XTS baut anders auf und verhindert selbige sowieso, der einzige Modus ist aes-xts-plain.

buddy9876

(Themenstarter)

Anmeldungsdatum:
9. Juli 2007

Beiträge: 105

Jau - Asche auf mein Haupt.

Ich hatte gestern jug per PM schon gebeten, den Thread zu löschen, weil er hier so nicht hingehört...

Wenn Du die Rechte dafür hast ⇒ kick it!

Danke!

buddy

Drache

Anmeldungsdatum:
5. April 2007

Beiträge: 2377

Wieso bin ich denn eigentlich noch hier…?

Da war doch gestern noch "Doppelpost bitte löschen" gestanden…?

Antworten |