GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Passwortlose Verschlüsselung der Linux-Root-Partition auf Debian 8 mit einem USB-Stick

Die Sicherheit kritischer Daten auf dem Speichergerät (Festplatte, tragbarer Speicherstick) ist erforderlich, damit ein Eindringling keine sensiblen Informationen stehlen kann. In diesem Tutorial liegt unser Fokus auf der Sicherheit des Linux-Root-Dateisystems und des Swap-Bereichs. Es wird die Standard-Linux-Verschlüsselungsfunktion „LUKS“ verwendet, die beim Booten eine Passphrase erfordert. Daher ist unser nächstes Ziel, die Passphrase beim Booten automatisch einem verschlüsselten Volume bereitzustellen. Es sind bereits einige Artikel zum gleichen Thema für ältere Versionen der Debian-Distribution verfügbar. In dieser Anleitung wird jedoch die Version von Debain 8 (Jessie) auf einer VirtualBox-VM installiert.

Installation des Debian-Betriebssystems 

In diesem Tutorial wird Debian Jessie auf einer VM installiert und Details werden in der folgenden Abbildung gezeigt. Dasselbe Verfahren funktioniert auch auf einem "echten" Server oder Desktop.

Fügen Sie die ISO-Datei des Debian-Net-Installers in der VM hinzu und starten Sie die VM, die Eingabeaufforderung des Installationsprogramms wird angezeigt. Wählen Sie die Option „Installieren“, um den Installationsvorgang zu starten.

Auf den folgenden Bildschirmen werden Sie nach den Grundeinstellungen von Debian gefragt. Wählen Sie die gewünschte Sprachoption aus der angegebenen Liste aus.

Wählen Sie das Land oder Gebiet aus, wie in der folgenden Abbildung gezeigt.

Konfigurieren Sie die Sprache für die Tastatur.

Nach den Grundeinstellungen lädt der Installer weitere Komponenten zur Konfiguration.

Auch hier werden während des Installationsvorgangs weitere Grundeinstellungen konfiguriert.

1. Einstellen des Hostnamens

2. Konfigurieren des Domänennamens

3. Festlegen eines Passworts für den „root“-Benutzer.

4. Erstellen eines neuen Benutzers außer root.

5. Stellen Sie die Zeitzone ein

6. Und schließlich ist der wichtigste Teil die Partitionierung der Festplatte.

Für diesen Artikel ist eine manuelle Partitionierung der Festplatte erforderlich. Wählen Sie daher in der obigen Eingabeaufforderung die Option „Manuell“ und wählen Sie die gewünschte Festplatte aus, um den Vorgang zu starten.

Wie in der obigen Abbildung gezeigt, wird Debian in der VM installiert. Drücken Sie die Eingabetaste, um mit der Partitionierung der ausgewählten Festplatte zu beginnen, die unten angezeigt wird.

Der folgende Bildschirm wird angezeigt, nachdem Sie die obige Nachricht akzeptiert haben. Wie im folgenden Screenshot gezeigt, befindet sich derzeit keine Partition auf der Festplatte.

Drücken Sie "Enter", um die erste Partition auf der virtuellen Festplatte zu erstellen.

Die erste Partition, die wir auf der Festplatte erstellt haben, ist „/dev/sda1“ für den Einhängepunkt „/boot“.

Primärer oder logischer Typ ist für die Partition ausgewählt.

Speicherort der neuen Partition ist ausgewählt.

Der Einhängepunkt „/boot“ wird im folgenden Screenshot angezeigt.

Die erste Partition wurde erfolgreich auf der Festplatte erstellt. Der Linux-Kernel wird später in die "/boot"-Partition gelegt.

Die zweite Partition, die auf der VM-Festplatte erstellt wird, ist eine Auslagerungspartition und die Größe der Auslagerungspartition sollte doppelt so groß sein wie die RAM-Größe. Wie im folgenden Screenshot gezeigt, wird der verbleibende freie Speicherplatz zum Austausch ausgewählt.

Legen Sie die Größe der Swap-Partition fest.

Der folgende Screenshot zeigt, dass die Partition als Auslagerungsbereich ausgewählt ist.

Außerdem wird auf der VM eine weitere Partition erstellt.

Die Kernpartition der Linux-Plattform wird auf dem verbleibenden Platz für / (dem „Root“-Einhängepunkt) erstellt. Der folgende Schnappschuss zeigt die Größe der „Root“-Partition.

Wählen Sie die Option „Physical Volume of Encryption“ für die neue Partition auf der Festplatte aus.

Die hervorgehobene Option im folgenden Screenshot ist erforderlich, um die Partition auf der Linux-Plattform zu verschlüsseln.

Die Einrichtung der Partition nach Auswahl von „Physical Volume for Encryption“ ist in der folgenden Abbildung dargestellt. Die Standardverschlüsselungsmethode ist Device-Mapper (dm-crypt), der Verschlüsselungsalgorithmus ist AES mit 256 Schlüsselgröße.

Die erfolgreiche Erstellung der Partition auf der virtuellen Festplatte ist in der folgenden Abbildung dargestellt.

Hier kommt die erweiterte Konfiguration verschlüsselter Volumes unter Debian, die im folgenden Screenshot ausgewählt ist.

Die folgende Eingabeaufforderung zeigt, dass das aktuelle Partitionierungsschema auf die Festplatte schreiben muss, bevor wir mit der Konfiguration des verschlüsselten Volumes beginnen können.

Die folgende Eingabeaufforderung zeigt die Erstellung des verschlüsselten Volumes auf der Debian-Plattform.

Wählen Sie die Geräte für das verschlüsselte Volume aus. Wählen Sie nicht das Boot-Gerät "/dev/sda1" für das verschlüsselte Volume aus, da es nicht erlaubt ist, die Boot-Partition zu verschlüsseln.

Wie im folgenden Screenshot gezeigt, ist nur "/dev/sda3" für das verschlüsselte Volume ausgewählt und dies ist die Root-Partition der Festplatte.

Wählen Sie nach der Konfiguration des verschlüsselten Volumes Fertig stellen, um die Änderungen zu übernehmen.

Der folgende Fehler wird jedoch angezeigt, wenn die Auslagerungspartition nicht für das verschlüsselte Volume ausgewählt ist.

Daher wählen wir beide Partitionen für das verschlüsselte Volume aus.

Partitionseinstellungen für verschlüsseltes Swap-Volume sind unten gezeigt.

Die folgende Eingabeaufforderung zeigt, dass Daten auf "sda2" (swap) gelöscht werden.

Das Löschen von Daten auf "sda2" und "sda3" wird unten gezeigt.

Geben Sie nach Abschluss des Vorgangs eine Passphrase für beide verschlüsselten Partitionen ein.

Dieselbe Passphrase erneut eingeben.

Die Partitionstabelle nach erfolgreicher Konfiguration der verschlüsselten Volumes auf der Festplatte ist unten dargestellt.

Beenden Sie den Partitionierungsprozess, um die Installation des Debian-Betriebssystems zu starten. Es erscheint jedoch die folgende Fehlermeldung, da der Einhängepunkt „/“ noch für keine Partition ausgewählt wurde.

Konfigurieren Sie nach der obigen Fehlermeldung die verschlüsselten Volumes neu, um den Bereitstellungspunkt festzulegen. In diesem Artikel ist „sda3_crypt“ das Root-Dateisystem und „sda2_crypt“ der Auslagerungsbereich.

Mountpunkt „/“ für verschlüsseltes Volume auswählen.

Auswählen des verschlüsselten Volumes „sda2_crypt“ als Auslagerungsbereich.

Der folgende Screenshot zeigt die endgültige Partitionstabelle für verschlüsselte Volumes.

Die Formatierung von Partitionen wird unten gezeigt.

Nach Abschluss des Formatierungsvorgangs wird das Basissystem installiert.

Der folgende Screenshot zeigt die Auswahl des Archivspiegels für die Debian-Pakete.

Die Konfiguration des Paketmanagers wird unten gezeigt.

Nur das Basis- oder Kernsystem ist noch installiert und andere Pakete können aus der angezeigten Liste installiert werden.

Wählen Sie die Desktop-Umgebung und andere Pakete aus der Liste aus.

Die Installation ausgewählter Pakete wird unten gezeigt.

Die Installation des Linux-Bootloaders „GRUB“ wird im folgenden Screenshot gezeigt.

Das Gerät (sda) ist für die Bootloader-Installation ausgewählt.

Schließlich ist der Installationsvorgang abgeschlossen.

Geben Sie nach dem Neustart die Passphrase ein, um die sda3-Festplatte zu entschlüsseln.

Geben Sie die Passphrase ein, um die sda2-Festplatte zu entschlüsseln, die der Auslagerungsbereich ist.

Melden Sie sich erfolgreich am installierten System an.

Konfiguration für passwortloses Root-Dateisystem

Die Eingabe der Passphrase beim Booten wird jetzt mit einem USB-Speicherstick automatisiert. Anstelle von

eine Passphrase, der geheime Schlüssel auf dem USB entschlüsselt die verschlüsselten Volumes. Schließen Sie einen USB-Stick an die VM an und suchen Sie ihn mit dem Befehl "dmesg". Es wird in meiner VM als „/dev/sdb“ erkannt.

Der geheime Schlüssel von 8192 zufälligen Byte wird mit dem dd-Befehl vom USB-Stick extrahiert.

dd if=/dev/sdb of=/root/secret.key bs=512 skip=4 count=16

Der oben generierte geheime Schlüssel wird mit dem Befehl „cryptsetup“ zu den verschlüsselten Volumes hinzugefügt. Standardmäßig wird die Passphrase in Slot 0 gespeichert. Daher wird Slot 1 für den zweiten geheimen Schlüssel verwendet.

Führen Sie den Befehl „blkid“ aus, um Details zum Volume auf der Festplatte zu erhalten.

blkid

In dieser Anleitung wird der geheime Schlüssel zum Entschlüsseln des Volumes nur in /dev/sda3 hinzugefügt. Es kann jedoch auch zur "/dev/sda2" (Swap)-Partition hinzugefügt werden.

cryptsetup luksAddKey /dev/sda3 /root/secret.key --key-slot 1

Eine einfache udev-Regel wird für das USB-Gerät in der Datei /etc/udev/rules.d/99-custom-usb.rules erstellt, der symbolische Link, den wir verwenden werden, ist /dev/usbdevice.

SUBSYSTEMS=="usb", DRIVERS=="usb",SYMLINK+="usbdevice%n"

Laden Sie die Regeln mit dem folgenden Befehl neu.

udevadm control --reload-rules

Stecken Sie das USB-Gerät ein, um die benutzerdefinierte Regel zu überprüfen.

Ein Shell-Skript ist erforderlich, um den geheimen Schlüssel vom USB-Gerät zu lesen und ihn beim Booten für cryptsetup bereitzustellen. Das Skript wird als „/usr/local/sbin/openluksdevices.sh“ erstellt und von der Website http://www.oxygenimpaired.com/ übernommen.

#!/bin/sh
############taken from following link#########
###http://www.oxygenimpaired.com/debian-lenny-luks-encrypted-root-hidden-usb-keyfile

TRUE=0
FALSE=1

# flag tracking key-file availability
OPENED=$FALSE

if [ -b /dev/usbdevice ]; then
# if device exists then output the keyfile from the usb key
dd if=/dev/usbdevice bs=512 skip=4 count=16 | cat
OPENED=$TRUE
fi

if [ $OPENED -ne $TRUE ]; then
echo "FAILED to get USB key file ..." >&2
/lib/cryptsetup/askpass "Try LUKS password: "
else
echo "Success loading key file for Root . Moving on." >&2
fi

sleep 2

Legen Sie die Berechtigungen des Skripts fest, damit es ausgeführt werden kann.

 chmod a+x /usr/local/sbin/openluksdevices.sh

Ähnlich wie die fstab-Konfigurationsdatei enthält die crypttab-Datei die Informationen zu verschlüsselten Volumes auf der Linux-Plattform. Fügen Sie ein Shell-Skript für die verschlüsselte Partition sda3_crypt hinzu. Der Inhalt der Konfigurationsdatei „/etc/crypttab“ für verschlüsselte Volumes ist unten angegeben.

sda3_crypt /dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc none luks,keyscript=/usr/local/sbin/openluksdevices.sh

Fügen Sie die folgende Zeile in die Datei „/etc/initramfs-tools/conf.d/cryptroot“ ein.

CRYPTROOT=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc

Stellen Sie sicher, dass "usb_storage" in der Datei "/etc/initramfs-tools/modules" hinzugefügt wird.

Das folgende Shell-Skript (/etc/initramfs-tools/hooks/udevusbkey.sh) stammt ebenfalls aus einer externen Quelle. Es wird verwendet, um eine benutzerdefinierte udev-Regel im temporären Dateisystem "initrd" hinzuzufügen.

#!/bin/sh
# udev-usbkey script
###taken from
###http://www.oxygenimpaired.com/ubuntu-with-grub2-luks-encrypted-lvm-root-hidden-usb-keyfile
PREREQ="udev"
prereqs()
{
echo "$PREREQ"
}

case $1 in
prereqs)
prereqs
exit 0
;;
esac

. /usr/share/initramfs-tools/hook-functions

# Copy across relevant rules

cp /etc/udev/rules.d/99-custom-usb.rules ${DESTDIR}/lib/udev/rules.d/

exit 0

Ändern Sie die Berechtigung des Skripts.

 chmod a+x /etc/initramfs-tools/hooks/udevusbkey.sh

Einige Änderungen sind in der GRUB2-Bootloader-Konfiguration erforderlich. Direkte Änderungen in der Konfigurationsdatei "/boot/grub/grub.cfg" sind jedoch nicht zulässig. Ändern Sie daher den Parameter "GRUB_CMDLINE_LINUX_DEFAULT" in der Konfigurationsdatei "/etc/default/grub". Wie unten gezeigt, sind „rootdelay“ und „cryptopts“ im Parameter „GRUB_CMDLINE_LINUX_DEFAULT“ enthalten.


GRUB_CMDLINE_LINUX_DEFAULT="rootdelay=20 cryptopts=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc,keyscript=/lib/cryptsetup/scripts/openluksdevices.sh"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtainsConclusion

Führen Sie den Befehl „update-grub“ aus, um die obigen Änderungen in der Konfigurationsdatei „/boot/grub/grub.cfg“ anzuwenden.

Nach dem obigen Befehl wurden die folgenden Änderungen in der Konfigurationsdatei "/boot/grub/grub.cfg" angewendet.

echo    'Loading Linux 3.16.0-4-686-pae ...'
linux   /vmlinuz-3.16.0-4-686-pae root=UUID=b30cdb22-8e3c-4ffd-a0c7-af96b90ba016 ro  rootdelay=20 cryptopts=target=sda3_crypt,source=/dev/disk/by-uuid/c37a8128-5ea9-45c6-8890-d52f3d452ccc,keyscript=/lib/cryptsetup/scripts/openluksdevices.sh
echo    'Loading initial ramdisk ...'
initrd  /initrd.img-3.16.0-4-686-pae

Führen Sie „update-initramfs -u“ aus, um die temporäre Dateisystemdatei für alle Kernel zu aktualisieren.

Entpacken Sie vor dem Neustart die neu generierte „initrd.img“ und vergewissern Sie sich, dass das Schlüsselskript in das Verzeichnis „lib/cryptsetup/scripts“ und die benutzerdefinierte udev-Regel in das Verzeichnis „lib/udev/rules.d/“ kopiert wurde.

cd /tmp/
zcat /boot/initrd.img-3.16.0-4-686-pae | cpio -iv

Keyscript wurde erfolgreich in die initramfs-Skripte eingebunden.

Eine benutzerdefinierte USB-Regel ist auch in den udev-Regeln enthalten.

Fügen Sie ein USB-Gerät in den VM-Einstellungen hinzu, bevor Sie das gesamte Setup testen.

Schließlich wird der geheime Schlüssel erfolgreich für das verschlüsselte Volume geladen.

Schlussfolgerung

In diesem Artikel wird eine verschlüsselte Partition mit einem geheimen Schlüssel geöffnet, der auf einem USB-Speichergerät gespeichert ist. Ein automatisches Shell-Skript wird verwendet, um beim Booten einen geheimen Schlüssel für das verschlüsselte Volume bereitzustellen.


Debian
  1. So installieren Sie Arch Linux mit Full Disk Encryption

  2. Fehler beim Signieren von CSR mit dem Ca-Stammschlüssel?

  3. Linux – So verschlüsseln Sie Linux (debian 8) nach der Installation und was sind die Folgen?

  4. Debian – Datenträger geändert:Bitte legen Sie die Diskette mit der Bezeichnung „debian Gnu/linux?

  5. Linux – Festplatte/Festplattenkopie langsamer machen?

Erste Schritte mit Befehlszeilen-Verschlüsselungstools unter Linux

So klonen Sie Festplatten mit dem Linux-Befehl dd

Erstellen und verwalten Sie Festplattenpartitionen mit Parted in Linux

So passen Sie die Größe der Root-Partition unter Live Arch Linux an

So booten Sie eine Debian-ISO-Datei von der Festplatte mit GRUB2

Debian – Wie installiere ich Debian mit Full-Disk Encryption und einer benutzerdefinierten Auslagerungsdatei?