Encrypted Root Filesystem HOWTO

Christophe Devine

Vertaald door: Ellen Bokhorst

Revision History
Revision v1.22004-10-20Revised by: cd
De versie van pakketten bijgewerkt.
Revision v1.12003-12-01Revised by: cd
Ondersteuning toegevoegd voor GRUB.
Revision v1.02003-09-24Revised by: cd
Initiële release, voorbeschouwd door de LDP.
Revision v0.92003-09-11Revised by: 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.


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

Linux 2.4.27 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:

wget http://loop-aes.sourceforge.net/loop-AES/loop-AES-v2.2b.tar.bz2
tar -xvjf loop-AES-v2.2b.tar.bz2

Vervolgens moet je de kernelbroncode downloaden en patchen:

wget http://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.27.tar.bz2
tar -xvjf linux-2.4.27.tar.bz2
cd linux-2.4.27
rm include/linux/loop.h drivers/block/loop.c
patch -Np1 -i ../loop-AES-v2.2b/kernel-2.4.27.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=100
image=/boot/vmlinuz
    label=Linux
    read-only
    root=/dev/hda3
EOF
lilo

Je kunt nu het systeem herstarten.

Installeren van Linux-2.6.8.1

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

Installeren van util-linux-2.12b

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:

wget http://ftp.kernel.org/pub/linux/utils/util-linux/util-linux-2.12b.tar.bz2
tar -xvjf util-linux-2.12b.tar.bz2
cd util-linux-2.12b
patch -Np1 -i ../loop-AES-v2.2b/util-linux-2.12c.diff

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

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

De beveiliging is waarschijnlijk éé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/