Encrypted Root Filesystem HOWTO

Christophe Devine

Vertaald door: Ellen Bokhorst

Wijzigingen
Herziening v1.313 mrt 2005Herzien door: cd
Versie van de pakketten bijgewerkt
Herziening v1.220 okt 2004Herzien door: cd
De versie van pakketten bijgewerkt.
Herziening v1.11 dec 2003Herzien door: cd
Ondersteuning toegevoegd voor GRUB.
Herziening v1.024 sep 2003Herzien door: cd
Initiële release, voorbeschouwd door de LDP.
Herziening v0.911 sep 2003Herzien door: cd
Bijgewerkt en omgezet in DocBook XML.

In dit document wordt uitgelegd hoe je persoonlijke data te beveiligen door met behulp van sterke cryptografie je Linux rootbestandssysteem te versleutelen.


Inhoudsopgave
Voorbereiden van het systeem
Aanmaken van het versleutelde rootbestandssysteem
Instellen van het bootdevice
Laatste stappen
Over deze HOWTO

Voorbereiden van het systeem

Opzetten van de partitielay-out

Op je harddisk (hda) dienen op z'n minst drie partities voor te komen:

  • hda1: deze kleine niet versleutelde partitie zal om een wachtwoord vragen om het versleutelde rootbestandssysteem te kunnen mounten.

  • hda2: deze partitie zal je versleutelde rootbestandssysteem bevatten; zorg dat het groot genoeg is.

  • hda3: deze partitie bevat het huidige GNU/Linux-systeem.

Op dit moment zijn hda1 en hda2 ongebruikt. hda3 is waar je Linux distributie thans is geïnstalleerd; /usr en /boot moeten niet worden gescheiden van deze partitie.

Hier is een voorbeeld hoe je partitielay-out eruit zou kunnen zien:

# fdisk -l /dev/hda

Disk /dev/hda: 255 heads, 63 sectors, 2432 cylinders
Units = cylinders of 16065 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1         1      8001   83  Linux
/dev/hda2             2       263   2104515   83  Linux
/dev/hda3           264       525   2104515   83  Linux
/dev/hda4           526      2047  12225465   83  Linux

Benodigde pakketten

Bij gebruik van Debian zijn de volgende pakketten verplicht:

apt-get install gcc make libncurses5-dev patch bzip2 wget

Ter vereenvoudiging van het kopiëren en plakkeen, installeer je tevens:

apt-get install lynx gpm

Linux 2.4.29 installeren

Er bestaan twee hoofdprojecten die loopback versleutelingsondersteuning in de kernel toevoegen: cryptoloop en loop-AES. Deze howto is gebaseerd op loop-AES, gezien het een uiterst snel en hoog geoptimaliseerde implementatie van Rijndael in assembleertaal kenmerkt en daarom voorziet in een maximum performance als je een IA-32 (x86) hebt. Bovendien zijn er een aantal beveiligingskwesties met betrekking tot cryptoloop.

Download als eerste het loop-AES pakket en pak het uit:


		cd /usr/src
		wget http://loop-aes.sourceforge.net/loop-AES/loop-AES-v3.0b.tar.bz2
tar -xvjf loop-AES-v3.0b.tar.bz2

Vervolgens moet je de kernelbroncode downloaden en patchen:

wget http://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.29.tar.bz2
tar -xvjf linux-2.4.29.tar.bz2
cd linux-2.4.29
rm include/linux/loop.h drivers/block/loop.c
patch -Np1 -i ../loop-AES-v3.0b/kernel-2.4.28.diff

Stel de toetsenbordindeling in:

dumpkeys | loadkeys -m - > drivers/char/defkeymap.c

Configureer vervolgens je kernel; zorg dat de volgende opties zijn gezet:

make menuconfig

    Block devices  --->

        <*> Loopback device support
        [*]   AES encrypted loop device support (NEW)

        <*> RAM disk support
        (4096)   Default RAM disk size (NEW)
        [*]   Initial RAM disk (initrd) support

    File systems  --->

        <*> Ext3 journalling file system support
        <*> Second extended fs support

(belangrijke noot: activeer niet de de ondersteuning voor het /dev 
bestandssysteem)

Compileer de kernel het installeer het:

make dep bzImage
make modules modules_install
cp arch/i386/boot/bzImage /boot/vmlinuz

Als grub je bootloader is, werk dan /boot/grub/menu.lst of /boot/grub/grub.conf bij:

cat > /boot/grub/menu.lst << EOF
default 0
timeout 10
color green/black light-green/black
title Linux
    root (hd0,2)
    kernel /boot/vmlinuz ro root=/dev/hda3
EOF

Werk anders /etc/lilo.conf bij en start lilo op:

cat > /etc/lilo.conf << EOF
lba32
boot=/dev/hda
prompt
timeout=60
image=/boot/vmlinuz
    label=Linux
    read-only
    root=/dev/hda3
EOF
lilo

Je kunt nu het systeem herstarten.

Installeren van Linux-2.6.10

Ga verder zoals beschreven in de vorige sectie, daarvoor in de plaats gebruik makend van loop-aes' kernel-2.6.10.diff patch en zorg ervoor dat de ondersteuning voor cryptoloop niet is geactiveerd. De ondersteuning van modules vereist dat het pakket module-init-tools is geïnstalleerd.

Installeren van util-linux-2.12p

Op het programma losetup, dat onderdeel uitmaakt van het pakket util-linux, moet een patch worden toegepast en het moet voor het toevoegen van ondersteuning voor krachtige cryptografie opnieuw worden gecompileerd. Download util-linux en pas de patch toe:


		cd /usr/src
		wget http://ftp.kernel.org/pub/linux/utils/util-linux/util-linux-2.12p.tar.bz2
tar -xvjf util-linux-2.12p.tar.bz2
cd util-linux-2.12p
patch -Np1 -i ../loop-AES-v3.0b/util-linux-2.12p.diff

Voer voor het gebruik van wachtwoorden korter dan 20 tekens in:

CFLAGS="-O2 -DLOOP_PASSWORD_MIN_LENGTH=8"; export CFLAGS

De beveiliging is vast en zeker één van je belangrijkste interesses. Activeer om dit reden alsjeblieft geen wachtwoorden bestaande uit minder dan 20 tekens. De privacy van gegevens krijg je niet voor niets, men moet hiervoor 'betalen' in de vorm van lange wachtwoorden.

Compileer losetup en installeer het als root:

./configure && make lib mount
mv -f /sbin/losetup /sbin/losetup~
rm -f /usr/share/man/man8/losetup.8*
cd mount
gzip losetup.8
cp losetup /sbin
cp losetup.8.gz /usr/share/man/man8/
chattr +i /sbin/losetup