<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">

<article class="whitepaper" id="Encrypted-Root-Filesystem-HOWTO-hu" lang="hu">

<articleinfo>

    <title>Titkosított root fájlrendszer HOGYAN</title>

    <author>
        <firstname>Christophe</firstname>
        <surname>Devine</surname>
    </author>

    <abstract>
        <para>
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.
        </para>
    </abstract>

    <legalnotice>
        <para>
Ez a HOGYAN a GNU Free Documentation License 1.2. alatt lett kiadva.
        </para>
    </legalnotice>

    <revhistory>

        <revision>
            <revnumber>v1.1</revnumber>
            <date>2003.12.01</date>
            <authorinitials>cd</authorinitials>
            <revremark>GRUB támogatás hozzáadva.</revremark>
        </revision>

        <revision>
            <revnumber>v1.0</revnumber>
            <date>2003.09.24</date>
            <authorinitials>cd</authorinitials>
            <revremark>Első kiadás, az LDP által ellenőrizve.</revremark>
        </revision>

        <revision>
            <revnumber>v0.9</revnumber>
            <date>2003.09.11</date>
            <authorinitials>cd</authorinitials>
            <revremark>Frissítve, DocBook XML formátumba konvertálva.</revremark>
        </revision>

    </revhistory>

</articleinfo>

<sect1 id="preparing-system">
    <title>A rendszer előkészítése</title>

    <sect2 id="partition-layout">
        <title>A partíciók kialakítása</title>
        <para>
A lemezünk (hda) legalább három partíciót tartalmazzon:
        <itemizedlist>
            <listitem><para>
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.
            </para></listitem>
            <listitem><para>
hda2: ez a partíció tartalmazza a titkosított root fájlrendszert;
legyen megfelelően nagy.
            </para></listitem>
            <listitem><para>
hda3: ez a partíció tartalmazza az aktuális GNU/Linux rendszert.
            </para></listitem>
        </itemizedlist>
        </para><para>
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
<emphasis>nem</emphasis> lehet ettől a partíciótól elkülönítve.
        </para>
    </sect2>

    <sect2 id="install-kernel">
        <title>A Linux-2.4.23 rendszermag telepítése</title>
        <para>
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.
        </para><para>
Mindenek előtt töltsük le, majd csomagoljuk ki a loop-AES csomagot:
        </para><para>
<screen>wget http://loop-aes.sourceforge.net/loop-AES/loop-AES-v2.0b.tar.bz2
tar -xvjf loop-AES-v2.0b.tar.bz2</screen>
        </para><para>
Ezután töltsük le a rendszermag forrását, majd alkalmazzuk a foltot:
        </para><para>
<screen>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</screen>
        </para><para>
Állítsuk be a billentyűzet kiosztását:
        </para><para>
<screen>dumpkeys | loadkeys -m - > drivers/char/defkeymap.c</screen>
        </para><para>
A következő lépésben beállítjuk a rendszermagot; a következő lehetőségek mindenképp legyenek beállítva:
        </para><para>
<screen>make menuconfig

    Block devices  ---&gt;

        &lt;*&gt; Loopback device support
        [*]   AES encrypted loop device support (NEW)

        &lt;*&gt; RAM disk support
        (4096)   Default RAM disk size (NEW)
        [*]   Initial RAM disk (initrd) support

    File systems  ---&gt;

        &lt;*&gt; Ext3 journalling file system support
        &lt;*&gt; Second extended fs support

(fontos: ne legyen beállítva a /dev file system support lehetőség)</screen>
        </para><para>
Fordítsuk le és telepítsük a rendszermagot:
        </para><para>
<screen>make dep bzImage
make modules modules_install
cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.23</screen>
        </para><para>
Ha a grub rendszerbetöltőt használjuk, szerkesszük a /boot/grub/menu.lst
illetve /boot/grub/grub.conf fájlt:
        </para><para>
<screen>cat &gt; /boot/grub/menu.lst &lt;&lt; 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</screen>
        </para><para>
Ha viszont lilo-t használunk, akkor szerkesszük az /etc/lilo.conf fájlt, és futtassuk a lilo-t:
        </para><para>
<screen>cat &gt; /etc/lilo.conf &lt;&lt; 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</screen>
        </para><para>
Indítsuk újra a rendszert.
        </para>
    </sect2>

    <sect2 id="install-util-linux">
        <title>Az util-linux-2.12 telepítése</title>
        <para>
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:
        </para><para>
<screen>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</screen>
        </para><para>
20 karakternél rövidebb jelszó használata esetén írjuk be:
        </para><para>
<screen>CFLAGS=&quot;-O2 -DLOOP_PASSWORD_MIN_LENGTH=8&quot;; export CFLAGS</screen>
        </para><para>
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.
        </para><para>
Fordítsuk le a losetup-ot, majd root felhasználóként telepítsük azt:
        </para><para>
<screen>./configure &amp;&amp; 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</screen>
        </para>
    </sect2>
</sect1>

<sect1 id="encrypt-root-filesystem">
    <title>A titkosított root fájlrendszer létrehozása</title>
    <para>
A célpartíció feltöltése véletlenszerű adattal:
    </para><para>
<screen>shred -n 1 -v /dev/hda2</screen>
    </para><para>
A titkosított loopback eszköz beállítása:
    </para><para>
<screen>losetup -e aes256 -S xxxxxxxxxx /dev/loop0 /dev/hda2
Password:</screen>
    </para><para>
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.
    </para><para>
Hozzuk létre az ext3 fájlrendszert:
    </para><para>
<screen>mke2fs -j /dev/loop0</screen>
    </para><para>
Ellenőrizzük, hogy helyesen írtuk be a jelszót:
    </para><para>
<screen>losetup -d /dev/loop0
losetup -e aes256 -S xxxxxxxxxx /dev/loop0 /dev/hda2
Password:</screen>
    </para><para>
<screen>mkdir /mnt/efs
mount /dev/loop0 /mnt/efs</screen>
    </para><para>
Összehasonlíthatjuk a titkosított és az eredeti adatokat:
    </para><para>
<screen>xxd /dev/hda2  | less
xxd /dev/loop0 | less</screen>
    </para><para>
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:
    </para><para>
<screen>cp -avx / /mnt/efs</screen>
    </para><para>
Ha a Linux From Scratch könyvet használjuk, az alábbi eltéréseket kivéve
a dokumentum szerint folytathatjuk a munkát:
        <itemizedlist>
            <listitem>
<para>6. fejezet - Az util-linux telepítése:</para>
<para>Alkalmazzuk a loop-AES foltot a forrás kicsomagolása után.</para>
                </listitem><listitem>
<para>8. fejezet - Az LFS rendszer indíthatóvá tétele:</para>
<para>Szorítkozzunk a következő fejezetre.</para>
            </listitem>
        </itemizedlist>
    </para>
</sect1>

<sect1 id="setup-boot-device">
    <title>A boot eszköz beállítása</title>
    <sect2 id="initial-ramdisk">
    <title>A virtuális fájlrendszer (ramdisk) létrehozása</title>
        <para>
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:
        </para><para>
<screen>chroot /mnt/efs
mkdir /loader</screen>
        </para><para>
Ezután hozzuk létre a virtuális rendszerindító fájlrendszert (initial ramdisk, initrd),
amelyre később szükségünk lesz:
        </para><para>
<screen>cd
dd if=/dev/zero of=initrd bs=1k count=4096
mke2fs -F initrd
mkdir ramdisk
mount -o loop initrd ramdisk</screen>
        </para><para>
Hozzuk létre a fájlrendszer könyvtárszerkezetét, és másoljuk be a szükséges fájlokat:
    </para><para>
<screen>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/</screen>
    </para><para>
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:
    </para><para>
<screen>ldd /bin/bash</screen>
    </para><para>
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)):
    </para><para>
<screen>cat &gt; ramdisk/sbin/init &lt;&lt; &quot;EOF&quot;
#!/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</screen>
    </para><para>
Csatoljuk le a loopback eszközt, és tömörítsük be a virtuális rendszerindító fájlrendszert:
    </para><para>
<screen>umount -d ramdisk
rmdir ramdisk
gzip initrd
mv initrd.gz /boot/</screen>
    </para>
    </sect2>
    <sect2 id="bootable-cd">
    <title>Rendszerindítás CD-ROM-ról</title>
        <para>
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.
        </para><para>
Töltsük le, majd csomagoljuk ki a syslinux csomagot:
        </para><para>
<screen>wget ftp://ftp.kernel.org/pub/linux/utils/boot/syslinux/syslinux-2.07.tar.gz
tar -xvzf syslinux-2.07.tar.gz</screen>
        </para><para>
Állítsuk be az isolinux-ot:
        </para><para>
<screen>mkdir bootcd
cp /boot/vmlinuz-2.4.23 bootcd/vmlinuz
cp /boot/initrd.gz syslinux-2.07/isolinux.bin bootcd/
echo &quot;DEFAULT vmlinuz initrd=initrd.gz ro root=/dev/ram0 vga=4&quot; \
    &gt; bootcd/isolinux.cfg</screen>
        </para><para>
Hozzuk létre az indítható cd-képet (cd image), és írjuk ki egy írható cd-re:
        </para><para>
<screen>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}</screen>
        </para>
    </sect2>
    <sect2 id="boot-partition">
    <title>Rendszerindítás fizikai partícióról</title>
        <para>
A boot partíció egy alternatív rendszerindító eszköz: szükség lehet rá,
ha az indítható CD elvész. <emphasis>Vegyük figyelembe, hogy a hda1
egy írható eszköz, ezért nem biztonságos; csak szükség esetén
használjuk!</emphasis>
        </para><para>
Hozzuk létre és csatoljuk fel az ext2 fájlrendszert:
        </para><para>
<screen>dd if=/dev/zero of=/dev/hda1 bs=8192
mke2fs /dev/hda1
mount /dev/hda1 /loader</screen>
        </para><para>
Másoljuk át a rendszermagot és a virtuális rendszerindító fájlrendszert:
        </para><para>
<screen>cp /boot/vmlinuz-2.4.23 /loader/vmlinuz
cp /boot/initrd.gz /loader/</screen>
        </para><para>
Ha grub-ot használunk:
        </para><para>
<screen>mkdir /loader/boot
cp -av /boot/grub /loader/boot/
cat &gt; /loader/boot/grub/menu.lst &lt;&lt; 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</screen>
        </para><para>
Ha lilo-t használunk:
        </para><para>
<screen>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 &gt; /loader/etc/lilo.conf &lt;&lt; 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</screen>
        </para>
    </sect2>
</sect1>

<sect1 id="final-steps">
    <title>Utolsó lépések</title>
    <para>
Módosítsuk az /etc/fstab fájlt úgy, hogy tartalmazza a következő sort:
    </para><para>
<screen>/dev/loop0      /      ext3    defaults             0 1</screen>
    </para><para>
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.
    </para><para>
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:
    </para><para>
<screen>shred -n 1 -v /dev/hda4
losetup -e aes256 /dev/loop1 /dev/hda4
mkswap /dev/loop1</screen>
    </para><para>
Majd hozzunk létre egy indítószkriptet (S00swap) a rendszer indítókönyvtárában
(/etc/rcS.d/ Debian esetén):
    </para><para>
<screen>#!/bin/sh

echo &quot;az előzőleg kiválasztott jelszó&quot; | \
    losetup -p 0 -e aes256 /dev/loop1 /dev/hda4
swapon /dev/loop1</screen>
    </para>
</sect1>

<sect1 id="about">
    <title>A HOGYANról</title>
    <para>
A Titkosított root fájlrendszer HOGYAN 2002 novemberében készült el a
<ulink url="http://www.linuxfromscratch.org/lfs/news.html">Linux From Scratch</ulink>
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.
    </para><para>
A hozzászólásokat
<ulink url="http://www.cr0.net:8040/about/">Christophe Devine</ulink> várja.
    </para>
<sect2>
    <title>Magyar fordítás</title>
    <para> A magyar fordítást <ulink url="mailto:vape[kukac]maffia[pont]hu">Vadon Péter</ulink> készítette (2004.06.15). A lektorálást <ulink url="mailto:dacas[kukac]freemail[pont]hu">Daczi László</ulink>  végezte el (2004.06.24). A dokumentum legfrissebb változata megtalálható a <ulink url="http://tldp.fsf.hu/">Magyar Linux Dokumentációs Projekt</ulink> honlapján.</para>
  </sect2>

</sect1>

</article>

