Dieser Leitfaden zeigt Ihnen, wie Sie ein vollständig verschlüsseltes Linux-System auf Ihrer SSD einrichten und eine kleine Partition derselben SSD als Cache für Ihre Festplatte verwenden. Natürlich auch komplett verschlüsselt.

Als erstens müssen wir uns für ein Betriebssystem entscheiden. Wenn Sie dem Leitfaden folgen wollen, würde ich Ihnen raten, eine Linux-Distribution zu verwenden, die auf Debian basiert, wie z.B. Ubuntu oder elementares Betriebssystem. Ich wähle für mich selbst Elementar OS 0.4 Loki.1 Es ist eine sehr saubere Distribution mit einem von macOS inspirierten Design und basiert auf Ubuntu 16.04. Daher können Sie natürlich auch mit Ubuntu 16.04 LTE gehen. Wenn Sie sich dafür entscheiden, die neueste Version eines dieser Systeme oder eines anderen Systems zu verwenden, kann es sein, dass ein Teil dieses Handbuchs oder des Handbuchs in seiner Gesamtheit anders oder gar nicht funktioniert.

Beginnen wir mit dem Gerät: Ihr PC sollte über eine HDD (je größer, desto besser) und eine SSD mit mindestens 128 GB Speicherplatz verfügen. Wenn Sie eine alte SSD mit weniger als das haben, können Sie natürlich auch diesem Leitfaden folgen, aber am Ende sollten Sie daran denken, die Root Ihrer Distribution auf der Festplatte statt auf der SSD zu platzieren, wie ich später in diesem Leitfaden beschreiben werde. In meinem Gerät kam die Festplatte mit meinem Laptop und die SSD wurde später von mir für zusätzliche Geschwindigkeit hinzugefügt. Deswegen wird die Festplatte auf /dev/sda und die SSD auf /dev/sdb gemountet.

1. Vor der Installation

try elementary OS

Wenn Sie sich für eine Distribution entschieden haben – ich hoffe, dass Sie sich auch für elementary OS entscheiden und sich entschieden haben, etwas an die Entwickler zu spenden/zu bezahlen, weil diese Jungs erstaunliche Arbeit leisten – sollten Sie einen Live-USB-Stick oder eine Live-CD/DVD erstellen, in Ihr Gerät einlegen und starten. Danach wählen Sie „Try elementary“. Gehen Sie nicht direkt in die Installation, denn wir müssen vorher noch ein paar Dinge über das Terminal einrichten. Nachdem der elementare OS-Desktop sichtbar ist (nett, richtig?), öffnen wir das Terminal mit win + T (oder alt + ctrl + T bei Ubuntu). Gehen Sie dann mit dem Befehl sudo -i in den Supervisor-Modus.

Um eine Liste von den installierten Festplatten zu sehen, benutzen Sie den Befehl fdisk -l.

terminal fdisk
Danach definieren wir einige Variablen, um nicht verwirrt zu werden:

export SSD_POINT=/dev/sdb
export HDD_POINT=/dev/sda

Ändern Sie natürlich die Parameterwerte für die entsprechenden Werte in Ihrem Gerät. Um später auf die Variablen zugreifen zu können, müssen wir den Namen mit einem $ voranstellen. Wie: echo $SSD_POINT.

1.0 Löschen (optional)

Wir verwenden LUKS später für die Verschlüsselung und verwenden /dev/urandom, um die Verschlüsselung selbst sicher zu machen. Wenn Sie sich jedoch sehr um die Sicherheit Ihrer Daten kümmern, sollten Sie daran denken, Ihre Datenträger zu überschreiben, bevor Sie fortfahren. Manche Leute sagen, dass es ausreicht, die Platten mit Nullen zu überschreiben (schneller), andere sagen, dass man dafür Zufallsdaten verwenden sollte (langsamer). Warum brauchen wir das, wenn unsere Verschlüsselung selbst bereits randomisiert ist? Stellen Sie sich vor, wir haben eine 10-Byte-Diskette und überschreiben sie mit Nullen:[0000000000000000]. Nun erstellen wir eine 4-Byte-Partition darauf, die LUKS-verschlüsselt ist. Unsere Diskette könnte nun so aussehen: [00 AFCA 0000]. Ein Angreifer könnte nun den Teil auf der Festplatte finden, der verschlüsselt ist, viel einfacher, als wenn die gesamte Festplatte voller zufälliger Daten wäre. Das Gleiche gilt für eine ungelöschte Festplatte. Eine Platte mit Daten darauf hat ein Muster, der zufällige Teil der verschlüsselten Daten sollte keins haben. Dadurch kann ein Angreifer den verschlüsselten Teil lokalisieren.

In meinem Fall war ich besorgt über die Beanspruchung meiner SSD und benutzte diese Methode nur zu Testzwecken. Daher habe ich vor dem Einrichten meines Systems meine Festplatten nicht gelöscht. Außerdem sollte ein normaler Angreifer nicht in der Lage sein, die verschlüsselte LUKS-Partition von vornherein zu entschlüsseln, selbst wenn sie gefunden wird. Wenn Sie jedoch sensible Daten auf Ihrem Gerät haben oder das Gerät so sicher wie möglich machen wollen, sollten Sie die Datenträger überschreiben, bevor Sie fortfahren.

Um Ihre Datenträger sicher zu überschreiben, können Sie den dd-Befehl verwenden. Es ist wichtig, das richtige Gerät zu wählen, da er alle Daten vollständig und unwiderruflich auf dem ausgewählten Gerät löscht (das ist der Punkt, richtig?). Sie sollten auch bedenken, dass es Stunden dauern kann, eine ganze Platte sicher zu überschreiben.

[Schneller] Um die Datenträger mit Nullen zu überschreiben, verwenden Sie:

dd if=/dev/zero of=$SSD_POINT || dd if=/dev/zero of=$HDD_POINT
[Langsamer] Um die Datenträger mit Zufallsdaten zu überschreiben, verwenden Sie:

dd if=/dev/urandom of=$SSD_POINT || dd if=/dev/urandom of=$HDD_POINT

1.1 Partitionierung

In diesem Leitfaden verwenden wir das gesamte SSD- und HDD-Laufwerk für die Partitionen. Da wir unser gesamtes System verschlüsseln wollen, müssen wir unseren /boot mount point außerhalb der normalen Partition platzieren. Daneben benötigen wir noch zwei weitere Partitionen auf der SSD. Eine für unseren Cache (klein) und eine für unser aktuelles System (groß). Auf der HDD reicht eine Partition aus. Sie könnten auch mehr als eine machen, das liegt ganz bei Ihnen. Da wir LVM verwenden, können wir später beliebig viele Partitionen in unserem Volume zusammenfügen, aber dazu später mehr.

Um eine Partition zu erstellen, verwenden wir das gparted-Tool aus Ihren vorinstallierten Anwendungen. Sie können es vom Terminal aus starten, indem Sie es einfach bei seinem Namen gparted aufrufen.

Das erste, was zu tun ist, ist, für beide Geräte eine neue Partitionstabelle mit dem Typ gpt zu erstellen. Sie finden die Einstellungen unter Device -> Create Partition Table… und wählen dort gpt und dann Apply aus.

Nun erstellen wir unsere Swap-Partition. Erinnern Sie sich daran, was Ihre SSD und HDD waren. Wechseln Sie in der oberen rechten Ecke zu Ihrer SSD und klicken Sie mit der rechten Maustaste auf die Partition unallocated und wählen Sie New. Unsere Bootpartition sollte etwa 512-10254MiB groß und im Dateisystem ext2 oder ext4 sein. Erstellen wir eine 1024MiB Bootpartition mit dem Dateisystem ext4:

gparted boot partition

Schließlich verwenden Sie Add, um sie zu erstellen. Jetzt brauchen wir eine Cache-Partition. Bei der 128GB SSD wähle ich 30GiB (30GiB = 1024 MiB * 30 = 30720 MiB) für den Cache für die HDD und den Rest der SSD für das Linux-Systems aus. Verwenden Sie im Folgenden immer xfs für Ihre Partitionen als Dateisystem. XFS kann wie ext4 vergrößert, aber nicht verkleinert werden. Dennoch, von den Artikeln, die ich gelesen habe, sollte XFS wegen seines saubereren Codes und seiner Stabilität gegenüber ext4 bevorzugt werden. Wenn jede Partition erstellt ist, klicken Sie auf den grünen Haken in der Symbolleiste von gparted.

SSD Partitioning

Schließen Sie gparted danach.

Um unsere Partitionen zu speichern, erstellen wir neue Variablen (ändern Sie die Parameter zu Ihren Werte falls sie unterschiedlich sind):

export SSD_BOOT=/dev/sdb1
export SSD_CACHE=/dev/sdb2
export SSD_SYSTEM=/dev/sdb3

Wichtig: Wenn Sie UEFI anstelle von Legacy/Bios verwenden, wollen Sie zwei Partitionen für /boot erstellen. Eine für den /boot/efi (Dateisystem: fat32 (!)) Mount-Punkt bei /dev/sdb1 und eine zweite für den normalen /boot (Dateisystem: ext2) Mount-Punkt bei /dev/sdb2.

1.2 Caching mit bcache einrichten

>
Ein Cache ist ein schnellerer Speicher, um häufig verwendete (oder in letzter Zeit verwendete) Daten von einem langsameren Speicher bereitzustellen. Ein modernes System verwendet ein Caching-System wie das folgende:

CPU Cache [ L1 > Ln ] (extrem schnell) > RAM (sehr schnell) > SSD Cache (optional) (schnell) = SSD Speicher (schnell) > HDD Speicher (normal) > Server Speicher (langsam)

Um einen Cache unter Linux zu erstellen, verwenden wir bcache. Bcache ist ein Linux Kernel Block Layer Cache, der genau das erlaubt, was wir wollen: unsere langsame Festplatte mit einem Teil unserer schnellen SSD zu cachen.

Um dies zu ermöglichen, müssen wir zuerst bcache-tools installieren. Dazu ist es zwingend erforderlich, dass Sie über eine aktive Internetverbindung verfügen. Löschen Sie anschließend alles von den neu erstellten Partitionen:

apt-get update
apt-get install bcache-tools

# lösche Partitionen
wipefs -a $SSD_CACHE
wipefs -a $HDD_POINT

Dann richten Sie die Cache-Partition (-C) der SSD und das Speichermedium (-B), die HDD-Partition, ein. Optional können Sie auch den writeback caching Modus verwenden. Fügen Sie schließlich die resultierende abgebildete Partition des Cache auf der SSD und der Datenpartition auf der HDD zu einer neuen Variable hinzu.

make-bcache -C $SSD_CACHE -B $HDD_POINT
# optional
echo writeback > /sys/block/bcache0/bcache/cache_mode

export BCACHE=/dev/bcache0

In der Linux-Shell wird mit dem Befehl echo 1 > testein Parameter (1) in eine Datei (test) geschrieben. Wenn Sie einen Parameter an eine Datei anhängen wollen, müssen Sie echo 1 >>> test verwenden. Um zu sehen, was Sie getan haben, können Sie cat test verwenden. Es schreibt den Inhalt der Datei in das Terminal (in diesem Fall 1 1). Um diese Datei wieder zu löschen, verwenden Sie rm test. Wenn Sie einen Ordner löschen wollen, können Sie -r verwenden, und wenn Sie ihn zwangsweise löschen wollen, fügen Sie -f hinzu. rm -rf dir löscht das gesamte „dir“ Verzeichnis. Seien Sie vorsichtig: Im Root-Modus (sudo) können Sie alles löschen. rm -rf / zum Beispiel, entfernt Ihr gesamtes Linux-System.

1.3 Einrichten der Verschlüsselung mit LUKS

Unser gesamtes Dateisystem der Festplatte zusammen mit dem Cache auf der SSD wird nun auf $BCACHE (/dev/bcache0) abgebildet und die Systempartition immer noch auf $SSD_SYSTEM. Jetzt müssen wir sie verschlüsseln. Um LUKS einzurichten, müssen wir zuerst ein Format erstellen. Wir verwenden die Standardeinstellungen, ändern aber die Schlüsselgröße für eine höhere Sicherheit. Wenn Sie mehr über LUKS erfahren möchten, können Sie es im exzellenten archlinux wiki nachlesen. Wählen Sie ein sicheres und langes Passwort. Wie immer: Eine Verschlüsselung ist höchstens so sicher wie ihr Passwort. Danach können wir sie öffnen und ihr einen Namen geben, auf den sie abgebildet wird. Schließlich speichern wir den Pfad noch einmal in einer Variable zur späteren Verwendung.

# verschlüsselt alles außer /boot
cryptsetup --key-size 512 luksFormat $SSD_SYSTEM
cryptsetup --key-size 512 luksFormat $BCACHE

# Öffne Geräte für die Installation
cryptsetup luksOpen $SSD_SYSTEM cRoot
cryptsetup luksOpen $BCACHE cCache

# Speichern des Pfades wieder in Variablen
export CROOT=/dev/mapper/cRoot
export CCACHE=/dev/mapper/cCache

Jetzt haben wir unsere HDD und SSD komplett verschlüsselt.

1.4 Erstellen des Logical Volume Managers (LVM)

Um Linux auf den entschlüsselten Partitionen zu installieren, müssen wir sie formatieren. LVM ist ein sehr nützliches Werkzeug dafür. Sie können eine große Anzahl von Partitionen zu einer Volume-Gruppe zusammenfassen. Auch über physische Geräte hinweg. In dieser Volume-Gruppe können Sie logische Partitionen frei erstellen, entfernen und in der Größe verändern. Das ist sehr nützlich für alle möglichen Dinge. Mehr dazu können Sie wieder in dem ausgezeichneten archlinux wiki nachlesen.

Erstellen Sie zunächst eine Volumengruppe mit dem Namen system für unsere Linux-System-Root auf der SSD. Danach erstellen Sie eine Volumengruppe data für unsere Festplattenpartition.

# Erstellen der LVM auf einem physischen Volume
pvcreate $CROOT
# eine Volumengruppe aus zahlreichen verschiedenen physischen Volumes erstellen (in unserem Fall nur eines)
vgcreate system $CROOT
# jetzt das Gleiche für den Cache und die HDD
pvcreate $CCACHE
vgcreate data $CCACHE

1.5 Logische Partitionen erstellen

Im letzten Schritt vor Beginn der Installation müssen wir die logische Partition einrichten, in der wir unser System installieren wollen. Um eine logische Partition in einer bestehenden Volume-Gruppe zu erstellen, verwenden wir den Befehl lvcreate -n[ Name] -[l,L][Größe] [Volumengruppenname]. Der Name der neuen Partition wird nach dem Parameter -n gesetzt, die Größe nach dem Parameter -L. Sie können auch wählen, ob Sie eine prozentuale Größe mit dem Parameter -l festlegen wollen. Zum Beispiel wird der Befehl lvcreate -n test -l 50%FREE data eine Partition auf unserer Data-Volumengruppe mit dem Namen test und der Größe von 50% des übrig gebliebenen freien Platzes erstellen.

1.5.1 Swap

Ihr gesamter Swap sollte etwa 0,5 * RAM betragen. 1.5 * RAM, wenn Sie den Ruhezustand verwenden wollen.

Wir wollen den Ruhezustand nutzen, also benötigen wir 1,5 * RAM. Swap ist im Vergleich zum physischen RAM sehr langsam. Wenn Ihr Swap verwendet wird, werden Sie sofort feststellen, dass Ihr System langsamer wird. Um es schneller zu machen, erstellen wir eine Partition für den Swap mit einer Größe von 0,5 * RAM auf der SSD. Das 1 * RAM befindet sich auf der Festplatte und sollte nur für den Ruhezustand verwendet werden. In meinem Fall habe ich 8GiB RAM. So werden 4096 MiB Swap auf der SSD und 8192MiB auf der Festplatte sein.

Die Erstellung ist dank der LVM sehr einfach:

lvcreate -n swap -L 4G system
lvcreate -n swap -L 8G data

1.5.2 System

Nun können wir die Partition für das System einrichten. Wir werden die Partition für /root und /home in zwei verschiedene Partitionen aufteilen. Damit können wir die Größe von home ändern, ohne den Root-Teil des Systems zu berühren. Zusätzlich nutzen wir nicht den vollen Speicherplatz der Volumengruppe, um die Möglichkeit zu haben, bei Bedarf später eine neue Partition hinzuzufügen (oder eine alte zu erweitern).

lvcreate -n root -L 26G system
lvcreate -n home -L 30G system

Zusätzliche Partitionen auf unserer Festplatte ignorieren wir vorerst komplett, da wir sie jederzeit einfach über das LVM erstellen können.

2. Installieren von Linux

Schließlich installieren wir Linux. Starten Sie die Anwendung Install elementary OS oder einen ähnlichen Namen für Ubuntu aus Ihrem Application Drawer.

live eOS application drawer

Fahren Sie mit dem Installationsvorgang mit den gewünschten Einstellungen fort, bis Sie aufgefordert werden, den Installationstyp Installation type einzugeben. Wählen Sie Something else. Danach kommen Sie zu einem Fenster, das so aussieht wie gparted zuvor. Hier können Sie das Dateisystem, die Option zum Formatieren und den Mount-Punkt einstellen. Wir haben 5 Partitionen, die wir benutzen wollen:

  1. /dev/mapper/data-swap
    Verwendung als: swap area
  2. /dev/mapper/system-home
    Verwendung als: XFS journaling file system
    Formatieren Sie die Partition: Zutreffend
    Einhängepunkt: /home
  3. /dev/mapper/system-root
    Verwendung als: XFS journaling file system
    Formatieren Sie die Partition: Zutreffend
    Einhängepunkt: /
  4. /dev/mapper/system-swap
    Verwendung als: swap area
  5. /dev/sdb1
    Verwendung als: Ext4 journaling file system
    Formatieren Sie die Partition: Zutreffend
    Einhängepunkt: /boot

Schließlich wählen Sie Ihre SSD (/dev/sdb) als Gerät für die Installation des Bootloaders.

Gif how to partition

Drücken Sie Install Now, dann Continue, wählen Sie Ihren Standort, legen Sie Ihr Tastaturlayout fest und richten Sie Ihr Konto ein. Es ist nicht notwendig, die Home-Partition zu verschlüsseln, da sie bereits verschlüsselt ist. Außerdem können Sie sich automatisch einloggen, da wir das Gerät ohnehin erst freischalten müssen, bevor wir es benutzen können.

Starten Sie nach der Installation das System nicht neu! Wählen Sie Continue Testing.

Falls Sie ausversehen neugestartet haben
Wenn Sie versehentlich den falschen Knopf gedrückt und neu gestartet haben, müssen Sie Ihre Live-USB/CD/DVD erneut auswählen (wahrscheinlich F12 beim Start drücken um in das Bootmenü zu gelangen) und das Live-System starten. Dort müssen Sie erneut bcache-tools installiert und den Cache im System registrieren. Ein hacky Weg ist einfach zu versuchen, einen neuen bcache auf den gleichen Partitionen zu erstellen. Auf diese Weise wird das Programm sie automatisch registrieren. Schließlich sollten Sie einige Variablen erneut registrieren und die Partitionen mit LUKS entsperren.

sudo -i
# Ihre Variablen gemäß Ihrem System speichern
export SSD_CACHE=/dev/sdb2
export SSD_SYSTEM=/dev/sdb3
export HHD_POINT=/dev/sda

# Update apt-get, um Zugriff auf die Datenbank zu erhalten.
apt-get update
apt-get install bcache-tools

# Fehler erwartet und gewollt, um bcache zu registrieren
make-bcache -C $SSD_CACHE
make-bcache -B $HHD_POINT

# Speichere Variable vom bcache-Pfad
export BCACHE=/dev/bcache0

# Partitionen entschlüsseln
cryptsetup luksOpen $SSD_SYSTEM cRoot
cryptsetup luksOpen $BCACHE cCache

# Register entschlüsselte Mapper-Variablen 
export CROOT=/dev/mapper/cRoot
export CCACHE=/dev/mapper/cCache

3. Nach der Installation

Nun, da die Installation abgeschlossen ist, müssen wir sicherstellen, dass unser System in der Lage ist den Cache zu nutzen und die Verschlüsselung zu verstehen. Deshalb müssen wir das frisch installierte System mounten, um den Caching-Kernel zu installieren und die Verschlüsselung einzurichten. Danach muss ein Nameserver hinzugefügt werden, um einen Internetzugang zu erhalten, und es muss bcache-tools installiert werden. Schließlich müssen die verschlüsselten Partitionen dem System hinzugefügt werden. Kehren Sie zu Ihrem offenen Terminal zurück. Wenn es geschlossen ist, starten Sie ein neues und wechseln Sie erneut in den Supervisor-Modus mit sudo -i.

mount /dev/mapper/system-root /mnt
mount $SSD_BOOT /mnt/boot
mount -o bind /sys /mnt/sys
mount -o bind /run /mnt/run
mound -o bind /proc /mnt/proc
mount -o bind /dev /mnt/dev

# Als Supervisor in das installierte System gehen
chroot /mnt

# Einen Nameserver für den Internetzugang einrichten
echo 'nameserver 8.8.8.8' > /run/resolvconf/resolv.conf

# bcache-tools installieren
apt-get update
apt-get install bcache-tools

# /etc/crypttab erstellen und verschlüsselten Partitionen hinzufügen
echo "cRoot UUID=`blkid -o value $SSD_SYSTEM | head -1` none luks" > /etc/crypttab
echo "cCache UUID=`blkid -o value $BCACHE | head -1` none luks" >> /etc/crypttab

# Ganz wichtig: Aktualisieren Sie Ihre initramfs. Andernfalls wird das crypttab nicht geladen.
update-initramfs -uk all

Jetzt sind Sie fast fertig. Beenden Sie das chroot, synchronisieren Sie den Systemstatus und entfernen Sie die Verbindung. Deaktivieren Sie anschließend die Volume-Gruppe und schließen Sie die LUKS-Partition. Dann starten Sie den Computer neu und freuen sich an Ihrem neuen, vollverschlüsselten und gecacheten System.

# chroot beenden und Änderungen synchronisieren
exit
sync


# Verbindung zum System entfernen
umount /mnt/sys
umount /mnt/run
umount /mnt/proc
umount /mnt/dev
umount /mnt/boot
umount /mnt

# Swap ausschalten um Volumengruppen zu deaktivieren
swapoff -a

vgchange -an /dev/mapper/system
vgchange -an /dev/mapper/data

cryptsetup luksClose cCache
cryptsetup luksClose cRoot

sync

reboot

4. Quelle

Ich folgte den Schritten von solsTiCe@askubuntu und modifizierte sie für meinen Zweck.

Dies war mein erster Leitfaden. Wenn Sie Fragen haben oder mir Feedback geben möchten, können Sie gerne einen Kommentar hinterlassen.
In der nächsten Anleitung werde ich Ihnen zeigen, wie Sie die HDD-Partition automatisch entsperren und optional die SSD-Root-Partition mit einem USB-Stick anstelle eines Passworts entsperren können.

  1. Elementary OS basiert auf dem Zahle-was-du-willst modell. Das OS sowie viele Apps im Store sind somit frei erhältlich.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

fünf × 2 =