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
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
.
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:
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.
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 > test
ein 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.
# 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.
Fahren Sie mit dem Installationsvorgang mit den gewünschten Einstellungen fort, bis Sie aufgefordert werden, den Installationstyp
-
/dev/mapper/data-swap
Verwendung als: swap area -
/dev/mapper/system-home
Verwendung als: XFS journaling file system
Formatieren Sie die Partition: Zutreffend
Einhängepunkt: /home -
/dev/mapper/system-root
Verwendung als: XFS journaling file system
Formatieren Sie die Partition: Zutreffend
Einhängepunkt: / -
/dev/mapper/system-swap
Verwendung als: swap area -
/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.
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.
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.
0 Comments