Vollständige Festplattenverschlüsselung mit Zwei-Faktor-Authentifizierung für Ubuntu: Wie?

9

Hintergrundinformation

Ich bin ein Linux-Neuling, der kürzlich von Windows entwöhnt wurde. Ich verwende derzeit Ubuntu 11.04 ohne vollständige Festplattenverschlüsselung. Nur mein Home-Verzeichnis ist verschlüsselt und mit eCryptFS. In letzter Zeit habe ich festgestellt, dass die Verschlüsselung nicht so transparent ist, wie sie sein sollte. Bei VMWare beispielsweise treten manchmal Probleme mit virtuellen Maschinen auf, die in meinem verschlüsselten Ausgangsverzeichnis gespeichert sind. Daher habe ich die virtuellen Maschinen einfach an einen unverschlüsselten Speicherort verschoben und aus meinem verschlüsselten Ausgangsverzeichnis mit dieser verknüpft. Aber das ist nicht der Punkt: Ich habe festgestellt, dass es eigentlich nicht sehr sicher ist, das System unverschlüsselt zu lassen, da ein Open-Source-Betriebssystem wie Ubuntu sehr einfach zu ändern ist, um Informationen preiszugeben, die geheim gehalten werden sollen.


Tor

Ich möchte in der Lage sein, die vollständige Festplattenverschlüsselung in Verbindung mit einem Schlüsselgerät und einem Kennwort für die Authentifizierung vor dem Start durchzuführen.


Anforderungen / Details

  1. Die gesamte Festplatte muss verschlüsselt sein. Die Festplatte besteht mindestens aus einzelnen Partitionen, die alle verschlüsselt sind. Wenn es möglich ist, auch die Partitionen mit Verschlüsselung auszublenden, werde ich es versuchen. Je transparenter die Verschlüsselung ist, desto besser. Ich sollte meinen Computer nicht anders verwenden oder etwas anderes konfigurieren müssen.
  2. Das Gerät, mit dem die verschlüsselte Partition entsperrt und gestartet wird, muss ein kleines externes tragbares Gerät sein. Dies dient zwei Zwecken: Es ist viel weniger wahrscheinlich, dass der Bootloader für böswillige Zwecke geändert wird, da er bei mir bleibt, wenn er nicht verwendet wird. und die Schlüsseldateien zum Entschlüsseln der Festplatte werden in keiner Form irgendwo auf der verschlüsselten Festplatte selbst gefunden.
  3. Die Schlüsseldateien sollten mit einem Passwort verschlüsselt werden. Sollte ich sowohl meinen Computer als auch mein USB-Gerät verlieren, sind die Daten und das Betriebssystem weiterhin sicher. Wenn ich den USB-Stick verliere oder er kompromittiert ist, kann ich aus einem Backup einen weiteren sauberen erstellen. In beiden Fällen werden keine Informationen preisgegeben. Wenn ich meinen Computer verliere, spielt das natürlich keine Rolle.

Ja, ich habe mir Anleitungen von vielen Orten angesehen, aber das Problem ist, dass sie nicht alle Anforderungen erfüllen (insbesondere Nummer 3). Ich bin mir ziemlich sicher, dass meine Anforderungen häufig genug sind, dass jemand versucht hat, ein solches Setup bereits erfolgreich umzusetzen. Ich wäre dankbar, wenn ein Linux-Profi eine Lösung teilen könnte.

Kevin Li
quelle
2
Betreff "Da ein Open-Source-Betriebssystem wie Ubuntu sehr einfach zu ändern ist, um Informationen preiszugeben, soll es geheim gehalten werden." - Sie werden erstaunt sein, wie einfach es ist, Closed- Source-Betriebssysteme davon zu überzeugen , dasselbe zu tun. Die Tatsache, dass ein Programm Open Source ist, bedeutet nichts über seine Sicherheit oder Unsicherheit gegen lokale Angriffe.
user1686

Antworten:

2

Es gibt eine einfache Möglichkeit, eine vollständige Festplattenverschlüsselung durchzuführen, für die ein bestimmtes USB-Stick UND Ihr Kennwort zum Booten erforderlich sind.

Sie trennen den LUKS-Header von Ihrer vollständig verschlüsselten Festplatte und speichern ihn auf Ihrem USB-Stick.

Ich gehe davon aus, dass Sie bereits das folgende Setup haben:

# /dev/sda1 is the boot partition (100MB)
# /dev/sda2 is the encrypted partition
parted /dev/sda mklabel msdos
parted /dev/sda -- mkpart primary ext2 1M 200M
parted /dev/sda -- mkpart primary ext4 200M -100M
cryptsetup luksFormat /dev/sda2

Erstellen Sie eine Kopie des luks-Headers und löschen Sie ihn vom lokalen Gerät:

mkdir /media/ramdisk && mount -t tmpfs -osize=20m,rw tmpfs /media/ramdisk
cryptsetup luksHeaderBackup /dev/sda2 --header-backup-file /media/ramdisk/header.img
dd if=/dev/urandom of=/dev/sda2 bs=1M count=2

Führen Sie den letzten Schritt mehrmals aus, wenn Sie das Ziel einer High-Budget-Agentur sind. Ich habe auch eine Ramdisk erstellt, um den Header vorübergehend zu halten, damit er danach nicht mehr verweilt.

Erstellen Sie mit Ihrem USB-Gerät in / dev / sdb eine 2-MB-Partition und laden Sie den Header darauf:

parted /dev/sdb -- mklabel MSDOS
parted /dev/sdb -- mkpart primary 1M 3M
dd if=/media/ramdisk/header.img of=/dev/sdb1

Im Moment sieht alles in / dev / sda2 wie zufällige Daten aus, und Sie haben Ihren Header in / dev / sdb1. Um manuell auf das verschlüsselte Laufwerk zuzugreifen, verwenden Sie:

cryptsetup luksOpen --header /dev/sdb1 /dev/sda2 rootfs
mount /dev/mapper/rootfs /target

Der nächste Schritt besteht darin, dass Ihr Startvorgang Sie auffordert, das Pendrive beim Booten einzufügen. Ich fand es einfacher, einfach davon auszugehen, dass es dort sein wird, und ansonsten zu scheitern. Ermitteln Sie zunächst die ID und UUID Ihres Geräts:

find -L /dev/disk/by-id/ -samefile /dev/sdb1
/dev/disk/by-id/usb-Generic-_Compact_Flash-part1
find -L /dev/disk/by-id/ -samefile /dev/sda2
/dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2

blkid /dev/sdb1
/dev/sdb1: UUID="63347546-2db3-4bc1-9414-1142739a4c9f" TYPE="crypto_LUKS"

Bearbeiten Sie als Nächstes Ihre /etc/crypttabZeile so, dass sie folgendermaßen aussieht:

root /dev/disk/by-id/scsi-SATA_ST3320820AS_5QF28W6V-part2 none luks,header=/dev/disk/by-id/usb-Generic-_Compact_Flash-part1

(Möglicherweise benötigen Sie diesen Patch , um Unterstützung für die headerOption in zu erhalten. crypttab)

Zu guter Letzt aktualisieren Sie Ihr Initram:

update-initramfs -u

Sie könnten noch einen Schritt weiter gehen und tatsächlich die gesamte Boot-Partition auf das USB-Laufwerk laden . Der Autor dieses Artikels war genau auf dieser Website und hat ein Follow-up durchgeführt .

Es gibt viele verschiedene Ansätze, die Sie mit unterschiedlichem Maß an Sicherheit und Komfort verfolgen können.

Ein besonderer Hinweis zur Sicherheit: Wenn Ihre Passphrase gefährdet ist, kann jeder mit einer Kopie des Headers die Daten entschlüsseln, auch wenn Sie die Passphrase später ändern.

GnP
quelle
1

Ich weiß, dass TrueCrypt für OSX, Windows und Linux verfügbar ist. Sie können zwei Verschlüsselungsstufen für das gesamte Laufwerk durchführen. Ich habe es auf Debian mit AES-Vollplattenverschlüsselung verwendet. Für den Zugriff auf die Daten auf der Festplatte ist das Kennwort beim Booten erforderlich.

Kobaltz
quelle
3
Ich dachte, dass die vollständige Festplattenverschlüsselung von TrueCrypt nur unter Windows funktioniert.
Kevin Li
two levels of encryption for the whole drive! =two factor auth
GnP