Aktuelle Version |
Dein Text |
Zeile 2: |
Zeile 2: |
| | | |
| Der hier beschriebene Ansatz unterscheidet sich von [https://www.bsdwiki.de/System_verschlüsseln_mit_geli(8) diesem Artikel] grundlegend dadurch, dass der Bootloader und der Kernel nicht auf eiem USB-Stick oder externen Bootmedium abgelegt ist sondern unverschlüsselt auf der Platte liegt. | | Der hier beschriebene Ansatz unterscheidet sich von [https://www.bsdwiki.de/System_verschlüsseln_mit_geli(8) diesem Artikel] grundlegend dadurch, dass der Bootloader und der Kernel nicht auf eiem USB-Stick oder externen Bootmedium abgelegt ist sondern unverschlüsselt auf der Platte liegt. |
− | [[Datei:FreeBSD System verschluesseln mit geli(8) Diagramm.png|thumb|450px|Slices und BSD Labels]]
| |
− | __TOC__
| |
− | {{Hinweis|Diesen Artikel habe ich anhand meiner Aufzeichnungen und Erinnerung geschrieben. Ich musste auf dem Weg dahin einige Umwege gehen, weil Zwischenschritte ursprünglich nicht funktioniert hatten. <br />
| |
− | Ich denke dennoch, dass man diese Beschreibung als Rezept nutzen kann, auch wenn sie noch nicht 100% verifiziert ist. Feedback bitte auf der [[Diskussion:FreeBSD/System verschlüsseln mit geli(8)|Diskussionsseite]] oder als Kommentar zum [http://blogs.uugrn.org/freebsdtipps/2009/07/26/system-verschlusseln-mit-geli8/ Artikel im Blog].
| |
− | --[[Benutzer:Rabe|rabe]] 16:49, 26. Jul. 2009 (UTC)}}
| |
| | | |
| == Zielsetzung == | | == Zielsetzung == |
Zeile 33: |
Zeile 28: |
| ;2 Slices (=Partitionen) mit Typ 165 (=FreeBSD) anlegen: | | ;2 Slices (=Partitionen) mit Typ 165 (=FreeBSD) anlegen: |
| :* ca 5GB für /dev/ad0s1 | | :* ca 5GB für /dev/ad0s1 |
− | :* Rest für /dev/ad0s2 | + | :* Rest für /dev/ad0s1 |
| :* BootLoader in MBR installieren | | :* BootLoader in MBR installieren |
| | | |
Zeile 72: |
Zeile 67: |
| Wir legen nun auf /dev/ad0s2 einen geli-Layer. Das "-b" sorgt dafür, dass der Kernel vor dem Mounten von / nach der Passphrase fragt! | | Wir legen nun auf /dev/ad0s2 einen geli-Layer. Das "-b" sorgt dafür, dass der Kernel vor dem Mounten von / nach der Passphrase fragt! |
| <pre> | | <pre> |
− | # geli init -b /dev/ad0s2 | + | # geom init -b /dev/ad0s2 |
− | | |
| </pre> | | </pre> |
| Hier eine nicht zu einfache Passphrase verwenden und gut merken! | | Hier eine nicht zu einfache Passphrase verwenden und gut merken! |
Zeile 106: |
Zeile 100: |
| * ein standard-Label schreiben: | | * ein standard-Label schreiben: |
| <pre> | | <pre> |
− | # bsdlabel -w /dev/ad0s2.eli | + | # bsdlabel -e /dev/ad0s2.eli |
| </pre> | | </pre> |
| | | |
Zeile 147: |
Zeile 141: |
| * bsdlabel schreiben: | | * bsdlabel schreiben: |
| <pre> | | <pre> |
− | # bsdlabel -R ad0s2.eli /tmp/bsdlabel_ad0s2.eli | + | # bsdlabel -R /tmp/bsdlabel_ad0s2.eli |
| </pre> | | </pre> |
− | bsdlabel errechnet die richtigen Werte für ''size'' und ''offset''. | + | bsdlabel erreichnet die richtigen Größen für size und offset. |
| | | |
| Die beiden Schritte ließen sich auch zu "bsdlabel -e" zusammenführen, hier geht allerdings dann die Datei verloren (falls man es modifiziert neu versuchen will). | | Die beiden Schritte ließen sich auch zu "bsdlabel -e" zusammenführen, hier geht allerdings dann die Datei verloren (falls man es modifiziert neu versuchen will). |
Zeile 214: |
Zeile 208: |
| # /usr/local/bin/cpdup -v /usr /geli/usr | | # /usr/local/bin/cpdup -v /usr /geli/usr |
| [...] | | [...] |
− | </pre>
| |
− |
| |
− |
| |
− | === Bootkonfiguration ===
| |
− | Auf /dev/ad0s1a liegt unverschlüsselt das /boot und ein /etc
| |
− |
| |
− | ;/boot/loader.conf ergänzen:
| |
− | <pre>
| |
− | geom_eli_load="YES"
| |
− | </pre>
| |
− |
| |
− | ;/boot/device.hints ergänzen:
| |
− | <pre>
| |
− | hint.kbdmux.0.disabled="1"
| |
− | </pre>
| |
− | (das behebt Probleme bei der Passphrase-Eingabe im Kernel)
| |
− |
| |
− | ;/etc/fstab ändern:
| |
− | <pre>
| |
− | #/dev/ad0s1a / ufs rw 1 1
| |
− | /dev/ad0s2.elia / ufs rw 1 1
| |
− | </pre>
| |
− | Wichtig ist hier nur die Zeile für "/", die vom Bootloader gelesen wird. Für die einzelnen Dateisysteme wird nachher die ad0s2.elia:/etc/fstab verwendet
| |
− |
| |
− | ;/geli/etc/fstab:
| |
− | <pre>
| |
− | # Device Mountpoint FStype Options Dump Pass#
| |
− | /dev/ad0s2.elib none swap sw 0 0
| |
− | /dev/ad0s2.elia / ufs rw 1 1
| |
− | /dev/ufs/VAR /var ufs rw 2 2
| |
− | /dev/ufs/USR /usr ufs rw 2 2
| |
− | /dev/acd0 /cdrom cd9660 ro,noauto 0 0
| |
− | </pre>
| |
− |
| |
− | ;/geli/etc/rc.conf ergänzen:
| |
− | <pre>
| |
− | dumpdev="/dev/ad0s1b" # unencrypted swapspace
| |
− | </pre>
| |
− |
| |
− | === Rebooten ===
| |
− | Einfach mit "reboot" neu starten.
| |
− |
| |
− | In den Kernel-Messages beim Booten sollte dann sinngemäß folgendes erscheinen:
| |
− | <pre>
| |
− | [...]
| |
− | Timecounter "TSC" frequency 1525848984 Hz quality 800
| |
− | Timecounters tick every 1.000 msec
| |
− | firewire0: 1 nodes, maxhop <= 0, cable IRM = 0 (me)
| |
− | firewire0: bus manager 0 (me)
| |
− | ad0: 38204MB <SAMSUNG MP0402H UC100-14> at ata0-master UDMA100
| |
− | acd0: CDRW <QSI CD-RW/DVD-ROM SBW-241/VX11> at ata1-master UDMA33
| |
− | Enter passphrase for ad0s2:
| |
− | GEOM_ELI: Device ad0s2.eli created.
| |
− | GEOM_ELI: Encryption: AES-CBC 128
| |
− | GEOM_ELI: Crypto: software
| |
− | GEOM_LABEL: Label for provider ad0s1a is ufsid/4a6bbf04331e3ba9.
| |
− | GEOM_LABEL: Label for provider ad0s2.elia is ufsid/4a6c7ef8e582dc1d.
| |
− | GEOM_LABEL: Label for provider ad0s2.elia is ufs/ROOT.
| |
− | GEOM_LABEL: Label for provider ad0s2.elid is ufsid/4a6c7f024e59d562.
| |
− | GEOM_LABEL: Label for provider ad0s2.elid is ufs/USR.
| |
− | GEOM_LABEL: Label for provider ad0s2.elie is ufsid/4a6c7f0a80b74113.
| |
− | GEOM_LABEL: Label for provider ad0s2.elie is ufs/VAR.
| |
− | Trying to mount root from ufs:/dev/ad0s2.elia
| |
− | GEOM_LABEL: Label ufs/ROOT removed.
| |
− | GEOM_LABEL: Label ufsid/4a6c7ef8e582dc1d removed.
| |
− | GEOM_LABEL: Label for provider ad0s2.elia is ufsid/4a6c7ef8e582dc1d.
| |
− | GEOM_LABEL: Label for provider ad0s2.elia is ufs/ROOT.
| |
− | GEOM_LABEL: Label ufsid/4a6c7f0a80b74113 removed.
| |
− | GEOM_LABEL: Label ufsid/4a6c7f024e59d562 removed.
| |
− | GEOM_LABEL: Label ufs/ROOT removed.
| |
− | GEOM_LABEL: Label ufsid/4a6c7ef8e582dc1d removed.
| |
− | GEOM_LABEL: Label ufsid/4a6bbf04331e3ba9 removed.
| |
− | </pre>
| |
− |
| |
− | ;Erläuterung:
| |
− | : Nachdem die Platte ad0 erkannt wird, erkennt das Kernelmodul geom_eli (was im Bootloader geladen wird), dass es sich bei ad0s2 um ein geli-device mit dem init-Flag "-b" handelt. Deswegen fragt der Kernel hier nach der Passphrase.
| |
− | : Man hat hier bis zu 3 Versuche (konfigurierbar)
| |
− | : Schlägt alles fehl, kann der Kernel das vom Bootloader angegebene Filesystem /dev/ad0s2.elia nicht mounten, es kommt dann ein "mountroot>"-Prompt. Hier kann man das Maintenance-System auf ad0s1a angeben:
| |
− | <pre>
| |
− | mountroot> ufs:ad0s1a
| |
− | </pre>
| |
− | : ... wobei ":" im US-Layout da liegt, wo man mit einer Deutschen Tastatur Shift-Ö tippen muss.
| |
− |
| |
− |
| |
− | === Afterboot ===
| |
− | * Nach dem Booten sollte, wenn alles geklappt hat, das ganze so aussehen:
| |
− | <pre>
| |
− | # mount
| |
− | /dev/ad0s2.elia on / (ufs, local)
| |
− | devfs on /dev (devfs, local)
| |
− | /dev/ufs/VAR on /var (ufs, local, soft-updates)
| |
− | /dev/ufs/USR on /usr (ufs, local, soft-updates)
| |
− | /dev/ad0s1a on /mnt (ufs, local)
| |
− |
| |
− | # swapinfo
| |
− | Device 1K-blocks Used Avail Capacity
| |
− | /dev/ad0s2.elib 2097152 0 2097152 0%
| |
− | </pre>
| |
− |
| |
− | * Aus der Bootmessage wissen wir ...
| |
− | <pre>
| |
− | GEOM_LABEL: Label for provider ad0s2.elid is ufs/USR.
| |
− | GEOM_LABEL: Label for provider ad0s2.elie is ufs/VAR.
| |
− | </pre>
| |
− | ... dass /dev/ufs/USR und /dev/ufs/VAR Labels auf /dev/ad0s2.eli sind und somit verschlüsselt sind.
| |
− |
| |
− | == Nachbetrachtungen ==
| |
− | === Im Maintenance-System ===
| |
− | * Will man (einmalig) direkt in Maintenance-System booten, kann man auch die Passphrase absichtlich mehrfach falsch eingeben oder den Parameter im Bootmenü ändern.
| |
− |
| |
− | * Will man im Maintenance-System auf die verschlüsselten Dateisysteme zugreifen, so muss man /dev/ad0s2 manuell attachen:
| |
− | <pre>
| |
− | # geli attach /dev/ad0s2
| |
− | (Passphrase eingeben)
| |
− | </pre>
| |
− | Auf der Konsole werden hier alle Filesysteme angezeigt, die auf ad0s2 liegen, diese können wir normale Filesysteme verwendet werden.
| |
− |
| |
− | === Im Normalsystem ===
| |
− | * Will man das Maintenance-System bearbeiten, so kann das einfach gemountet werden:
| |
− | <pre>
| |
− | # mount /dev/ad0s1a /mnt
| |
− | </pre>
| |
− |
| |
− | ;Wichtig: Bei einem Update muss ad0s1a:/boot manuell aktualisiert werden, d.h. nach "make installkernel" ist folgendes zu tun:
| |
− | <pre>
| |
− | (in /usr/src)
| |
− | # make installkernel
| |
− | # mount /dev/ad0s1a /mnt
| |
− | # cpdup /boot/kernel/ /mnt/boot/kernel/
| |
− | </pre>
| |
− |
| |
− | ;Wichtig: jegliche Bootkonfiguration muss auf ad0s1a:/boot stattfinden, denn ad0s2.elia:/boot wird nicht verwendet. Es bietet sich daher an, dieses als Sicherheitskopie zu verwenden:
| |
− | <pre>
| |
− | # mount /dev/ad0s1a /mnt
| |
− | # cpdup /mnt/boot/ /boot/
| |
| </pre> | | </pre> |
| | | |
| == Weblinks == | | == Weblinks == |
− | * [http://blogs.uugrn.org/freebsdtipps/2009/07/26/system-verschlusseln-mit-geli8/ Eintrag im FreeBSD Tipps Blog]
| |
| * [https://www.bsdwiki.de/System_verschlüsseln_mit_geli(8) System verschlüsseln mit geli(8)] bei bsdwiki.de, verfolgt den Ansatz, dass die ganze Platte verschlüsselt wird und ersatzweise von einem USB-Stick gebootet wird. | | * [https://www.bsdwiki.de/System_verschlüsseln_mit_geli(8) System verschlüsseln mit geli(8)] bei bsdwiki.de, verfolgt den Ansatz, dass die ganze Platte verschlüsselt wird und ersatzweise von einem USB-Stick gebootet wird. |
| | | |