Titkos�tott root f�jlrendszer HOGYANChristophe Devine

   Verzi�t�rt�net
   Verzi�: v1.1 2003.12.01 �tdolgozta: cd
   GRUB t�mogat�s hozz�adva.
   Verzi�: v1.0 2003.09.24 �tdolgozta: cd
   Els� kiad�s, az LDP �ltal ellen�rizve.
   Verzi�: v0.9 2003.09.11 �tdolgozta: cd
   Friss�tve, DocBook XML form�tumba konvert�lva.

   Ez a dokumentum le�rja, hogyan helyezz�k biztons�gba adatainkat a
   Linux root f�jlrendszer er�s titkos�t�si algoritmust haszn�l�
   titkos�t�s�val.
     _________________________________________________________________

   Tartalomjegyz�k
   1. [1]A rendszer el�k�sz�t�se

        1.1. [2]A part�ci�k kialak�t�sa
        1.2. [3]A Linux-2.4.23 rendszermag telep�t�se
        1.3. [4]Az util-linux-2.12 telep�t�se

   2. [5]A titkos�tott root f�jlrendszer l�trehoz�sa
   3. [6]A boot eszk�z be�ll�t�sa

        3.1. [7]A virtu�lis f�jlrendszer (ramdisk) l�trehoz�sa
        3.2. [8]Rendszerind�t�s CD-ROM-r�l
        3.3. [9]Rendszerind�t�s fizikai part�ci�r�l

   4. [10]Utols� l�p�sek
   5. [11]A HOGYANr�l

        5.1. [12]Magyar ford�t�s

1. A rendszer el�k�sz�t�se

1.1. A part�ci�k kialak�t�sa

A lemez�nk (hda) legal�bb h�rom part�ci�t tartalmazzon:

     * hda1: ez a kicsi (~4 Mb), nem titkos�tott part�ci� fogja k�rni a
       jelszavunkat a titkos�tott root f�jlrendszer felcsatol�s�hoz.
     * hda2: ez a part�ci� tartalmazza a titkos�tott root f�jlrendszert;
       legyen megfelel�en nagy.
     * hda3: ez a part�ci� tartalmazza az aktu�lis GNU/Linux rendszert.

   Ekkor m�g a hda1 �s a hda2 part�ci�k nincsenek haszn�latban. A hda3
   part�ci� tartalmazza az aktu�lisan telep�tett Linux terjeszt�st; az
   /usr �s a /boot nem lehet ett�l a part�ci�t�l elk�l�n�tve.
     _________________________________________________________________

1.2. A Linux-2.4.23 rendszermag telep�t�se

K�t nagyobb projekt l�tezik, ami er�s titkos�t�si t�mogat�st ad a
rendszermaghoz: a CryptoAPI �s a loop-AES. Ez a HOGYAN a loop-AES projekten
alapul, mivel ez egy assembly nyelven �rt, nagyon gyors �s optimaliz�lt
implement�ci�, �gy maxim�lis teljes�tm�nyt ny�jt az IA-32 (x86) alap�
processzorok sz�m�ra. K�sz�t�je Rijndael.

Mindenek el�tt t�lts�k le, majd csomagoljuk ki a loop-AES csomagot:

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

   Ezut�n t�lts�k le a rendszermag forr�s�t, majd alkalmazzuk a foltot:

wget http://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.23.tar.bz2
tar -xvjf linux-2.4.23.tar.bz2
cd linux-2.4.23
patch -Np1 -i ../loop-AES-v2.0b/kernel-2.4.23.diff

   �ll�tsuk be a billenty�zet kioszt�s�t:

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

   A k�vetkez� l�p�sben be�ll�tjuk a rendszermagot; a k�vetkez�
   lehet�s�gek mindenk�pp legyenek be�ll�tva:

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

(fontos: ne legyen be�ll�tva a /dev file system support lehet�s�g)

   Ford�tsuk le �s telep�ts�k a rendszermagot:

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

   Ha a grub rendszerbet�lt�t haszn�ljuk, szerkessz�k a
   /boot/grub/menu.lst illetve /boot/grub/grub.conf f�jlt:

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

   Ha viszont lilo-t haszn�lunk, akkor szerkessz�k az /etc/lilo.conf
   f�jlt, �s futtassuk a lilo-t:

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

   Ind�tsuk �jra a rendszert.
     _________________________________________________________________

1.3. Az util-linux-2.12 telep�t�se

A losetup programon - amely az util-linux csomag r�sze - alkalmaznunk kell a
foltot, �s �jra kell ford�tanunk az er�s titkos�t�s t�mogat�s�hoz. T�lts�k
le �s csomagoljuk ki az util-linux csomagot, majd alkalmazzuk a foltot:

wget http://ftp.cwi.nl/aeb/util-linux/util-linux-2.12.tar.gz
tar -xvzf util-linux-2.12.tar.gz
cd util-linux-2.12
patch -Np1 -i ../loop-AES-v2.0b/util-linux-2.12.diff

   20 karaktern�l r�videbb jelsz� haszn�lata eset�n �rjuk be:

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

   Ha fontos k�rd�s a biztons�g, ne haszn�ljuk ezt a lehet�s�get. A
   biztons�gnak megvan az �ra, jelen esetben ez a hossz� jelsz�
   haszn�lata.

   Ford�tsuk le a losetup-ot, majd root felhaszn�l�k�nt telep�ts�k azt:

./configure && make lib mount
cp -f mount/losetup /sbin
rm -f /usr/share/man/man8/losetup.8.gz
cp -f mount/losetup.8 /usr/share/man/man8
     _________________________________________________________________

2. A titkos�tott root f�jlrendszer l�trehoz�sa

A c�lpart�ci� felt�lt�se v�letlenszer� adattal:

shred -n 1 -v /dev/hda2

   A titkos�tott loopback eszk�z be�ll�t�sa:

losetup -e aes256 -S xxxxxxxxxx /dev/loop0 /dev/hda2
Password:

   A sz�t�rral optimaliz�lt t�mad�sok kiv�d�se �rdek�ben aj�nlott a -S
   xxxxxxxxxx opci� haszn�lata, ahol "xxxxxxxxxx" a v�letlenszer�en
   kiv�lasztott �lv�letlen sorozat kiindul��rt�k (random seed). Ezen
   k�v�l a rendszerind�t�skor esetleg fell�p� billenty�zetkioszt�si
   hib�k megel�z�se �rdek�ben ne haszn�ljunk nem-ASCII karaktereket
   (�kezeteket stb.) a jelsz�ban.

   Hozzuk l�tre az ext3 f�jlrendszert:

   mke2fs -j /dev/loop0

   Ellen�rizz�k, hogy helyesen �rtuk be a jelsz�t:

losetup -d /dev/loop0
losetup -e aes256 -S xxxxxxxxxx /dev/loop0 /dev/hda2
Password:

mkdir /mnt/efs
mount /dev/loop0 /mnt/efs

   �sszehasonl�thatjuk a titkos�tott �s az eredeti adatokat:

xxd /dev/hda2  | less
xxd /dev/loop0 | less

   Itt az ideje, hogy telep�ts�k a titkos�tott Linux f�jlrendszert. Ha
   egy GNU/Linux terjeszt�st haszn�lunk (p�ld�ul Debian-t, Slackware-t,
   Gentoo-t, Mandrake-et, RedHat/Fedora-t, SuSE-t stb.), futtassuk a
   k�vetkez� parancsot:

   cp -avx / /mnt/efs

   Ha a Linux From Scratch k�nyvet haszn�ljuk, az al�bbi elt�r�seket
   kiv�ve a dokumentum szerint folytathatjuk a munk�t:

     * 6. fejezet - Az util-linux telep�t�se:
       Alkalmazzuk a loop-AES foltot a forr�s kicsomagol�sa ut�n.
     * 8. fejezet - Az LFS rendszer ind�that�v� t�tele:
       Szor�tkozzunk a k�vetkez� fejezetre.
     _________________________________________________________________

3. A boot eszk�z be�ll�t�sa

3.1. A virtu�lis f�jlrendszer (ramdisk) l�trehoz�sa

Els� l�p�sk�nt chroot-oljunk a titkos�tott part�ci�ra, �s hozzuk l�tre a
boot eszk�zh�z a felcsatol�si pontot:

chroot /mnt/efs
mkdir /loader

   Ezut�n hozzuk l�tre a virtu�lis rendszerind�t� f�jlrendszert (initial
   ramdisk, initrd), amelyre k�s�bb sz�ks�g�nk lesz:

cd
dd if=/dev/zero of=initrd bs=1k count=4096
mke2fs -F initrd
mkdir ramdisk
mount -o loop initrd ramdisk

   Hozzuk l�tre a f�jlrendszer k�nyvt�rszerkezet�t, �s m�soljuk be a
   sz�ks�ges f�jlokat:

mkdir ramdisk/{bin,dev,lib,mnt,sbin}
cp /bin/{bash,mount,umount} ramdisk/bin/
ln -s bash ramdisk/bin/sh
mknod -m 600 ramdisk/dev/console c 5 1
mknod -m 600 ramdisk/dev/hda2    b 3 2
mknod -m 600 ramdisk/dev/loop0   b 7 0
cp /lib/{ld-linux.so.2,libc.so.6,libdl.so.2} ramdisk/lib/
cp /lib/{libncurses.so.5,libtermcap.so.2}    ramdisk/lib/
cp /sbin/{losetup,pivot_root} ramdisk/sbin/

   Ha a k�vetkez� vagy hasonl� hiba�zenetet kapjuk, az nem jelent
   probl�m�t: "/lib/libncurses.so.5: No such file or directory", vagy
   "/lib/libtermcap.so.2: No such file or directory"; a bash-nek csak
   ezen programk�nyvt�rak egyike sz�ks�ges. Megtudhatjuk azt, hogy
   eset�nkben melyik sz�ks�ges:

   ldd /bin/bash

   Hozzuk l�tre a rendszerind�t� (init) szkriptet (ne felejts�k a
   "xxxxxxxxxx" hely�re be�rni a kiv�lasztott �lv�letlen sorozat
   kiindul��rt�ket (random seed)):

cat > ramdisk/sbin/init << "EOF"
#!/bin/sh

/sbin/losetup -e aes256 -S xxxxxxxxxx /dev/loop0 /dev/hda2
/bin/mount -r -n -t ext2 /dev/loop0 /mnt

while [ $? -ne 0 ]
do
    /sbin/losetup -d /dev/loop0
    /sbin/losetup -e aes256 -S xxxxxxxxxx /dev/loop0 /dev/hda2
    /bin/mount -r -n -t ext2 /dev/loop0 /mnt
done

cd /mnt
/sbin/pivot_root . loader
exec /usr/sbin/chroot . /sbin/init
EOF

chmod 755 ramdisk/sbin/init

   Csatoljuk le a loopback eszk�zt, �s t�m�r�ts�k be a virtu�lis
   rendszerind�t� f�jlrendszert:

umount -d ramdisk
rmdir ramdisk
gzip initrd
mv initrd.gz /boot/
     _________________________________________________________________

3.2. Rendszerind�t�s CD-ROM-r�l

Er�sen aj�nlott a rendszert egy �r�sv�dett eszk�zr�l ind�tani, p�ld�ul egy
ind�that� CD-ROM-r�l.

T�lts�k le, majd csomagoljuk ki a syslinux csomagot:

wget ftp://ftp.kernel.org/pub/linux/utils/boot/syslinux/syslinux-2.07.tar.gz
tar -xvzf syslinux-2.07.tar.gz

   �ll�tsuk be az isolinux-ot:

mkdir bootcd
cp /boot/vmlinuz-2.4.23 bootcd/vmlinuz
cp /boot/initrd.gz syslinux-2.07/isolinux.bin bootcd/
echo "DEFAULT vmlinuz initrd=initrd.gz ro root=/dev/ram0 vga=4" \
    > bootcd/isolinux.cfg

   Hozzuk l�tre az ind�that� cd-k�pet (cd image), �s �rjuk ki egy �rhat�
   cd-re:

mkisofs -o bootcd.iso -b isolinux.bin -c boot.cat \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        -J -hide-rr-moved -R bootcd/

cdrecord -dev 0,0,0 -speed 4 -v bootcd.iso

rm -rf bootcd{,.iso}
     _________________________________________________________________

3.3. Rendszerind�t�s fizikai part�ci�r�l

A boot part�ci� egy alternat�v rendszerind�t� eszk�z: sz�ks�g lehet r�, ha
az ind�that� CD elv�sz. Vegy�k figyelembe, hogy a hda1 egy �rhat� eszk�z,
ez�rt nem biztons�gos; csak sz�ks�g eset�n haszn�ljuk!

Hozzuk l�tre �s csatoljuk fel az ext2 f�jlrendszert:

dd if=/dev/zero of=/dev/hda1 bs=8192
mke2fs /dev/hda1
mount /dev/hda1 /loader

   M�soljuk �t a rendszermagot �s a virtu�lis rendszerind�t�
   f�jlrendszert:

cp /boot/vmlinuz-2.4.23 /loader/vmlinuz
cp /boot/initrd.gz /loader/

   Ha grub-ot haszn�lunk:

mkdir /loader/boot
cp -av /boot/grub /loader/boot/
cat > /loader/boot/grub/menu.lst << EOF
default 0
timeout 10
color green/black light-green/black
title Linux
    root (hd0,0)
    kernel /vmlinuz ro root=/dev/ram0 vga=4
    initrd /initrd.gz
EOF
grub-install --root-directory=/loader /dev/hda
umount /loader

   Ha lilo-t haszn�lunk:

mkdir /loader/{boot,dev,etc}
cp /boot/boot.b /loader/boot/
mknod -m 600 /loader/dev/hda  b 3 0
mknod -m 600 /loader/dev/hda1 b 3 1
mknod -m 600 /loader/dev/ram0 b 1 0
cat > /loader/etc/lilo.conf << EOF
lba32
boot=/dev/hda
prompt
timeout=100
image=/vmlinuz
    label=Linux
    initrd=/initrd.gz
    read-only
    root=/dev/ram0
    vga=4
EOF
lilo -r /loader
umount /loader
     _________________________________________________________________

4. Utols� l�p�sek

M�dos�tsuk az /etc/fstab f�jlt �gy, hogy tartalmazza a k�vetkez� sort:

/dev/loop0      /      ext3    defaults             0 1

   T�r�lj�k az /etc/mtab f�jlt, �s l�pj�nk ki a chroot-b�l. Legv�g�l
   futtassuk a "umount -d /mnt/efs" parancsot, majd ind�tsuk �jra a
   rendszert. A hda3-ra m�r nincs sz�ks�g, l�trehozhatunk egy titkos�tott
   f�jlrendszert ezen a part�ci�n, �s haszn�lhatjuk biztons�gi
   ment�sk�nt.

   Ha kev�s a fizikai mem�ri�nk, sz�ks�g lesz swap ter�letre. T�telezz�k
   fel, hogy a hda4 fogja tartalmazni a titkos�tott swap part�ci�t;
   el�sz�r l�tre kell hozni a swap eszk�zt:

shred -n 1 -v /dev/hda4
losetup -e aes256 /dev/loop1 /dev/hda4
mkswap /dev/loop1

   Majd hozzunk l�tre egy ind�t�szkriptet (S00swap) a rendszer
   ind�t�k�nyvt�r�ban (/etc/rcS.d/ Debian eset�n):

#!/bin/sh

echo "az el�z�leg kiv�lasztott jelsz�" | \
    losetup -p 0 -e aes256 /dev/loop1 /dev/hda4
swapon /dev/loop1
     _________________________________________________________________

5. A HOGYANr�l

A Titkos�tott root f�jlrendszer HOGYAN 2002 november�ben k�sz�lt el a
[13]Linux From Scratch projekt r�sz�re. K�sz�net mindazoknak, akik az�ta
seg�tettek a HOGYAN t�k�letes�t�s�ben (ford�tott id�rendben): Julien
Perrot, Grant Stephenson, Cary W. Gilmer, James Howells, Pedro Baez, Josh
Purinton, Jari Ruusu �s Zibeli Aton.

A hozz�sz�l�sokat [14]Christophe Devine v�rja.
     _________________________________________________________________

5.1. Magyar ford�t�s

A magyar ford�t�st [15]Vadon P�ter k�sz�tette (2004.06.15). A lektor�l�st
[16]Daczi L�szl� v�gezte el (2004.06.24). A dokumentum legfrissebb v�ltozata
megtal�lhat� a [17]Magyar Linux Dokument�ci�s Projekt honlapj�n.

References

   1. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#PREPARING-SYSTEM
   2. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#PARTITION-LAYOUT
   3. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#INSTALL-KERNEL
   4. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#INSTALL-UTIL-LINUX
   5. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#ENCRYPT-ROOT-FILESYSTEM
   6. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#SETUP-BOOT-DEVICE
   7. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#INITIAL-RAMDISK
   8. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#BOOTABLE-CD
   9. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#BOOT-PARTITION
  10. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#FINAL-STEPS
  11. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#ABOUT
  12. file://localhost/home/dacas/tldp/convert/Encrypted-Root-Filesystem-HOWTO-hu.html#AEN177
  13. http://www.linuxfromscratch.org/lfs/news.html
  14. http://www.cr0.net:8040/about/
  15. mailto:vape[kukac]maffia[pont]hu
  16. mailto:dacas[kukac]freemail[pont]hu
  17. http://tldp.fsf.hu/