BIZTONSÁG Fájlrendszer titkosítás

A Gentoo Linux Wiki wikiből

Tartalomjegyzék

[szerkesztés] Szükséges kernel beállítások

Az itt leírtak megvalósításához legalább 2.6.5-ös kernel szükséges, mivel ez a megoldás a 2.6-os kernelsorozat egy új device-mapper megoldására támaszkodik. Ettől a verziótól kezdve minden szükséges dolog benne van a vanilla kernelben, így nincs szükség egyéb patch-ekre.

A kernelben a "device-mapper" és a "dm-crypt" támogatást kell bekapcsolni, amik a "Device Drivers > Multi-device support (RAID and LVM)" menüpont alatt találhatóak:

#
# Multi-device support (RAID and LVM)
#
CONFIG_MD=y
CONFIG_BLK_DEV_DM=y
CONFIG_DM_CRYPT=y

Ezen kívül kell még valamilyen titkosító algoritmus támogatás is:

#
# Cryptographic options
#
CONFIG_CRYPTO=y
CONFIG_CRYPTO_MD4=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=y
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_BLOWFISH=y
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_SERPENT=y
CONFIG_CRYPTO_AES_586=y

Ezek az én beállításaim, mindenki azt az algoritmust választja, amelyik a szívéhez közel áll. Aki még egyiket sem érzi 'barátjának', akkor javaslom tekintse át a következő összehasonlító tesztet

Az itt felhozott példákhoz kizárólag az AES-586 támogatás szükséges.

[szerkesztés] Szükséges csomagok

A Gentoo initscriptjei alapból fel vannak készítve titkosított fájlrendszerek kezelésére, így nem kell semmit hekkelni

Ehhez viszont megfelelően friss csomagokra van szükség, konkrétan >=sys-apps/baselayout-1.11.2

Ezen kívül kellenek még a következő csomagok:

  • sys-libs/device-mapper
  • sys-fs/cryptsetup-0.1

[szerkesztés] Beállítások

Egyetlen konfigurációs állományban található minden szükséges beállítás: /etc/conf.d/cryptfs A fájl elég bőbeszédű, ezen dokumentum végigolvasása után kitöltése egyértelmű.

[szerkesztés] Titkosított swap partíció

Az erre vonatkozó rész, a fent említett állományból:

# If no options are given, they will default to: -c aes -h sha1 -d /dev/urandom
# If no makefs is given then mkswap will be assumed
swap=swap0
source='/dev/hdaX'

és az ennek megfelelően módosított swap bejegyzés az /etc/fstab állományból:

/dev/mapper/swap0   none            swap        sw                      0 0

Ha mindössze ennyit teszünk, és nem is érdekel hogy ilyenkor mi történik, akkor is a következő boot után egy sokkal (akár 73%-kal:) biztonságosabb rendszert használhatunk.

[szerkesztés] Egyéb titkosított fájlrendszerek

Itt kicsit körültekintőbben kell eljárnunk, ugyanis ellentétben a swap partícióval, (aminek a tartalma csak egy reboot-ig fontos) itt jó eséllyel éles adatokat szeretnénk titkosítani. Így valami reprodukálható dolgot kell összehozni :-)

Mielőtt bármit is tennénk nem árt, ha teljes mentést készítünk az érintett fájlrendszerekről. Én szóltam. :-|

Ha még jobban meg akarjuk nehezíteni az ellopott titkosított diszk feltörését, akkor először írjuk tele random bitekkel a titkosítandó eszközt:

dd if=/dev/urandom of=/dev/hdaY

Majd hozzunk létre egy titkosított partíciót:

cryptsetup create home /dev/hdaY
Enter passphrase:

Erre a program kér egy jelszót, amiből elő fogja állítani a titkosításhoz szükséges (jelen esetben 256 bites) kulcsot. Ilyenkor még nincs veszve semmi, csak egy virtuális eszközmeghajtó jött létre, amit a /dev/mapper/home néven érhetünk el. Ezt ellenőrizni is tudjuk a következő paranccsal:

cryptsetup status home
/dev/mapper/home is active:
  cipher:  aes-cbc-plain
  keysize: 256 bits
  device:  /dev/hdaY
  offset:  0 sectors
  size:    17044902 sectors

Ezek után, (ha még emlékszünk az imént megadott jelszóra) létrehozhatjuk a kívánt fájlrendszert, immár a titkosított eszközre:

mkfs.ext3 /dev/mapper/home

Az eszköz máris használatra kész, csatoljuk be a fájlrendszerbe, és töltsünk rá adatokat, vagy mittudomén...

Hogy a következő boot során automatikusan ismét elérhető legyen ez a titkosított fájlrendszer, fixáljuk be a /etc/conf.d/cryptfs állományba a következőket:

mount=home
source=/dev/hdaY
options=

És az ennek megfelelően módosított home bejegyzés az /etc/fstab állományból:

/dev/mapper/home    /home           ext3        noatime                 0 0

Ezzel elértük, hogy a következő boot során a /home könyvtár (az aktuális példa szerint) csatolása előtt a rendszer jelszót fog kérni. Ez a fájlrendszer csak abban az esetben érhető el, ha ugyanazt a jelszót adjuk meg, amit a létrehozásakor.

[szerkesztés] De mi van a színfalak mögött?

Itt jönnek a kicsit érdekesebb, cserébe bonyolultabb dolgok ;-)

Mindenért a device-mapper a felelős. !! FIXME !! ide kellene egy leírás, hogy mi is történik pontosan...

Addig is, olvasd el ezt

[szerkesztés] cryptsetup

Ezzel a paranccsal lehet kezelni a virtuális eszközmeghajtókat (device mappings). A parancs --help kapcsolója mindent elárul:

Usage: cryptsetup [OPTION...] <action> <name> [<device>]
 -v, --verbose               Shows more detailed error messages
 -c, --cipher=STRING         The cipher used to encrypt the disk (see
                             /proc/crypto) (default: "aes")
 -h, --hash=STRING           The hash used to create the encryption key from
                             the passphrase (default: "ripemd160")
 -y, --verify-passphrase     Verifies the passphrase by asking for it twice
 -d, --key-file=STRING       Read the key from a file (can be /dev/random)
 -s, --key-size=BITS         The size of the encryption key (default: 256)
 -b, --size=SECTORS          The size of the device
 -o, --offset=SECTORS        The start offset in the backend device
 -p, --skip=SECTORS          How many sectors of the encrypted data to skip
                             at the beginning
Help options:
 -?, --help                  Show this help message
 --usage                     Show this help message
<action> is one of:
       create - create device
       remove - remove device
       reload - modify active device
       resize - resize active device
       status - show device status
<name> is the device to create under /dev/mapper
<device> is the encrypted device

Ennek fényében a fent bemutatott titkosított swap partíció a következő paranccsal jön létre:

cryptsetup -c aes -h sha1 -d /dev/urandom swap0 /dev/hdaX
mkswap /dev/mapper/swap0

Ez azt jelenti, hogy létrehoztunk egy titkosított eszközt a következő paraméterekkel:

  • az igazi eszköz a /dev/hdaX
  • a titkosítás 256 bites kulcsot használó, aes algoritmussal történik
  • a titkosításhoz használt kulcsot a /dev/urandom-ból kaptuk (ripemd160 hash algoritmussal), így ez elég nehezen reprodukálható az eszköz törlése után (pl reboot)
  • a virtuális, titkosított eszköz /dev/mapper/swap0-ként érhető el.

[szerkesztés] Tippek

  • a titkosítandó eszköz természetesen lehet akár egy partíció, az egyész winyó, vagy csak egy sima file is...
  • a jelszó elvesztése esetén az adatokhoz gyakorlatilag nem lehet többé hozzáférni. Ezért érdemes jóól megjegyezni.
  • működő gép esetében a titkosított eszköz már megfelelően be van állítva, tehát ilyenkor már bárki hozzá tud férni a rajta lévő adatokhoz! A fájlrendszer biztonságos leválasztásához (ahhoz hogy a felcsatolásakor ismét jelszót kérjen) a vituális eszközmeghajtót törölni kell!
  • a swap partícióhoz hasonlóan a /tmp partíciót is használhatjuk random jelszóval létrehozott titkosított fájlrendszerrel.
Személyes eszközök