Systempartition verschlüsseln

izi

Member
Hi @all,
ich möchte ein vollverschlüsseltes System, habe aber keine Ahnung wie ich das anstellen soll, oder nach was ich genau suchen müsste. Ich bräuchte so eine Step-by-Step Anleitung. Bin schon erfahren auf der Konsole und weiß mir auch unter Linux gut zu helfen, aber mit FreeBSD ist das hier mein erster Versuch.
Im Prinzip soll halt alles verschlüsselt sein (inkl. Swap) und beim booten nach einem Passwort zur Entschlüsselung gefragt werden.
Hat dazu jemand was?
THX
Michi
 

izi

Member
Das funktioniert aber doch nur mit ZFS und auch nur mit der ganzen Platte. Auf der Festplatte ist aber noch Windows10, das ich gerne behalten würde.
 

mr44er

moderater Moderator
Teammitglied
Auf der Festplatte ist aber noch Windows10, das ich gerne behalten würde.
Wie hätte ich das erraten sollen? ;)

Grundlegend rate ich generell bei 'Versuchen' ab, wenn die Wahrscheinlichkeit hoch ist, dass man sich Daten grillt. Hier ist sogar noch die Möglichkeit geboten, dass Windows gar nicht mehr bootet, wenn man an den Partitionen fummelt. Da ist ratzfatz was gelöscht oder überschrieben und dann gibts Geschrei.

Ich bräuchte so eine Step-by-Step Anleitung
Die Suchworte wären "dualboot freebsd windows10" bei der Suchmaschine deiner Wahl.
Führe nicht alles blind aus oder tippe nach, was auf Webseiten so steht. Genau nachdenken und penibel prüfen, wenn es um Partitionen geht.

Hast du ein Backup? Ist das so angelegt, dass du es auf eine andere Platte bootfähig wiederherstellen könntest?
Ist das Windows auf GPT oder MBR installiert? Kennst du dich mit secure boot aus?

Aber ganz ehrlich:
Häng eine andere Festplatte dazu und installiere auf diese. Betriebssysteme per Einzelplatte getrennt ist viel sicherer und stressfreier.
Noch besser wäre es, wenn du erste Versuche in einer VM oder gar einem Zweitrechner machst.
 

izi

Member
Hi!
Erst mal danke für alle Antworten. Es handelt sich um einen Laptop, von daher ist eine zweite Platte nicht möglich.
mir geht es auch nicht um die Installation, sondern wie ich FreeBSD verschlüsseln kann.
Das man nicht blind Befehle per Copy & Paste eingibt ist mir bewusst, ich mache schon seit über 20 Jahren mit Linux rum.

Mir ist es grundsätzlich wichtig, gerade bei Laptops, alles zu verschlüsseln. Wenn das mit BSD nicht geht, kommt es leider nicht in Frage, was schade wäre, da es mir sehr gut gefällt

lg
Michi
 

dev0

Rock Hopper
Hej,

FreeBSD ist perfekt für die volle Festplattenverschlüsselung geeignet. Ich hatte mir mal Notizen für die Installation von FreeBSD und OpenBSD damitgemacht. Hier ist der FreeBSD Teil. Danach habe ich FreeBSD auf meinem Thinkpad X240 installiert und es hat wunderbar funktioniert.

Ich hoffe, es hilft dir weiter. Partitionsgrößen und Gerätenamen können in deinem Fall natürlich abweichten.

Zuerst ist FreeBSD zu installieren. Dazu das Installationsmedium starten und
dann in das Live-System wechseln. Auf keinen Fall den Standarddialog
zur Installation folgen.

Es werden zwei Partitionen für FreeBSD benötigt. Eine für den Bootcode
und eine für den ZFS Pool. Zusätzlich muß natürlich noch eine EFI
Systempartition erstellt werden.

Zunächst erst ein leere GPT Partitionstabelle erstellen. Die Option -s
bezeichnet das Partitionsschema.

Code:
# gpart create -s gpt ada0

Nun die erforderlichen Partitionen anlegen und dabei genug Platz für
die OpenBSD Installation lassen. Dieses Beispiel verwendet eine SSD mit
168 G Speicherplatz. Die Option -a gibt die Ausrichting (Alignment)
an, -s bezeichnent die Größe der Partition, -t den Typ und -l den
Namen (Label).

Code:
# gpart add -a 4k -s 128k -t freebsd-boot -l freebsd-boot ada0
# gpart add -a 4k -s 80G -t freebsd-zfs -l freebsd-zroot ada0
# gpart add -a 4k -s 8G -t freebsd-swap -l freebsd-swap ada0

Das Partitionsschema sieht nun so aus:

Code:
Index  Typ
1           EFI System Partition                                    
2           freebsd-boot
3           freebsd-swap
4           freebsd-zfs

Jetzt muß der Bootcode in die Boot-Partition installiert werden. Die
Option -p gibt an, welcher Bootcode installiert werden soll und -p
gibt an, von welcher Art die Boot-Partition ist, in diesem Fall also
eine ZFS Partition auf einem GPT Laufwerk.

Code:
# gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 2 ada0

Zunächst muß die Verschlüsselung durchgeführt werden. Dazu müssen
noch die Kernel-Module geom_eli und aesni geladen werden.

Code:
# kldload geom_eli
# kldload aesni

Die Verschlüsselung erfolgt danach mit

Code:
# geli init -b -g -e AES-XTS -l 256 -s 4096 /dev/ada0p4

Anschließend ist die Partition zu enschlüsseln, damit darauf die
Installation erfolgen kann.

Code:
# geli attach /dev/ada0p4

Nach der Eingabe des Kennwortes ist die Partition unter
Code:
/dev/ada0p4.eli

zugängig. Nun kann darauf der ZFS Pool angelegt werden, der die Dateisystem enthalten
soll. Dazu ist zunächst auf die Ausrichtung auf 4k Sektoren zu achten:

Code:
# sysctl vfs.zfs.min_auto_ashift=12

Hierbei bezeichnet 12 die Ausrichtung auf 4096 Byte Sektoren und 9 die
Ausrichtung auf 512 Byte Sektoren.

Dann kann der ZFS Pool erzeugt werden:

Code:
# zpool create -o altroot=/mnt -O atime=off -m none -f  zroot  /dev/ada0p4.eli

Der Pool ist jetzt unter /mnt verfügbar. Nun sind die Einhängepunkte
für die Dateisysteme zu erzeugen und zu konfigurieren.

Zunächst sind die Dateisysteme zu erzeugen:

Code:
# zfs create -o mountpoint=none zroot/ROOT
# zfs create -o mountpoint=/ zroot/ROOT/default
# zfs create -o mountpoint=/tmp -o exec=on -o setuid=off zroot/tmp
# zfs create -o mountpoint=/usr -o canmount=off zroot/usr
# zfs create  zroot/usr/home
# zfs create -o setuid=off zroot/usr/ports
# zfs create  zroot/usr/src
# zfs create -o mountpoint=/var -o canmount=off zroot/var
# zfs create -o exec=off -o setuid=off zroot/var/audit
# zfs create -o exec=off -o setuid=off zroot/var/crash
# zfs create -o exec=off -o setuid=off zroot/var/log
# zfs create -o atime=on zroot/var/mail
# zfs create -o setuid=off zroot/var/tmp

Dann muß der Mount Point für root festgelegt werden:

Code:
# zfs set "mountpoint=/zroot" zroot

Die Rechte für temporäre Verzeichnisse und Dateien sind anzupassen:

Code:
# chmod 1777 /mnt/tmp
# chmod 1777 /mnt/var/tmp

Schließlich ist das Dateisystem für den Systemstart festzulegen:

Code:
# zpool set bootfs="zroot/ROOT/default" zroot
[(CODE]

Der Cache für den Pool muß noch konfiguriert werden:

[CODE]
# mkdir -p /mnt/boot/zfs
# zpool set cachefile="/mnt/boot/zfs/zpool.cache" zroot
# zfs set "canmount=noauto" "zroot/ROOT/default"

Nun kann die Installation beginnen. Dazu sind die Archive des Systems
manuell zu entpacken.

Code:
# cd /mnt
# tar xvJf /usr/freebsd-dist/base.txz
# tar xvJf /usr/freebsd-dist/kernel.txz
# tar xvJf /usr/freebsd-dist/lib32.txz
# tar xvJf /usr/freebsd-dist/ports.txz
# tar xvJf /usr/freebsd-dist/src.txz

Anschließend muß die Grundkonfiguration durchgeführt werden, damit das
neue System korrekt starten kann. Dazu in der Datei /mnt/etc/loader.conf
folgendes eintragen:

Code:
kern.geom.label.disk_ident.enable="0"
kern.geom.label.gptid.enable="0"
vfs.root.mountfrom=”zfs:zroot/ROOT/default”
zfs_load=”YES”
aesni_load=”YES”
geom_eli_load=”YES”
loader_logo="beastie"

und in der Datei /tmp/zfs/etc/rc.conf die Einträge

Code:
zfs_enable="YES"
hostname="dirac"
keymap="de.acc.kbd"

Schließlich ist in der Datei /etc/sysctl.conf folgender Eintrag
vorzunehmen:

Code:
vfs.zfs.min_auto_ashift=12

Abschließend ist noch die Swap-Partition durch folgenden Eintrag in
der Datei /etc/fstab zu konfigurieren:

Code:
/dev/ada0p3.eli    none  swap   sw      0       0

Nun ist das System fast einsatzbereit. Lediglich der UEFI Bootloader
muß noch installiert werden. Das passiert wie foigt. Zunächst muß die
EFI Systempartition vorbereitet und eingehängt werden:

Code:
# newfs_msdosfs /dev/ada0p1

Dann einen temporären Mount Point erzeugen und die Partition dort einhängen:

Code:
# mkdir /tmp/efi
# mount -t msdosfs /dev/ada0p1 /tmp/efi

Nun das Zielverzeichnis für den Bootloader anlegen:

Code:
# cd /tmp/efi
# mkdir -p EFI/BOOT

Nun den UEFI Bootloader vom Installationsmedium in das Zielverzeichnis
kopieren:
Code:
# cp /boot/loader.efi EFI/BOOT/BOOTX64.efi

Die Installation ist nun abgeschlossen und das neu installierte System
kann jetzt gestartet werden. Das Kennwort von root sollte sofort nach
dem Neustart gesetzt werden, denn es ist sonst leer.
 

medV2

Well-Known Member
Prinzipiell solltest du mal sagen was du hast und willst.

Am einfachsten ist es über den Installer, aber es sieht so aus als hättets du schon ein System installiert? Das kannst du natürlich nachträglich verschlüsseln, allerdings musst du mit einer live CD arbeiten und die Daten irgendwo zwischensichern, eine on-the-fly verschlüsselung wie bei cryptsetup unter Linux ist nicht möglich.

Eine Möglichkeit mit ZFS hat dev0 ja hier schon geschrieben, wenn dein System schon existiert musst du natürlich nicht die "frischen" Daten aus den Installationsarchiven am Schluss entpacken, sondern das, was du von deinem System weggesichert hast.
Das ganze geht aber natürlich auch mit UFS wenn du kein ZFS am Notebook verwenden willst, da sind dann ein paar Settings zum Schluss anders.

Aber schreib halt mal im detail was du machen willst bevor wir hier rätzeln.
 

pit234a

Well-Known Member
1 EFI System Partition
2 freebsd-boot
wenn man EFI hat und booten will, braucht man nur die EFI-SP und keine freebsd-boot-Partition.
Wenn da schon ein WIN10 mittels EFI bootet, gibt es diese EFI-SP womöglich schon und hoffentlich ist sie dann auch groß genug für einen weiteren Loader (meine waren eine Weile immer unvernünftig klein). Und hoffentlich lässt das Laptop überhaupt zu, irgendwas anderes außer WIN10 überhaupt zu booten. Da hatte ich letztens einen echten Frust mit einem Laptop, wohl HP? bin ich aber nicht mehr sicher.

Doch, was rede ich: dem TE ging es ja gar nicht um diese Fragen der Installation, sondern nur um die Verschlüsselung und wie das mit geli gemacht werden kann, ist oben schön beschrieben und ansonsten verweise ich mal auf einen Nachbar-Thread zum Verschlüsseln, den wir hier doch erst kürzlich hatten.
da wird doch auch eine Menge zum Thema gesagt.
 

izi

Member
Hallo!
Es handelt sich um ein Thinkpad T410. Uralt, aber immernoch mein Lieblings Computer. EFI hat der keins. Er ist in der Lage auch etwas anderes als Win10 zu booten. Partitionsschema muss wohl wegen Win10 auf mbr bleiben.
Was ich will ist einfach neben Win10 ein FreeBSD 13, dass vollverschlüsselt ist und beim booten zur Entschlüsselung nach einem Passwort frägt. Ähnlich wie man das bei Linux mit einem verschlüsselten LVM kennt.

Danke schonmal für die tolle Hilfe.
 

medV2

Well-Known Member
Also möglich ists auf jedenfall, da du schon ein System hast wirst du halt viel Hand anlegen müssen. Die Anleitung von dev0 ist denke ich ein guter Startpunkt dafür.
 

pit234a

Well-Known Member
Was ich will ist einfach neben Win10 ein FreeBSD 13, dass vollverschlüsselt ist und beim booten zur Entschlüsselung nach einem Passwort frägt. Ähnlich wie man das bei Linux mit einem verschlüsselten LVM kennt.
man kennt womöglich, ich selbst nicht und auch verschlüsselte Systeme sind mir ein Graus (was nicht bedeutet, dass ich die Motivation dahinter nicht nachvollziehen könnte oder gar in Frage stellen möchte).
Doch auf einen großen Unterschied möchte ich aufmerksam machen, sofern ich mich da noch richtig entsinne.
GNU/Linux benutzt immer einen Loader, ich nenne den mal Boot-Loader, obwohl damit dann manchmal auch was anderes gemeint ist. Ich sehe sehr häufig den harmlos wirkenden GRUB(2), der es aber im Detail wirklich in sich hat. FreeBSD hat den nicht.
FreeBSD kann vermutlich auch irgendwie damit, aber keine Ahnung.
FreeBSD hat einen Loader, der im MBR Platz findet und der mehrere Systeme zur Boot-Auswahl vorlegen kann. Er ist /boot/boot0 (und nicht /boot/mbr, der keine Interaktivität bietet und nur ein System booten kann) und ich weiß nun nicht, ob der durch den Installer in einem Auto-Modus installiert werden kann.
Solche Änderungen am MBR sind immer ein potenzieller Garant für ein später nicht mehr bootfähiges System. Wenn du zB den boot0 komplett nimmst, überschreibst du die vorhandene Partitionstabelle und verlierst damit quasi dein Windows. Das ist wirklich nicht einfach oder anders gesagt, braucht extreme Vorsicht und ziemlich viel Know-How. Und wirklich gute Backups, also auch vom MBR.
Wie der boot0 funktioniert, kann man aus der boot0cfg(8) entnehmen.

Damit wäre dein mögliches Szenario also in etwa so, dass erst neu partitionieren müsstest, um Platz für FreeBSD und FreeBSD-SWAP zu haben.
Dann die geli-container anlegen und system installieren, wie oben ja beschrieben und so weiter.
Dann die ersten 446Bytes des boot0 in den MBR schreiben und den boot0 evtl passend konfigurieren.
Und dann hoffen, dass alles geklappt hat.
Was nicht sehr wahrscheinlich ist. Meist braucht man für solche Sachen mehrere Anläufe.

Etwas, aber nur ein ganz klein wenig, könnte man sich die Sache vereinfachen, wenn man tatsächlich eine zweite Festplatte (oder besser SSD) nimmt und diese alleine in den PC setzt, bis man Sicherheit in der Abfolge und der Umsetzung der Maßnahmen hat. Das erspart ein evtl mehrfaches Restore des vorhandenen Windows.
Gar nicht so dramatisch langsamer wäre ein System auf USB, vor allem, wenn hier bereits USB3 benutzt werden kann oder eine SD-Karte.

Bevor du nun aber wirklich tief einstiegst, empfehle ich dir erst mal noch den Check, ob deine Grafik überhaupt noch von FreeBSD unterstützt wird. Ich sehe in der Beschreibung etwas von NVIDIA-Quatro und mit irgendwelchen Quatro-Dingern war da mal Ende im Schacht.
 
Oben