myGully.com

myGully.com (https://mygully.com/index.php)
-   Linux & BSD (https://mygully.com/forumdisplay.php?f=401)
-   -   Kleines Verschlüsselungs-HowTo für Linux (https://mygully.com/showthread.php?t=2625813)

spartan-b292 18.05.12 14:09

Kleines Verschlüsselungs-HowTo für Linux
 
Dieses HowTo zeigt die Verschlüsselung eines GNU/Linux unter Verwendung von dm-crypt (implementiert im Paket cryptsetup), LUKS und LVM.

Ich habe hier auf lange Erklärungen der Grundlagen verzichtet, wer mehr erfahren möchte dem seien die Dokumentationen zu cryptsetup/dm-crypt, dem Devicemapper des Linuxkernels, LUKS und LVM empfohlen.

Anmerkung: Die installer der meisten großen Distributionen wie CentOS,RHEL,Fedora,Debian,*buntu bieten Verschlüsselung schon während der Installation an.

Namen müssen ggf. an Euere Partitionslayout angepasst werden.

Auch wenn ich den Inhalt gründlich geprüft habe, müsst ihr selber mitdenken und für Backups sorgen, an Datenverlusten bin ich nicht schuld!


Szenarian
Verschlüsselter „Container“
Einzelne verschlüsselte Partition
Nachträgliches Verschlüsseln des Betriebssystems


Verschlüsselter Container
Dazu muss der Container zunächst erstellt werden und loopback gemountet werden

Erzeugen des Containers
Code:

dd if=/dev/urandom of=container bs=1M count=10
Durch ändern von bs und count lässt sich die größe des „Containers“ festlegen. Mit diesen Einstellungen werden 10 mal 1Megabyte geschrieben also 10 Mb.

Loopback mounten (Mit Loopback können, vereinfacht, Dateien als Laufwerk gemountet werden)
Code:

losetup /dev/loop0 container
Verschlüsseltes LUKS Medium erzeugen und unter dem Namen „test“ öffnen
Code:

cryptsetup luksFormat /dev/loop0
cryptsetup luksOpen /dev/loop0 test

Ext3-Dateisystem im Container erzeugen
Code:

mkfs.ext3 /dev/mapper/test
Container mounten:
Code:

mount /dev/mapper/test /mnt/test/
Einen bestehenden Container mounten:
Code:

losetup /dev/loop/0 test
cryptsetup luksOpen /dev/loop/0 test
mount /dev/mapper/test /mnt/test/

Anmerkung: Die Rechte für den Mountpoint müssen ggf noch angepasst werden, damit auch nicht-rootuser darauf zugrifen können.


Einzelne Verschlüsselte Partition:
!Achtung! Hier geht es um das Verschlüsseln einer Partition die nicht zum Booten des Betriebssystems gebraucht wird, beispielsweise einer externen Festplatte o.ä. Da beim Verschlüsseln alle Daten auf der Partition verloren gehen muss vorher ein Backup angelegt werden.

Überschreiben der Partition mit zufälligen Daten:
Code:

shred -n1 -v /dev/sdb1
dd if=/dev/urandom of=/dev/sdb1

Verschlüsseltes LUKS Medium erzeugen und unter dem Namen test öffnen:
Code:

cryptsetup luksFormat  /dev/sdb1
cryptsetup luksOpen /dev/sdb1 test

Ext3-Dateisystem erzeugen:
Code:

mkfs.ext3 /dev/mapper/test
Partition mounten:
Code:

mount /dev/mapper/test /mn/test
Nachträgliches verschlüsseln des Betriebssystems:

Vorraussetzungen: Auf eurem System müssen die Pakete lvm2 und cryptsetup installiert sein. Außerdem benötigt ihr eine LiveCD.

Das Vorgehen um ein System nachträglich zu verschlüsseln ist zusammengefasst folgendes:
  • Backup des existierenden Systems
  • Erstellen der neuen verschlüsselten Partition(en)
  • Wiederherstellen des Backups auf die verschlüsselte(n) Partition(en)
  • Modifizieren des Betriebssystems


Backup
Zunächst legt ihr euch ein Backup eures Systems an. Überprüft euer Backup,denn ab jetzt werden alle Daten gelöscht. Verwendet dazu am besten die LiveCD und Rsync.

Bootet von der Livecd, öffnet einen Terminal:

Partition mit Zufallsdaten füllen
Code:

shred -n1 -v /dev/sdb
dd if =/dev/urandom of=/dev/sdb

Festplatte neu partitionieren (kann je nach existierendem Layout entfallen):
Code:

fdisk /dev/sdb
/dev/sdb1 *
/dev/sdb2

(sdb1 ist die Bootfähige Partition, gekennzeichnet in fdisk durch den *)

Verschlüsseltes LUKS Medium erzeugen und unter dem Namen „sdb2crypto“ öffnen:
Code:

cryptsetup luksFormat /dev/sdb2
cryptsetup luksOpen /dev/sdb2 sdb2crypto

Ab hier gibt es zwei Möglichkeiten die Partitionen einzurichten. Die erste ist ein LVM Setup auf der verschlüsselten Partition zu erzeugen und darin eine / und swap Partition. Dies entspricht der

Konfiguration wie man sie meistens nach der Verschlüsselung während der Installation vorfindet.

Die zweite Möglichkeit wäre die Einrichtung der Partitionen ohne LVM.

Möglichkeit 1:

LVM Setup auf der verschlüsselten Partition erzeugen:
Code:

pvcreate /dev/mapper/sdb2crypto
vgcreate crypto /dev/mapper/sdb2crypto
lvcreate -L2000 -nswap_1 crypto
vgdisplay crypto | grep „Free PE“
lvcreate -l****** -nroot crypto
vgchange -a -y crypto

Die ****** ersetzt ihr durch den Wert den ihr nach dem Ausführen von
vgdisplay crypto | grep „Free PE“
erhaltet.

Dateisysteme erzeugen:
Code:

mkswap /dev/mapper/crypto-swap
mke2fs -j /dev/mapper/crypto-root

Wiederherstellen
Mountpoint erstellen:
Code:

mkdir /mnt/restore
Mounten:
Code:

mount /dev/mapper/cryptop-root /mnt/restore
/boot erstellen und mounten
Code:

mkdir /mnt/restore/boot
mount /dev/sdb1 /mnt/restore/boot

Wiederherstellen:
Code:

rsync -az <Ort_eures_Backups> /mnt/restore
Jetzt sind noch einige Modifikationen vorzunehmen da Euer System in diesem Zustand noch nicht booten würde.

Code:

mount -t proc none /mnt/restore/proc
mount -t sysfs none /mnt/restore/sys
mount --bind /dev /mnt/restore/dev
chroot /mnt/restore

Öffnen von /etc/cryptab:
Code:

nano /etc/crypttab
Folgendes eintragen:
Code:

/dev/mapper/crypto-root /                                ext3    errors=remount-ro 0      1
/dev/sdb1      /boot                                    ext2    defaults        0      2
/dev/mapper/crypto-swap                        none        swap    sw              0      0

/etc/initramfs-tools/conf.d/resume öfnnen:
Code:

nano /etc/initramfs-tools/conf.d/resume
Die Zeile RESUME=““ so ändern:
Code:

RESUME=/dev/mapper/crypto-swap
/boot/grub/menu.lst öfnnen:
Code:

nano /boot/grub/menu.lst
Alle einträge von /dev/sdb1 zu /dev/mapper/crypto-root ändern

Als nächstes muss Grub zum MBR hinzugefügt werden und initrds wiedererstellt werden.

/etc/mtab neu erstellen:
Code:

cat /proc/mounts > /etc/mtab
/etc/mtab/ öfnnen
Code:

nano /etc/mtab
Und etwa so editieren
Code:

/dev/mapper/crypto-root / ext3 rw,errors=continue,data=ordered 0 0
/dev/sdb1 /boot ext3 rw,errors=continue,data=ordered 0 0
none /proc proc rw 0 0
none /sys sysfs rw 0 0
tmpfs /dev tmpfs rw,size=10240k,mode=755 0 0

Grub zum MBR hinzufügen:
Code:

grub-install /dev/sdb
initrds neu erstellen:
Code:

update-initramfs -k all -u
chroot verlassen und Dateisysteme aushängen:
Code:

exit
umount /mnt/restore/proc
umount /mnt/restore/sys
umount /mnt/restore/dev
umount /mnt/restore/boot
umount /mnt/restore

Fertig!
Nach einem Reboot sollte euch LUKS nach einem Passwort für die verschlüsselte Partition fragen.

Anmerkung: Sol l damit ein Server auf dem kein physischer Zugriff besteht muss noch ssh so konfiguriert werden, dass der Key über SSH übertragen werden kann.


Möglichkeit 2:
Die zweite Möglichkeit wäre die Konfiguration der Partitionen ohne LVM

Vorraussetzungen sind die Pakete cryptsetup und initramfs-tools.

In /etc/crypttab das mapping zwischen der Partition und dem „Verschlüsselungsinterface“ eintragen
Code:

echo "root /dev/sdb2 none luks" >>/etc/crypttab
sed -i 's#/dev/sdb2#/dev/mapper/root#' /etc/fstab

Root-device für grub ändern:
Code:

sed -i 's#/dev/sdb2#/dev/mapper/root#' /boot/grub/menu.lst
initrd image neu erstellen:
Code:

update-initramfs -k all -u
Ab hier wieder sicher sein dass ein sauberes Backup vorhanden ist da wieder alle Daten gelöscht werden.

Daten Löschen und mit Zufallsdaten füllen:
Code:

shred -n1 -v /dev/sdb2
dd if =/dev/urandom of=/dev/sdb2

Die verschlüsselte Partition erstellen:
Code:

cryptsetup luksFormat /dev/sdb2
cryptsetup luksOpen /dev/sdb2 root

Dateisystem erstellen, neue Partition mounten und Backup zurückspielen
Code:

mkfs.ext3 /dev/mapper/root
mount /dev/mapper/root /mnt/root
rsync -az <Ort_eures_Backups> /mnt/root/

Fertig!


Und jetzt viel Spaß beim Verschlüsseln

peacok 02.07.12 00:05

ext3 ?
 
Sorry ext3 ist recht nerfig wenn Du oder man grosse Platten betreibt.

ext4 ist heute normal, xfs, oder reiserfs wird immer unterschätzt.


Es geht um den schnellsten selbsttest beim boot.


Das hätte ich bei ext3 schon lange erwartet, da es reiserfs es schon einige jahre vorher konnte.
(richtiges fs-journaling)

Bei ext3 verliere ich mehr daten als bei ext4.


Da trett ich wohl den schlimmsten fs-war an now ;))

Aber danke für das Doku, ist sonst geill.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.