Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Deutsches Forum (German) Deutsche Dokumentation
  • Search

Verschlüsseltes Gentoo mit cryptsetup-luks und ohne initrd

Dokumentation, Tipps und Tricks.
Post Reply
  • Print view
Advanced search
1 post • Page 1 of 1
Author
Message
doedel
Guru
Guru
User avatar
Posts: 579
Joined: Sun Feb 05, 2006 7:15 am
Location: Denmark

Verschlüsseltes Gentoo mit cryptsetup-luks und ohne initrd

  • Quote

Post by doedel » Mon Oct 30, 2006 5:07 pm

Ich habe schon einige Howtos dazu durchgearbeitet, aber Anfangs kam ich mit der initrd nicht wirklich zurecht und schliesslich will man ja alles mal selber gemacht haben, also habe ich dies auch getan und gleich das Howto hier geschrieben.
Ich hoffe man kann es gebrauchen.

Ausgangssituation:
Bei mir sah es so aus:
/dev/hda1 /boot (ab 15MB, meine hat 60MB)
/dev/hda2 /swap
/dev/hda3 / (ein installiertes und funktionierendes Gentoo)
/dev/hdc1 [frei]

Das ganze geschah aus dem schon laufenden Gentoo heraus. Sicher lässt sich das auch mit einer LIVE-CD machen (die 2006.1er hat glaube ich sogar Portage mit drin), aber damit habe ich mich nicht mit befasst, kann es ja noch mal machen (oder einer von euch). Es basiert auf einem 2.6er Kernel (im Moment 2.6.17-gentoo-sources), ich weiss allerdings nicht, ob es mit einem 2.4er auch tut. Darunter? Evtl. noch mit dem 2.4er, aber alles andere wage ich zu bezweifeln.

1. Kernel

Zuerst schaut ihr ob euer Kernel folgendes eingebaut hat:

(Ich habe einfach alle Algiorhythmen fest eingebaut, so kann keiner fehlen, aber fühlt euch frei, zu experimetieren und auszuprobieren)

Code: Select all

$ cd /usr/src/linux
$ make menuconfig

--> Cryptographic Options
   --> Alles <*>
--> Device Drivers
   --> Block Devices
     <*> Loopback Device Support
     <*>   Cryptoloop Support
   --> Multi Device Support (RAID and LVM)
     <*> Device Mapper Support
     <*>   Crypt Target Support


Dann natürlich noch eure Dateisysteme, aber das werde ich hier nicht beschreiben, das sollte von vornherein schon klar sein.
Dann speichert ihr eure Konfiguration beim Verlassen von menuconfig und baut euren Kernel:

Code: Select all

$ make bzImage && make modules && make modules_install
$ mount /boot
$ cp arch/i386/boot/bzImage /boot/gentoo-crypt
So, der Kernel wäre fertig, auf zum nächsten Schritt.

2. /boot bearbeiten

Nun bekommt /boot ein Mini-Gentoo verpasst, das zuerst bootet, das verschlüsselte Root-Device mountet, chrootet und dann bootet als wäre es nicht verschlüsselt.
Mein Mini-Linux mit Kernel und Grub hat 6.5MB, also müsste eine Boot-Partition von 12-15MB auf jeden Fall reichen.

Code: Select all

$ ROOT="/boot" USE="make symlinks" emerge -av sys-apps/busybox sys-fs/device-mapper sys-fs/cryptsetup-luks
Nun erstellt ihr die /init-Datei.

Code: Select all

$ touch /boot/init
$ chmod +x /boot/init
$ nano /boot/init
Jetzt seid ihr im Editor Nano und könnt bequem per c&p folgende Init einfügen.

Code: Select all

#!/bin/ash

# Einstellungen fuer das init-script
ROOT_DEV=/dev/hdc1
NEW_ROOT=/mnt/new_root
NEW_ROOT_BOOT=/mnt/new_root/boot
NEW_ROOT_INIT=/sbin/init
PROC_DIR=/proc
MAPPER_DIR=/dev/mapper
ERR_SHELL=/bin/ash
# Ende Einstellungen

clear
echo " Dies ist ein Linux System mit verschluesseltem Root-Device."
echo
echo " * Setze umask .."
umask 022
echo " * Mounte /proc .."
mount -t proc none $PROC_DIR
echo " * Erstelle Ramdisk fuer " $MAPPER_DIR " .."
mount -t tmpfs none $MAPPER_DIR
echo " * Richte " $MAPPER_DIR "/control ein .."
cp /dev/control $MAPPER_DIR
echo " * Mounte Dateisysteme .."
cryptsetup luksOpen $ROOT_DEV root
mount /dev/mapper/root $NEW_ROOT -o rw
echo "   - $NEW_ROOT"
mount --bind / $NEW_ROOT_BOOT
mount -t tmpfs none /etc
cat /proc/mounts > /etc/mtab
mount -o remount,ro $NEW_ROOT
mount -o remount,rw /dev/root
umount /etc
echo "   - $NEW_ROOT_BOOT"
echo " * Starte init.."
exec <dev/console >dev/console 2>&1
exec chroot $NEW_ROOT $NEW_ROOT_INIT

echo " *** INIT KONNTE NICHT GESTARTET WERDEN !!! ***"
echo " * Versuche eine Shell zu starten (" $ERR_SHELL ") .."
exec $ERR_SHELL


# WICHTIG!!! HIER AUF KEINEN FALL KOMMENTARZEICHEN ENTFERNEN!! DIES IST ZUM ANLEGEN NEUER MAPPINGS!!! (BEISPIEL)
#
#   /bin/cryptsetup -c blowfish-cbc-essiv:sha256 -y -s 256 luksFormat /dev/hdc1
#   /bin/cryptsetup luksOpen /dev/hdc1 root
#   mke2fs /dev/mapper/root
#   mkdir /new_root
#   mount /dev/mapper/root /new_root
#
# [ENDE]

Bei "#Einstellungen" muss eigentlich nur ROOT_DEV angepasst werden. Der Rest bleibt im Normalfall so, ich habe das allerdings als Variablen gemacht, falls man mal was ändern will (sinnlose Spielereien), dass man dann nicht das Script immer durchgucken muss, wo man nun was ändern muss.
Speichern --> init fertig.

Nun werden alle nötigen Verzeichnisse in /boot angelegt

Code: Select all

$ mkdir /boot/dev
$ mkdir /boot/dev/mapper
$ mkdir /boot/proc
$ mkdir /mnt/new_root
Und jetzt die nötigen dev-Nodes kopiert. Um dies zu tun muss auf dem "Install-Linux" cryptsetup-luks und device-mapper installiert sein, sowie der Kernel muss wie oben angepasst sein.

Code: Select all

$ emerge -av cryptsetup-luks device-mapper
Jetzt die Nodes.

Code: Select all

$ cp /dev/console /boot/dev/
$ cp /dev/null /boot/dev
$ cp /dev/mapper/control /boot/dev     (NUR NACH /dev!!! wird vom script beim booten geändert, aber jetzt erst nach /dev!)
$ cp /dev/hd* /boot/dev
bzw
$ cp /dev/sd* /boot/dev
Jetzt wird Grub eingerichtet.

Code: Select all

$ nano /boot/grub/menu.lst
Dies ist meine menu.lst, natürlich anpassen, aber nur die root= option, wenn es bei euch anders sein sollte.

Code: Select all

timeout 10
splashimage /grub/splash.xpm.gz

title Gentoo verschluesselt 
      root(hd0,0)
      kernel /gentoo-crypt root=/dev/hda1 init=/init

title Gentoo Rescue
      root (hd0,0)
      kernel /gentoo-crypt root=/dev/hda3
So, das wäre geschafft, also auf zum Erstellen der verschlüsselten Partition und Installation von Gentoo mit einem stage3-Archiv.

3. Verschlüsseln und Installieren

Wie ihr vielleicht anhand des Beispiels in dem Init-Script schon gesehen habt, wird die Partition so verschlüsselt:

Code: Select all

DARAN DENKEN, DASS MAN DIE RICHTIGE PARTITION EINSTETZT!!
cryptsetup -c blowfish-cbc-essiv:sha256 -y -s 256 luksFormat /dev/hdc1
cryptsetup luksOpen /dev/hdc1 root              
mke2fs /dev/mapper/root
mkdir /mnt/gentoo
mount /dev/mapper/root /mnt/gentoo
und schwupps habt ihr sie gemountet und könnt Gentoo installieren.
Das werde ich hier aber nur so nötig wie möglich beschreiben, da man sowas schon können sollte... Wenn man mal im Handbuch spitzeln will, ab hier gehts los http://www.gentoo.org/doc/de/handbook/h ... t=1&chap=5 . ABER teilweise ist es hier etwas anders wie im Handbuch und sollte auch so wie hier beschrieben gemacht werden!!

Code: Select all

$ date MMDDhhmmYYYY
$ cd /mnt/gentoo
$ wget http://distfiles.gentoo.org/releases/x86/current/stages/stage3-i686-2006.1.tar.bz2
$ wget http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2
$ tar xvfjp stage3-i686-2006.1.tar.bz2
$ tar xvjf portage-latest.tar.bz2 -C /mnt/gentoo/usr 
(make.conf anpassen, use-flags usw...)
$ nano /etc/make.conf
$ cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
$ mount -t proc none /mnt/gentoo/proc
$ mount -o bind /dev /mnt/gentoo/dev
$ chroot /mnt/gentoo /bin/bash
$ env-update && source /etc/profile
So, nun ist man im neuen Gentoo, weiter, hopphopp! Bald sind wir fertig!

Code: Select all

$ emerge --sync
$ cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
$ USE="-doc symlink" emerge -av gentoo-sources
Ab hier wirds ein klein bisschen haarig (aber nur ganz wenig) und anders wie im Handbuch.
Der Kernel vom Hostsystem muss genau der gleiche sein, wie der vom neuen System!!! Und keine Jammereien, wenn ihr Module nicht verwenden könnt! Ich habe euch gewarnt...
(In einem anderen Terminal, ohne chroot!!!)

Code: Select all

$ cp /usr/src/linux/.config /mnt/gentoo/root/kconf
$ cd /usr/src/linux
$ make menuconfig
   Load an alternate configuration file
       /root/kconf
   OK
  Exit und speichern
$ make modules && make modules_install
So, hier ists immer noch anders! Die fstab kann so übernommen werden (teilweise, ist aber beschrieben), die alte am besten löschen (also die aus dem Stage3 Archiv).

Code: Select all

$ rm /etc/fstab
$ nano /etc/fstab

Code: Select all

/dev/mapper/root   /   auto   noatime   1 1
proc   /procproc   defaults   0 0
shm   /dev/shm   tmpfs   nodev,nosuid,noexec   0 0
So, weiter mit dem Netzwerk (Im Handbuch Step 8.b)

Code: Select all

$ nano /etc/conf.d/net
$ rc-update add net.eth0 default
$ nano /etc/hosts
und nun weiter mit den restlich Kleinigkeiten...

Code: Select all

$ passwd  (root-pw setzen)
$ nano /etc/rc.conf
$ nano /etc/conf.d/keymaps
$ nano /etc/conf.d/clock
Noch ein paar Kleinigkeiten emergen...

Code: Select all

$ emerge -av syslog-ng vixie-cron device-mapper cryptsetup-luks
$ rc-update add syslog-ng default
$ rc-update add vixie-cron default
$ emerge -av dhcpcd   (wenn man netz per dhcp hat)
$ emerge -av rp-pppoe (wenn man sich ins netz einwählen muss)
Jetzt noch die nötigen Dateisystem Tools, bei ext2/ext3 braucht man nix, ansonsten Step 9.e

Den Bootloader haben wir schon, also noch wie in Step 11 beschrieben, einen User anlegen.

Nun das ganze umounten.

Code: Select all

$ exit
$ cd
$ umount /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
So. Fertig. Erst mal recken, strecken, eine rauchen und dann geniessen :)

4. Zusätzliche Datenpartition

Um eine zusätzliche Partition miteinzubinden, benötigt es lang nicht mehr soviel Arbeit wie die Gentoo-Installation.
Ich werde hier nur den Weg mit Passwort beschreiben, da ich nichts von keyfiles halte, wenn diese in die falschen Hände gelangen, bringt das alles ja nichts ;).
Zuerst wird die Partition verschlüsselt:

Code: Select all

$ cryptsetup -c blowfish-cbc-essiv:sha256 -y -s 256 luksFormat /dev/hdX
$ cryptsetup luksOpen /dev/hdX daten
Nun wird diese formatiert:

Ich verwende für Datenpartitionen immer den Parameter -m 0, das heisst, dass nichts für den Superuser reserviert wird. Ich denke, dass dies nur auf der /-Part. etwas ausmacht, aber wenn ich da falsch liege, sagt es mir!

Code: Select all

$ mke2fs -j -m 0 /dev/mapper/daten
und anschliessend gemountet:

Code: Select all

$ mkdir /home/USER/daten
$ mount /dev/mapper/daten /home/USER/daten
(natürlich den eigenen Benutzer eintragen anstelle von USER)
jetzt wird das ganze für den User beschreibbar gemacht:

Code: Select all

$ chmod +rw /home/USER/daten
$ chown USER /home/USER/daten
So das wärs fürs erste, jetzt noch ein init-script um das ganze beim Booten machen zu lassen. (Also das mounten..)

Code: Select all

#!/sbin/runscript

start() {
  ebegin "Mounte verschlüsselte Partition"
  cryptsetup luksOpen /dev/hdX daten
  mount /dev/mapper/daten /home/USER/daten
  eend $?
}

stop() {
  ebegin "umounten der verschlüsselten Partition"
  umount /dev/mapper/daten
  cryptsetup luksClose /dev/mapper/daten
  eend $?
}
Dieses initscript wird nun nach /etc/init.d/mount_crypt gespeichert und mit

Code: Select all

$ chmod +x /etc/init.d/mount_crypt
ausführbar gemacht und so zum default-runlevel hinzugefügt:

Code: Select all

$ rc-update add mount_crypt default
So, fertig :)
Das sollte natürlich auch funktionieren wenn man es nach /home/USER mountet, also als home-Verzeichnis, habe ich aber nicht versucht.

5. Swap

Ich habe es natürlich auch selber versucht, aber das war nicht wirklich das Gelbe vom Ei. Ich habe diesen Schritt vom Gentoo-Wiki übernommen und möchte ihn deshalb hier verlinken.

http://de.gentoo-wiki.com/DM-Crypt#Swap ... C3.BCsseln

6. Zum Schluss

Meine Quellen für dieses Howto waren:
http://www.gentoo.org/doc/de/handbook/handbook-x86.xml
http://gentoo-wiki.com/SECURITY_System_ ... _with_LUKS
http://de.gentoo-wiki.com/Mini-Gentoo
http://de.gentoo-wiki.com/DM-Crypt#Swap ... C3.BCsseln
Vielen Dank an diejenigen, die diese Howtos und das Handbuch geschrieben haben, sowie an alle die in irgendeiner Weise damit zu tun haben.

Und hier noch ein Thread dazu: http://forums.gentoo.org/viewtopic-t-511797.html


Bugs/TODO:
1. Als zweiten Bootloader LILO, was für AMD-64 user leider entfällt (mich juckts net, grub rockz :P)
2. Vielleicht ein Howto schreiben, wie man dies von einer LIVE-CD auf eine frische Platte bastelt.

Änderungen:
1. /boot kann mit neuem init script fürs Mini-Linux beschrieben werden.
2. Dateisystemcheck funzt nun auch, device-mapper und crypt-setup-luks fehlten auf verschlüsseltem System -> fstab "1 1" für root-dev.
3. Swap hinzugefügt
4. Datenpartition hinzugefügt (ich denke mal, seit diesem Schritt und Swap ist es auch 100% benutzbar ;) obwohl es natürlich auch andere Howtos und Wege gibt)
1 ha == 1 Hekto-Ar == 1 Hektar
Top
Post Reply
  • Print view
1 post • Page 1 of 1

Return to “Deutsche Dokumentation”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic