Full Disk Encryption: Und alle so: "yeah!"

DemonLord

Weeeeee!
Gnargh.

Ich versuche gerade eine Full-Disk-Encryption hinzubiegen. Bislang:

/dev/ad4 -> Eine Partition (ad4s1). Diese Unterteilt in
Code:
ad4s1a ~500MB /boot
ad4s1b 3GB swap (unused atm)
ad4s1d -> geli.

Mit Sysinstall hab ich ein Minimal auf ad4s1a installiert, dann per
Code:
geli init -s 4096 -K /boot/geli.key /dev/ad4s1d
ein geli device erzeugt, dies mit newfs behandelt und gemountet. Dann alles von ad4s1a nach ad4s1d.eli kopiert (rsync lässt grüßen).

Stand jetzt:
Code:
/   -> ad4s1d.eli
/boot -> ad4s1a

Die /etc/fstab (auf ad4s1d.eli) sieht so aus:
Code:
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad4s1a             /boot/          ufs     rw              1       1
/dev/ad4s1d.eli         /               ufs     rw              1       1
/dev/acd0               /cdrom          cd9660  ro,noauto       0       0

Die /boot/loader.conf (auf ad4s1a) sieht so aus:
Code:
geom_eli_load="yes"
geli_ad4s1d_keyfile0_load="yes"
geli_ad4s1d_keyfile0_type="ad4s1d:geli_keyfile0"
geli_ad4s1d_keyfile0_name="/boot/geli.key"
vfs.root.mountfrom="ufs:ad4s1d.eli"

Bei einem Neustart lädt er zwar das Modul (geom)
Code:
# kldstat
Id Refs Address            Size     Name
 1    7 0xffffffff80100000 d6aa98   kernel
 2    1 0xffffffff80e6b000 196f8    geom_eli.ko
 3    2 0xffffffff80e85000 2a7a0    crypto.ko
 4    2 0xffffffff80eb0000 dc40     zlib.ko

aber er versucht nicht, ad4s1d zu attachen. Wo übersehe ich etwas?

-Christian.
 
Und dann am besten noch
Code:
kern.geom.eli.visible_passphrase=2
in der /boot/loader.conf setzen, dann siehst du die eingegebenen Zeichen als '*'.
Leider verschluckt die Eingabe ab und zu mal ein paar Tastaturanschläge, mit der Einstellung oben kann man das dann direkt sehen.
 
Sauber. "-b" hat geholfen, leider geht's nicht mit einem Keyfile - was aber auch egal ist. Das PW selbst ist "lang genug" :) Danke auch für den Tip mit dem "visible password", genial.

So lüppt' det.

Kann ich nun eigentlich getrost ad0s1a leer machen (bis auf fstab, boot) ?

LG,
Christian.
 
Er meint .eli an den Namen des Swapdevices anzuhängen. Die rc Scripts sind enthalten die nötige Automagie um daraus zu schlussfolgern sie mögen doch bitte geli onetime verwenden. Es erstellt einen zufälligen Key arbeitet aber sonst wie GELI mit Passwort.
 
Er meint .eli an den Namen des Swapdevices anzuhängen. Die rc Scripts sind enthalten die nötige Automagie um daraus zu schlussfolgern sie mögen doch bitte geli onetime verwenden. Es erstellt einen zufälligen Key arbeitet aber sonst wie GELI mit Passwort.

Just so.

Code:
[root@mbt ~]# cat /etc/fstab
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad4s1b.eli         none            swap    sw              0       0
/dev/ad4s1d.eli         /               ufs     rw              1       1
/dev/ad4s1a             /boot           ufs     rw              1       1
[root@mbt ~]# swapinfo
Device          1K-blocks     Used    Avail Capacity
/dev/ad4s1b.eli   3072152        0  3072152     0%
 
Es geht alles. Bis auf eins.

Beim Boot will der loader den kernel in /boot/kernel/kernel haben. Auf ad4s1a liegt auch alles in /boot (und eine fstab in /etc/fstab). Leider erwartet ein "make installkernel" das boot dir gemounted unter /boot. Da jedoch ad4s1a als /boot unterhalb von / (ad4s1d.eli) liegt, installiert er es nicht nach /boot/boot/ sondern "nur" nach /boot/. Was zur folge hat, dass beim boot der Loader kein /boot/kernel/kernel hat, sondern lediglich ein /kernel/kernel.

Entweder ich kann den loader dazu bewegen, von / statt /boot zu booten oder ich bringe irgendwie "make installkernel" bei, nach /boot/boot zu installieren, statt nur /boot.

Das ist aber auch "das einzige" Problem.

-Christian.
(ps: wenn einer Rat weiss, das wär echt Knorke.)
 
Das Problem lässt sich einfach mit hilfe von Symlinks umgehen. Mounte dein unverschlüsseltes Dateisystem nach /insec und ersetze /boot durch einen Symlink auf /insec/boot.
 
es sollte doch auch einfach mit DESTDIR=... make installkernel KERNCONF... funktionieren, oder? so kann man doch auch das system auf nen usb-stick nageln
 
Ich hab das nun so gelöst, dass ich ad4s1a nach /mnt/boot gemounted habe, und ein symlink von /boot/boot nach /boot. Fluppt ordentlich.

Leider spammt der Kernel mich noch mit Messages beim Bootup zu, so dass die Passwort-Eingabe von Geli im USB Krams untergeht. Ich hab mal versucht, im loader.conf die Console auf mute zu stellen, aber das ist "etwas" zuviel mute.

Kann man irgendwie den kernel auf "Halts Maul!" einstellen oder zumindest die passworteingabe etwas dominanter machen?

-Chris.
 
Nein, das geht leider nicht. Die Treiber werden geladen und wenn sie so weit sind, spucken sie ohne Rücksicht auf Verluste ihre Ausgabe aus...
 
.... oder zumindest die passworteingabe etwas dominanter machen .....
Code:
CTRL-R  (STRG-R)
stellt den prompt wieder her. (Ungetestet mit geli) Sehr hilfreich bei Treiberspam.
 
Irritierend ist auch, wenn du eine USB Tastatur hast, die wird (bei mri zumindest) erst nach dem Prompt erkannt ;) Aber man gewoehnt sich dran, ich tipps halt nun ein wenn die Meldung vom USB Keyboard kommt..
 
Warum auch immer man sowas will...

Notebooks, die gestohlen werden könnten,
Leute mit NAS die Angst haben, jemand könne ungewollt das Ding mitnehmen und einsehen,
Paranoide für ihre Workstations,
Telekomunikationsunternehmen, die gemäß TKG für "ordentlich Sicherheit" sorgen müssen,
[beliebig viele Beispiele hier einfügen].
 
Ich glaube oenone bezieht sich eher darauf warum man die ganze Platte verschlüsselt. Da wäre Fehlervermeidung ein Grund. Viele verschlüsseln nur Swap und $HOME. Das ist nur blöd, wenn man dann was in /tmp oder teilweise auch in /var hat (nicht nur logs). Eventuell macht sich der eine oder andere auch um manches in /etc sorgen. Außerdem kann man, wenn man ganz paranoid ist damit auch relativ gut vor Offline-Modifikationen am System schützen. Wenn der unverschlüsselte Teil klein ist kann man besser darauf aufpassen und ihn eventuell sogar auf ein read-only Medium packen.
 
Zurück
Oben