editediteditedit

Kryptování disku pomocí DM-crypt a LUKS

Po provedení tohoto howto budete mít zakryptovaný disk, klíč k dekryptování na usb flash a vše se bude automaticky při bootu připojovat. Než začnete, doporučuji veškerá data zazálohovat, protože bez formátování to nepůjde :) .

Zakryptování disku


Nejdříve si připravíme jádro. Šifrovací algoritmus jsem zvolil AES, není ale problém použít neco jiného (např. twofish, serpent apod)
Kd: jadro
Device Drivers --> RAID and LVM Support --> 
[*] Multiple devices driver support (RAID and LVM)
<*> Device mapper support
<*> Crypt target support

Cryptographic Options --> 
 <*> AES cipher algorithims (i586)
Nyní nainstalujeme potřebný software:
Kd: software v gentoo
emerge sys-fs/cryptsetup
emerge sys-fs/device-mapper
Vygenerujeme 2kB klíč:
Kd: klic
dd if=/dev/urandom of=souborsklicem bs=1k count=2
A můžeme zakryptovat disk. Nejdřív je potřeba ho naformátovat. Šifrování lze použít buď čisté aes-cbc-plain nebo salted aes-cbc-essiv:sha256
Kd: kryptovani partition
cryptsetup -c aes-cbc-plain -s 256 luksFormat /dev/sda3 souborsklicem
Teď musíme otevřít zakryptovanou partition. Dešifrovaná data se objeví v /dev/mapper/nazevkontejneru, toto se chová jako normální partition, je na ní tudíž potřeba vytvořit filesystem a namountit.
Kd: open
cryptsetup -d souborsklicem luksOpen /dev/hda3 nazevkontejneru
mkfs.ext3 -m0 /dev/mapper/nazevkontejneru
mount /dev/mapper/nazevkontejneru /disk/data

#odpojeni
umount /disk/data
cryptsetup luksClose nazevkontejneru

Načtení klíčů z usb flash a připojení při bootu


ROZOR! Ve verzi 1.04 nastala změna a konfigurační soubor má jinou syntaxi!

Připravíme si zašifrovanou partition na usb flash a zkopirujeme na ni klíč na dešifrování disku
Kd: usb stick
dd if=/dev/urandom of=usbklic bs=1k count=2
cryptsetup -c aes-cbc-essiv:sha256 luksFormat /dev/sdb1 usbklic
cryptsetup -d usbklic luksOpen /dev/sdb1 fleska
mkfs.ext3 -m0 /dev/mapper/fleska
mount /dev/mapper/fleska /mnt/fleska
cp souborsklicem /mnt/fleska/
umount /mnt/fleska
cryptsetup luksClose fleska
Klíč pro flešku je potřeba mít někde na disku, např. v /etc/conf.d/. Teď zeditujeme soubor /etc/conf.d/crytpfs a nastavíme tak, aby si při bootování systém vytáhl z flešky klíče a dešifroval disk. Je dobré taky zakryptovat swap oddíl.
Kd: swap kryptovani
cryptsetup -c aes-cbc-plain -h sha256 -d /dev/urandom create swap /dev/hda2 #tam kde je swap partition
mkswap /dev/mapper/swap
swapon /dev/mapper/swap
Kd: vi etc/conf.d/cryptfs
swap=swap          #klic pro swap se generuje pri kazdem bootu jiny
source='/dev/hda2'  #swap partition

mount=fleska
source='/dev/sdb1'        
type=luks
options='-c aes-cbc-essiv:sha256 -d /etc/conf.d/usbklic'
pre_mount='mount -o ro /dev/mapper/fleska /mnt/fleska'
post_mount='umount /mnt/fleska; cryptsetup luksClose fleska'

mount=nazevkontejneru
source='/dev/sda1'
type=luks
options='-c aes-cbc-plain -d /mnt/fleska/souborsklicem'
Potom taky musíme patřičně upravit /etc/fstab
Kd: vi /etc/fstab
/dev/mapper/swap                  none           swap            sw                      0 0
/dev/mapper/nazevkontejneru       /disk/data     ext3            noatime                 0 0
Nyní už stačí jen rebot a vše by mělo fungovat automaticky :)
Wiki engine by dan. Content by marv.