440 lines
14 KiB
Plaintext
440 lines
14 KiB
Plaintext
|
|
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/
|