Verteidigung gegen das böse Mädchen, wie man mit dem Entfernen der / boot-Partition umgeht

11

Wie würden Sie bei Verwendung der vollständigen Festplattenverschlüsselung von LUKS vor bösen Dienstmädchen schützen ?

Der böse Dienstmädchenangriff ist, wenn jemand während Ihrer Abwesenheit physischen Zugriff auf Ihren Computer erhält und die unverschlüsselte / boot-Partition kompromittiert, um Ihr FDE-Kennwort beim nächsten Start Ihres Computers zu erfassen

Eine der Lösungen besteht darin, Ihre / boot-Partition auf einem USB-Stick zu belassen, der immer bei Ihnen ist (das Dienstmädchen kann nicht darauf zugreifen), aber welches Dateisystem soll ich darauf verwenden und wie konfiguriere ich mein System, um das Entfernen ordnungsgemäß zu handhaben des USB-Sticks (und damit der / boot-Partition selbst)?

Ich verwende CentOS, aber generische, distro-agnostische Antworten sind natürlich willkommen. Vielen Dank.


quelle

Antworten:

5

Endlich herausgefunden. Dies fühlt sich immer noch sehr hackig und schmutzig an, da das System nie weiß, dass es /bootmöglicherweise nicht gemountet wird, und Sie es manuell mounten müssen, bevor Sie etwas tun, das darauf geschrieben werden könnte (denken Sie an Systemupdates usw.), aber ansonsten funktioniert es perfekt .

  • Bereiten Sie Ihr Flash-Laufwerk mit einer einzelnen Partition vor, auf der das Startflag gesetzt ist. Sie können es ausführen shred -n 1 -v /dev/sdX, um es vollständig zu löschen, einschließlich aller vorherigen Bootsektoren. Sobald dies erledigt ist, führen Sie fdiskeine Partition und mkfsdas Dateisystem Ihrer Wahl darauf aus.
  • Hängen Sie Ihr Flash-Laufwerk irgendwo ein, /mnt/bootoder es reicht sogar aus /newboot.
  • Bewegen Sie alles /bootüber das Flash-Laufwerk mit mv /boot/* /newboot.
  • Bearbeiten Sie Ihre /etc/fstabund ändern Sie die UUID der ursprünglichen Boot-Partition (oder erstellen Sie einen Eintrag, falls es keinen gibt), um ihn an die Ihres Flash-Laufwerks anzupassen. Sie können die UUID mit erhalten lsblk -o name,uuid. Fügen Sie außerdem die noautoOption hinzu, damit das Laufwerk nicht automatisch gemountet wird, um es entfernen zu können, sobald das System mit dem Booten beginnt (sobald der Kernel geladen ist), ohne das Risiko einzugehen, dass der FS beschädigt wird.
  • Hängen Sie die ursprüngliche Startpartition und das Flash-Laufwerk ( umount /boot && umount /newboot) aus und mounten Sie das Flash-Laufwerk. Wenn Ihr fstab-Eintrag korrekt ist, können Sie ihn einfach ausführen mount /bootund er wird automatisch basierend auf der in der fstab angegebenen UUID bereitgestellt.
  • Generieren Sie die Konfiguration Ihres Bootloaders neu, um die UUIDs und die "physische" Position der neuen Partition widerzuspiegeln. Für GRUB wird das Flash-Laufwerk tatsächlich als erste Festplatte im Computer angezeigt ( hd0). Wenn Sie mit den von den meisten Distributionen bereitgestellten Standard-GRUB-Konfigurationsskripten einverstanden sind, können Sie diese ausführen grub-mkconfig -o /path/to/grub.cfgund die Datei gemäß den aktuell bereitgestellten Partitionen und / oder fstab generieren. Beachten Sie, dass sich für CentOS 7 das richtige grub.cfgtatsächlich in befindet /boot/grub2/grub.cfg.

Wenn Sie einen Vorgang ausführen, der auf die Startpartition zugreift, schließen Sie Ihren USB-Stick an und führen Sie ihn aus mount /boot. Sobald Sie fertig sind, können Sie laufen umount /boot. Beachten Sie, dass der letzte Befehl einige Zeit in Anspruch nehmen kann, da die Puffer auf die Festplatte geleert werden (die Festplatte selbst ist langsam, sodass der Kernel einige Schreibvorgänge puffert, um die Arbeit zu beschleunigen).


quelle
Überhaupt nicht schmutzig, das ist der naheliegendste Weg, das zu tun. Danke, dass du es ausgeschrieben hast!
Dbanet
0

Ein anderer Ansatz für dieses spezielle Problem besteht darin, das TPM zum Speichern eines Verschlüsselungsschlüssels zu verwenden. Die Verteidigung ist jedoch darauf angewiesen, dass der Benutzer ihn effektiv macht. Eine rudimentäre RHEL7-basierte Lösung ist tpm-luks ( https://github.com/GeisingerBTI/tpm-luks ).

Die Funktionsweise ist beim Booten. Jeder Schritt des Bootvorgangs misst den nächsten und speichert diese Messung in den PCRs auf dem TPM. Sobald der Startvorgang abgeschlossen ist, überprüft tpm-luks den Status der PCRs anhand einer "bekanntermaßen guten" Konfiguration. In einer "bekanntermaßen guten" Konfiguration entsiegelt das TPM den LUKS-Schlüssel und tpm-luks übergibt diese Daten, um die Root-LUKS-Partition zu entsperren.

Da alles Wichtige mit einem crpytografischen Hash gemessen wird, gibt es für ein böses Mädchen im Grunde keine Möglichkeit, Ihren GRUB / Kernel / Ramdisk zu ersetzen, um Ihre FDE-Passphrase schändlich zu sammeln. Als zusätzlichen Bonus benötigen Sie überhaupt keine FDE-Passphrase! Theoretisch könnten Sie die für Menschen lesbare Passphrase vollständig entfernen und sich vollständig auf die tpm-luks verlassen. Wenn Sie diesen Weg gehen, ist es wahrscheinlich eine gute Idee, Ihren LUKS-Header zu speichern und als Backup aufzubewahren.

Wie bereits erwähnt, erfordert dies einige Sorgfalt beim Benutzer. Wenn Sie den Computer unbeaufsichtigt gelassen haben und eine Passphrase-Eingabeaufforderung angezeigt wird, ist es wahrscheinlich eine schlechte Idee, diese einzugeben, bis Sie einige Untersuchungen durchgeführt haben. Zu diesem Zeitpunkt sollten Sie eine Live-CD-Umgebung starten und prüfen, ob in tpm-luks ein Fehler vorliegt oder ob die /bootPartition wirklich geändert wurde. Sie lassen die /bootPartition immer noch unverschlüsselt, aber wenn etwas Wichtiges geändert wird, wird die Hauptfestplatte niemals entschlüsselt.

John Wallace
quelle