Verschlüsseltes (Etch)-System mit USB-Stick starten
Verschlüsseltes (Etch)-System mit USB-Stick starten
Hallo,
ich habe eine folgense Idee; Ich möchte mein Debian-System so einrichten, dass es beim booten/starten einen Keyfile vom USB-Stick benutzt um die Platten zu mounten.
Ich habe es geschafft das System so mit LVM zu installieren, dass es beim Starten nach einer Passphrse fragt (ich weiß man kann es einfach vom Installer machen, aber ich habe es so manuell geschafft).
Ich habe versucht mit dem installer bissle rumzuspielen, habe bei der verschlüsselung zufälligen Schlüssel verwendet, aber ich weiß nicht wo der zufällige Schüssel gespeichert wird. Das ergebniss war, dass der Rechner beim booten anhält un mir sagt, dass er auf das Mounten von der LVM-Partition wartet mit dem Wurzelverzeichniss.
Ich weiß nciht, ob ich diese Funktionalität mit dem zufälligem Schlüssel falsch verstanden habe, aber ich dachte es macht ein Keyfile. Nichts desto trotz, selbst wenn ich es falsch gemacht habe, kann mir jemand helfen und einen weg zeigen, am besten so, dass alles wärend der installation einrichten kann, vielleicht im expert Modus.
(Was mcih noch gerne interessieren würde, welche verschlüssungsmethode ich verwenden soll, da gibt es so viele Möglichkeiten)(Und dm-crypt oder AES-loopback oder so).
Danke.
ich habe eine folgense Idee; Ich möchte mein Debian-System so einrichten, dass es beim booten/starten einen Keyfile vom USB-Stick benutzt um die Platten zu mounten.
Ich habe es geschafft das System so mit LVM zu installieren, dass es beim Starten nach einer Passphrse fragt (ich weiß man kann es einfach vom Installer machen, aber ich habe es so manuell geschafft).
Ich habe versucht mit dem installer bissle rumzuspielen, habe bei der verschlüsselung zufälligen Schlüssel verwendet, aber ich weiß nicht wo der zufällige Schüssel gespeichert wird. Das ergebniss war, dass der Rechner beim booten anhält un mir sagt, dass er auf das Mounten von der LVM-Partition wartet mit dem Wurzelverzeichniss.
Ich weiß nciht, ob ich diese Funktionalität mit dem zufälligem Schlüssel falsch verstanden habe, aber ich dachte es macht ein Keyfile. Nichts desto trotz, selbst wenn ich es falsch gemacht habe, kann mir jemand helfen und einen weg zeigen, am besten so, dass alles wärend der installation einrichten kann, vielleicht im expert Modus.
(Was mcih noch gerne interessieren würde, welche verschlüssungsmethode ich verwenden soll, da gibt es so viele Möglichkeiten)(Und dm-crypt oder AES-loopback oder so).
Danke.
Re: Verschlüsseltes (Etch)-System mit USB-Stick starten
Ich schätze mal ein zufälliger Schlüssel ist nur sinnvoll, wenn man swap oder /tmp verschlüsselt, die eh keinen Neustart überleben.xontero hat geschrieben: Ich habe versucht mit dem installer bissle rumzuspielen, habe bei der verschlüsselung zufälligen Schlüssel verwendet, aber ich weiß nicht wo der zufällige Schüssel gespeichert wird. Das ergebniss war, dass der Rechner beim booten anhält un mir sagt, dass er auf das Mounten von der LVM-Partition wartet mit dem Wurzelverzeichniss.
- Incom
- Beiträge: 417
- Registriert: 09.11.2003 13:35:27
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Paderborn
-
Kontaktdaten:
Ich würde dm-crypt und luks verwenden, da kannst du in der /etc/default/cryptdisks angeben dass ein bestimmtes device (zb dein usb-stick) vor dem entschlüsseln der partitionen gemountet wird. So kannst du als Keyfile einfach eine Datei vom Usb-Stick verwenden.
Hab das hier und es läuft recht problemlos.
Gruß,
Incom
PS: Eventuell hilft dir http://wiki.debianforum.de/Sicherheit
Hab das hier und es läuft recht problemlos.
Gruß,
Incom
PS: Eventuell hilft dir http://wiki.debianforum.de/Sicherheit
Du suchst eine Schritt-für-Schritt Anleitung? Dann schau im Wiki nach!
Gilt das auch für ein verschlüsseltes "/", dessen keys dann z.B. auf einem USB-Stick liegen ?Incom hat geschrieben:Ich würde dm-crypt und luks verwenden, da kannst du in der /etc/default/cryptdisks angeben dass ein bestimmtes device (zb dein usb-stick) vor dem entschlüsseln der partitionen gemountet wird. So kannst du als Keyfile einfach eine Datei vom Usb-Stick verwenden.
Ist es eigentlich auch möglich direkt vom USB-Stick bzw.einer CD zu booten um danach dann die komplett verschlüsselte Festplatte (incl./boot Partition) zu entschlüsseln und das Linuxsystem von dieser zu starten?Incom hat geschrieben:Ich würde dm-crypt und luks verwenden, da kannst du in der /etc/default/cryptdisks angeben dass ein bestimmtes device (zb dein usb-stick) vor dem entschlüsseln der partitionen gemountet wird. So kannst du als Keyfile einfach eine Datei vom Usb-Stick verwenden.
Wobei es schick wäre nicht nur die /boot Partition einfach auf die CD auszulagern, sondern nach dem Linuxstart via CD den Kernel von der Festplatte "nachzuladen", dann könnte man nämlich diesen Kernel updaten ohne eine neue CD zu benötigen.
Vorteil dieser Lösung wäre auch, dass man bei physikalischem Zugriff auf den Rechner nicht einfach den Kernel in der /boot Partition der Festplatte patchen könnte, sodass z.B. ein Keylogger aktiv wird.
- Incom
- Beiträge: 417
- Registriert: 09.11.2003 13:35:27
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Paderborn
-
Kontaktdaten:
Auf einem verschlüsseltem / gibt es afaik auch kein /etc, so dass das da nicht so einfach geht.uljanow hat geschrieben:Gilt das auch für ein verschlüsseltes "/", dessen keys dann z.B. auf einem USB-Stick liegen ?Incom hat geschrieben:Ich würde dm-crypt und luks verwenden, da kannst du in der /etc/default/cryptdisks angeben dass ein bestimmtes device (zb dein usb-stick) vor dem entschlüsseln der partitionen gemountet wird. So kannst du als Keyfile einfach eine Datei vom Usb-Stick verwenden.
Prinzipiell müsste man von einem USB-Stick oder einer CD booten können (machen ja die ganzen Live-CDs), allerdings denke ich nicht dass man den Kernel nachladen kann. Zum Entschlüsseln muss ja schon ein Kernel da sein.Ipeyote hat geschrieben:st es eigentlich auch möglich direkt vom USB-Stick bzw.einer CD zu booten um danach dann die komplett verschlüsselte Festplatte (incl./boot Partition) zu entschlüsseln und das Linuxsystem von dieser zu starten?
Wobei es schick wäre nicht nur die /boot Partition einfach auf die CD auszulagern, sondern nach dem Linuxstart via CD den Kernel von der Festplatte "nachzuladen", dann könnte man nämlich diesen Kernel updaten ohne eine neue CD zu benötigen.
Vorteil dieser Lösung wäre auch, dass man bei physikalischem Zugriff auf den Rechner nicht einfach den Kernel in der /boot Partition der Festplatte patchen könnte, sodass z.B. ein Keylogger aktiv wird.
Gruß,
Incom
Du suchst eine Schritt-für-Schritt Anleitung? Dann schau im Wiki nach!
Ja, man hätte ja 2 Kernel einen von der CD mit welchem man die Festplatte entschlüsseln könnte. Der 2te Kernel, den man bei Bedarf auch updaten kann läge auf der Festplatte (verschlüsselt).Incom hat geschrieben:...
Prinzipiell müsste man von einem USB-Stick oder einer CD booten können (machen ja die ganzen Live-CDs), allerdings denke ich nicht dass man den Kernel nachladen kann. Zum Entschlüsseln muss ja schon ein Kernel da sein.
Gruß,
Incom
Nachladen könnte evtl. mit kexec klappen. (siehe z.B. http://packages.debian.org/unstable/admin/kexec-tools).
Soweit der Plan... obs klappen kann weiss ich leider auch nicht
![Wink ;)](./images/smilies/icon_wink.gif)
- Incom
- Beiträge: 417
- Registriert: 09.11.2003 13:35:27
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Paderborn
-
Kontaktdaten:
Wär bestimmt mal interessant sowas zu versuchen (falls es nicht schon irgendwer gemacht hat), allerdings fehlt mir dafür im Moment definitiv die Zeit.
Gruß,
Incom
Gruß,
Incom
Du suchst eine Schritt-für-Schritt Anleitung? Dann schau im Wiki nach!
Ich habs nicht getestet, aber die Schritte müssten doch sein:
- Das Live Medium am besten ROM starten um die verschlüsselte / lesbar zu machen
- dann den 2. Kernel in den Speicher laden und bei der cmdline root= anpassen. z.B. so
- /root unmounten und rebooten
Man müsste dann aber das Passwort 2x eingeben.
- Das Live Medium am besten ROM starten um die verschlüsselte / lesbar zu machen
- dann den 2. Kernel in den Speicher laden und bei der cmdline root= anpassen. z.B. so
Code: Alles auswählen
kexec -l /root/vmlinuz --initrd=/root/initrd.img --append="root=/dev/sda1 ..."
Code: Alles auswählen
kexec -e
Hmm, wenn man das System mit einer passphrase verschluesselt, kommt beim starten eine Aufforderung die Passphrase inezutippen.Incom hat geschrieben:Ich würde dm-crypt und luks verwenden, da kannst du in der /etc/default/cryptdisks angeben dass ein bestimmtes device (zb dein usb-stick) vor dem entschlüsseln der partitionen gemountet wird. So kannst du als Keyfile einfach eine Datei vom Usb-Stick verwenden.
Hab das hier und es läuft recht problemlos.
Gruß,
Incom
D.h. irgendwas führt irgendwas aus, damit diese abfrage kommt, sei es grub oder irgendwas in der unverschlüsselten /boot partition, kann diesem irgendwas nicht sagen, dass er stattdessen einen Keyfile benutzt?
Un noch was, wenn ich eine Partition mit einer Passphrse verschlüsselt habe, kann ich es nachher in eine Keyfile verschlüsselung umwandeln?
Danke
Ja, so ungefähr sollte es doch hoffentlich funktionieren.uljanow hat geschrieben:Ich habs nicht getestet, aber die Schritte müssten doch sein:
- Das Live Medium am besten ROM starten um die verschlüsselte / lesbar zu machen
- dann den 2. Kernel in den Speicher laden und bei der cmdline root= anpassen. z.B. so- /root unmounten und rebootenCode: Alles auswählen
kexec -l /root/vmlinuz --initrd=/root/initrd.img --append="root=/dev/sda1 ..."
Man müsste dann aber das Passwort 2x eingeben.Code: Alles auswählen
kexec -e
Die 2-malige Eingabe des Passworts könnte man sich ja evtl. schenken, wenn man das in einer initrd unterbringt. Die ist ja dann sowieso verschlüsselt.
- Incom
- Beiträge: 417
- Registriert: 09.11.2003 13:35:27
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Paderborn
-
Kontaktdaten:
Ja, kann man auch aber dann muss man das anders als mit den mitgelieferten Scripten machenxontero hat geschrieben:Hmm, wenn man das System mit einer passphrase verschluesselt, kommt beim starten eine Aufforderung die Passphrase inezutippen.
D.h. irgendwas führt irgendwas aus, damit diese abfrage kommt, sei es grub oder irgendwas in der unverschlüsselten /boot partition, kann diesem irgendwas nicht sagen, dass er stattdessen einen Keyfile benutzt?
Wenn du luks verwendest geht das.xontero hat geschrieben:Un noch was, wenn ich eine Partition mit einer Passphrse verschlüsselt habe, kann ich es nachher in eine Keyfile verschlüsselung umwandeln?
Gruß,
Incom
Du suchst eine Schritt-für-Schritt Anleitung? Dann schau im Wiki nach!
Du hast mir mehr oder weniger die Wörter aus den Fingern gesogen.
Ich habe auf meinem Notebook die root und swap Partition verschlüsselt mit LUKS. Die boot Partition ist unverschlüsselt, dass ganze funzt auch soweit ganz wunderbar. Ich habe nun einen weiteren Key hinzugefügt, der in einem Keyfile abgelegt ist. Dieses Keyfile möchte ich unverschlüsselt auf der boot partition ablegen und automatisch einlesen, wenn ich den Rechner hochfahre. Das das keinen Sinn macht ist mir auch klar: Wenn ich zuhause bin, hängt eine USB Platte dran und davon soll der Rechner booten, von unterwegs bootet er von der lokalen disk, auf der das Keyfile natürlich nicht abgelegt ist.
Mit geht's hautpsächlich nur darum, dass wenn mein Notebook gestohlen wird, dass nicht jeder auf die Daten zugreiffen kann.
Ich denke, dass müsste irrgendwie mit der initrd abgewickelt werden (das luks beim booten das keyfile nimmt). Ich habe noch folgendes gefunden:
http://nl.gentoo-wiki.com/SECURITY_Encr ... _with_LUKS
Da wird etwas detailierter auf den bootvorgang eingegangen, aber wie ich das nun in mein System reinbringe, ist mir ein Rätsel.
gruss
Ich habe auf meinem Notebook die root und swap Partition verschlüsselt mit LUKS. Die boot Partition ist unverschlüsselt, dass ganze funzt auch soweit ganz wunderbar. Ich habe nun einen weiteren Key hinzugefügt, der in einem Keyfile abgelegt ist. Dieses Keyfile möchte ich unverschlüsselt auf der boot partition ablegen und automatisch einlesen, wenn ich den Rechner hochfahre. Das das keinen Sinn macht ist mir auch klar: Wenn ich zuhause bin, hängt eine USB Platte dran und davon soll der Rechner booten, von unterwegs bootet er von der lokalen disk, auf der das Keyfile natürlich nicht abgelegt ist.
Mit geht's hautpsächlich nur darum, dass wenn mein Notebook gestohlen wird, dass nicht jeder auf die Daten zugreiffen kann.
Ich denke, dass müsste irrgendwie mit der initrd abgewickelt werden (das luks beim booten das keyfile nimmt). Ich habe noch folgendes gefunden:
http://nl.gentoo-wiki.com/SECURITY_Encr ... _with_LUKS
Da wird etwas detailierter auf den bootvorgang eingegangen, aber wie ich das nun in mein System reinbringe, ist mir ein Rätsel.
gruss
Hallo,
da ich nciht alleine mit dieser Idee bin, möchte ich mich nochmal an alle wenden, vielleicht weiß jemand wenigstens bisslewas.
Habe bei mir auch ausprobiert einen Keyfile hinzuzufügen, klappte auch, aber ich weiß nicht wo, bzw. was in der partition /boot ich verändernmuss, damit er mich nicht nach einer Passphrase fragt, sondern eine Keyfile benutz, sei es auf der boot Partition oder auf einem USB-Stick, vorausgesetzt ich kann es davor mounten lassen, bevor er zu diem Punkt kommt.
Ich meine wo steht es, was der Rechner am anfang machen soll, vielleicht kann man da ansetzen?
Danke vielmals.
PS: Vielleicht sollte dieser Thread in die Scriptig-Abteilung
da ich nciht alleine mit dieser Idee bin, möchte ich mich nochmal an alle wenden, vielleicht weiß jemand wenigstens bisslewas.
Habe bei mir auch ausprobiert einen Keyfile hinzuzufügen, klappte auch, aber ich weiß nicht wo, bzw. was in der partition /boot ich verändernmuss, damit er mich nicht nach einer Passphrase fragt, sondern eine Keyfile benutz, sei es auf der boot Partition oder auf einem USB-Stick, vorausgesetzt ich kann es davor mounten lassen, bevor er zu diem Punkt kommt.
Ich meine wo steht es, was der Rechner am anfang machen soll, vielleicht kann man da ansetzen?
Danke vielmals.
PS: Vielleicht sollte dieser Thread in die Scriptig-Abteilung
Wenn die root-Partition verschlüsselt ist, wird das script unter /usr/share/initramfs-tools/scripts/local-top/cryptroot ausgefürt. Da gibt es auch eine gleichnamige Datei die während der initrd-Erstellung ausgeführt wird. Oder einfachxontero hat geschrieben:Ich meine wo steht es, was der Rechner am anfang machen soll, vielleicht kann man da ansetzen?
Code: Alles auswählen
man initramfs-tools
Heureka!
Keine Ahnung, wieso ich das übersehen habe mit dem cryptroot script, aber das ist logischerweise die Lösung:
Irrgendwo im Script /usr/share/initramfs-tools/scripts/local-top/cryptroot müssen die Zeilen wie folgt geändert werden (bei mir ab Zeile 152 [Ubuntu 6.10]), wichtig ist die -d option mit der Angabe des Keyfiles. (das ich z.B. mit "head /dev/urandom >/home/test/luks.key" erstellt habe):
und im File /usr/share/initramfs-tools/hooks/cryptroot sollte fast am Schluss noch das Key file kopiert werden, was natürlich vom Pfad und Filenamen her mit dem oben angegebenen korrespondieren muss (option -d):
In dem Beispiel heisst das Key File luks.key und ist im /home/test/ Verzeichnis abgelegt. Achte darauf das keine Backup Files in den Verzeichnissen der alten Files vom Editor zurückbleiben (z.B. "cryptroot~").
Danach natürlich noch das image erstellen lassen mit "update-initramfs -u ALL" und rebooten. Falls es nicht intelligent ist, das iniramfs auf der normalen Bootpartition zu erstellen, weil sie im gleichen System ist (also nicht USB oder so), so kann das auch mit "mkinitramfs -o /home/test/initrd.img-2.6.17-11-generic" in ein anderes Verzeichnis erstellt werden.
Kurz noch zur Erklärung:
Das key File muss nirrgens auf der /boot Partition abgelet werden, da es mittels dem hook-Script in das initrd image eingepackt wird, zusammen mit dem ersten Script, dass ich oben beschrieben habe, dieses wird beim booten ausgeführt.
Ich habe das alles im VMWare getestet, was natürlich razfatz ging, da ich bei einem fehler wieder den snapshot retournieren konnte. Wer vor dem boot noch sicher sein möchte, ob das image korrekt gebaut wurde und auch das luks.key am richtigen Ort ist, kann folgendes machen:
mkdir /tmp/initramfs
cd /tmp/initramfs
gunzip -c -9 /boot/initrd.img-2.6.17-11-generic | cpio -i -d -H newc --no-absolute-filenames
Das ganze müsste dann in etwa so aussehen:
luks.key ist hier im "root" dir...
viel spass
cu
![Laughing :lol:](./images/smilies/icon_lol.gif)
Keine Ahnung, wieso ich das übersehen habe mit dem cryptroot script, aber das ist logischerweise die Lösung:
Irrgendwo im Script /usr/share/initramfs-tools/scripts/local-top/cryptroot müssen die Zeilen wie folgt geändert werden (bei mir ab Zeile 152 [Ubuntu 6.10]), wichtig ist die -d option mit der Angabe des Keyfiles. (das ich z.B. mit "head /dev/urandom >/home/test/luks.key" erstellt habe):
Code: Alles auswählen
# prepare commands
if /sbin/cryptsetup isLuks $cryptsource > /dev/null 2>&1; then
cryptcreate="/sbin/cryptsetup -d luks.key luksOpen $cryptsource $crypttarget"
else
cryptcreate="/sbin/cryptsetup -c $cryptcipher -s $cryptsize -h $crypthash -d luks.key create $crypttarget $cryptsource"
fi
Code: Alles auswählen
# Allow the correct keymap to be loaded if possible
if [ -e /bin/loadkeys -a -r /etc/console/boottime.kmap.gz ]; then
copy_exec /bin/loadkeys /bin/
cp /etc/console/boottime.kmap.gz $DESTDIR/etc/
fi
cp /home/test/luks.key ${DESTDIR}/luks.key
# Done
exit 0
Danach natürlich noch das image erstellen lassen mit "update-initramfs -u ALL" und rebooten. Falls es nicht intelligent ist, das iniramfs auf der normalen Bootpartition zu erstellen, weil sie im gleichen System ist (also nicht USB oder so), so kann das auch mit "mkinitramfs -o /home/test/initrd.img-2.6.17-11-generic" in ein anderes Verzeichnis erstellt werden.
Kurz noch zur Erklärung:
Das key File muss nirrgens auf der /boot Partition abgelet werden, da es mittels dem hook-Script in das initrd image eingepackt wird, zusammen mit dem ersten Script, dass ich oben beschrieben habe, dieses wird beim booten ausgeführt.
Ich habe das alles im VMWare getestet, was natürlich razfatz ging, da ich bei einem fehler wieder den snapshot retournieren konnte. Wer vor dem boot noch sicher sein möchte, ob das image korrekt gebaut wurde und auch das luks.key am richtigen Ort ist, kann folgendes machen:
mkdir /tmp/initramfs
cd /tmp/initramfs
gunzip -c -9 /boot/initrd.img-2.6.17-11-generic | cpio -i -d -H newc --no-absolute-filenames
Das ganze müsste dann in etwa so aussehen:
Code: Alles auswählen
root@test-desktop:/tmp# mkdir /tmp/initramfs
root@test-desktop:/tmp# cd /tmp/initramfs
root@test-desktop:/tmp/initramfs# gunzip -c -9 /boot/initrd.img-2.6.17-11-generic | cpio -i -d -H newc --no-absolute-filenames
32058 blocks
root@test-desktop:/tmp/initramfs# ls -altr
total 48
drwxr-xr-x 12 root root 4096 2007-04-15 20:08 scripts
drwxr-xr-x 2 root root 4096 2007-04-15 20:08 modules
drwxr-xr-x 4 root root 4096 2007-04-15 20:08 lib
-rwxr-xr-x 1 root root 2749 2007-04-15 20:08 init
drwxr-xr-x 3 root root 4096 2007-04-15 20:08 conf
drwxr-xr-x 2 root root 4096 2007-04-15 20:08 bin
drwxrwxrwt 5 root root 4096 2007-04-15 20:08 ..
drwxr-xr-x 3 root root 4096 2007-04-15 20:08 usr
drwxr-xr-x 2 root root 4096 2007-04-15 20:08 sbin
-rw-r--r-- 1 root root 1024 2007-04-15 20:08 luks.key
drwxr-xr-x 4 root root 4096 2007-04-15 20:08 etc
drwxr-xr-x 10 root root 4096 2007-04-15 20:08 .
root@test-desktop:/tmp/initramfs# grep "luks.key" scripts/local-top/cryptroot
cryptcreate="/sbin/cryptsetup -d luks.key luksOpen $cryptsource $crypttarget"
cryptcreate="/sbin/cryptsetup -c $cryptcipher -s $cryptsize -h $crypthash -d luks.key create $crypttarget $cryptsource"
root@test-desktop:/tmp/initramfs#
viel spass
cu