Domů > Linuxové zápisky pro správce > LUKS: šifrování oddílu /home a swap

LUKS: šifrování oddílu /home a swap

V tomto zápisku si zašifrujeme oddíl /home a swap pomocí LUKS, např. na našem notebooku, aby se při jeho ztrátě nedostala neoprávněná osoba. I když si řeknete, že nemáte na disku nic tajného, myslím si, že ani fotky (např. z dovolené) nemusí vidět někdo cizí. Přeci jen se jedná o Vaše soukromá data, která si nějakou tu bezpečnost zaslouží.

Výchozí stav

  • Ubuntu 11.04
  • rozdělený disk na /boot, /, /home, swap
  • root práva sudo

Instalace

nainstalujeme si potřebný balíček

sudo apt-get install cryptsetup

Vykopírování dat

pokud máme na /home nějaká data, vykopírujeme si je např. na externí disk nebo na jiný volný oddíl, jelikož při vytváření šifrovaného oddílu budou smazána!

Zjištění, kde máme oddíl /home

v tomto případě máme /home na /dev/sda2

ověříme si to příkazem

df -h

Tvorba šifrovaného oddílu /home

odpojíme oddíl

sudo umount /home

zahladíme stopy po nešifrovaných datech

dd if=/dev/urandom of=/dev/sda2

a zašifrujeme

cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/sda2

Budeme muset zadat YES, že souhlasíme se smazáním dat (zálohu již máme, že?) a také budeme vyzváni k zadání našeho tajného hesla k šifrovanému oddílu.

popř. můžeme přidat další klíč

cryptsetup luksAddKey /dev/sda2

Tvorba blokového zařízení ze šifrovaného oddílu

vytvoříme tedy blokové zařízení s názvem cryptohome, se kterým budeme moci následně pracovat jako s běžným diskem

cryptsetup luksOpen /dev/sda2 cryptohome

abychom mohli se zašifrovaným /dev/sda2 pracovat, musíme jej dešifrovat, proto budeme vyzváni k zadání našeho tajného hesla (klíče)

Tvorba souborového systému na šifrovaném oddíle

V tuto chvíli máme šifrovaný oddíl, ale bez souborového systému. Abychom mohli oddíl využívat a zapisovat na něj data, je potřeba tento filesystem vytvořit. Naše volba je ext4.

mkfs.ext4 -j -m 1 -O dir_index,filetype,sparse_super /dev/mapper/cryptohome

Test odpojení a připojení

zavřeme (tzn. znepřístupníme) náš cryptohome

cryptsetup luksClose cryptohome

otevřeme (tzn. rozšifrujeme našim tajným klíčem)

cryptsetup luksOpen /dev/sda2 cryptohome

a budeme vyzváni k zadání našeho tajného klíče

Enter LUKS passphrase:
key slot 0 unlocked.
Command successful

Nyní si oddíl připojíme do /mnt/cryptohome a vytvoříme si zkušební soubor linux

mkdir -p /mnt/cryptohome
mount /dev/mapper/cryptohome /mnt/cryptohome
touch /mnt/cryptohome/linux
ls /mnt/cryptohome/
lost+found linux

Funguje?

Při této příležitosti si do /mnt/cryptohome nakopírujeme náš původní zálohovaný /home.

Automatické připojení oddílu při startu systému

při zavádění systému budete při úvodní animaci (plymouth) vyzváni k zadání Vašeho tajného klíče k připojovanému oddílu, pokud přidáme do /etc/crypttab následující řádek

cryptohome /dev/sda2 none luks

a samozřejmě upravíme i /etc/fstab

/dev/mapper/cryptohome /home     ext4     defaults     0     2

/home máme vyřešený, rebootnem systém, zadáme heslo a otestujeme v provozu.

Šifrovaný swap

Jelikož swap, jak již z názvu vyplývá, je odkládací prostor, který ukládá data, která se nevejdou do paměti, můžou se i do něj zatoulat nějaká data, do kterých nikomu cizímu nic není. Proto zašifrujeme i tento.

opět si zjistíme, na kterém oddíle máme swap, a abychom s ním mohli pracovat, odpojíme ho

swapoff /dev/sda4

zde je vidět, že já ho mám na /dev/sda4

důkladně ho „vyčistíme“ náhodnými daty

dd if=/dev/urandom of=/dev/sda4 bs=1M

do /etc/crypttab přidáme řádek

cryptoswap /dev/sda4 /dev/urandom cipher=aes-cbc-essiv:sha256,size=256,hash=sha256,swap

a nezapomeneme ani upravit /etc/fstab

/dev/mapper/cryptoswap none swap sw 0 0

To je vše, nyní rebootneme systém a ověříme, zda je vše v pořádku

cryptsetup status cryptoswap
/dev/mapper/cryptoswap is active:
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
device: /dev/sda4
offset: 0 sectors
size: 8401932 sectors
mode: read/write

 Další úpravy: Děšifrování klíčem (nikoliv pouze heslem)

V některých případech se hodí, aby dešifrování proběhlo automaticky, a to bez zadávání hesla. Ten pak můžete mít např. na flashce, kterou po připojení oddílu odpojíte a schováte na bezpečné místo:-)

podíváme se, kolikabitový klíč máme na našem cryptohome, který je na /dev/sda2

cryptsetup luksDump /dev/sdb2

máme tedy 256 bitový klíč, což je 32 bytů. Proto si vytvoříme 32 bytový klíč z náhodných znaků

dd if=/dev/random of=/etc/keys/sdb2_key bs=1 count=32

přidáme klíč k našemu šifrovanému konteineru (při této akci budeme vyzváni k zadání našeho hesla k šifrování)

cryptsetup luksAddKey /dev/sdb1 /etc/keys/sdb2_key

nyní můžeme LUKS připojit zadáním našeho hesla nebo vytvořeným klíčem

cryptsetup --key-file /etc/keys/sdb2_key luksOpen /dev/sdb2 cryptohome

upravíme /etc/crypttab (pro automatické připojování při startu), kam zadáme cestu ke klíči

cryptohome /dev/sda2 /etc/keys/sdb2_key luks

/etc/fstab zůstane nezměněný

Zvětšení šifrované LV

Možná Vás bude také zajímat, jak zvětšit šifrovaný oddíl v případě, že využíváte LVM. Tam je pravděpodobnost změny velikosti dost reálná. Data by měla zůstat zachována, nicméně doporučuji předem zálohovat!

odpojíme šifrovaný oddíl

umount /home

filesystém musí být čistý, proto ho zkontrolujeme, popř. opravíme

fsck.ext4 -C 0 -f /dev/mapper/cryptohome

zavřeme LUKS filesystém

cryptsetup luksClose cryptohome

podle návodu si roztáhneme LV (např. o 20GB)

lvextend --size +20G /dev/LVM-sda2-sdb2/home

opět otevřeme LUKS filesystém

cryptsetup luksOpen /dev/LVM-sda2-sdb2/home cryptohome

a zvětšíme ho na celou délku LV

cryptsetup --verbose resize cryptohome

nyní roztáhneme i ext4, ale předtím samozřejmě znovu zkontrolujeme

fsck.ext4 -f /dev/mapper/cryptohome

 

resize2fs /dev/mapper/cryptohome

na závěr si připojíme již zvětšený šifrovaný oddíl

mount /dev/mapper/cryptohome /home

Zdroje informací

http://gentoo-blog.de/ubuntu/encrypted-home-and-swap-partition-on-ubuntu-10-10-maverick-with-auto-logon/
http://blog.milde.cz/post/265-sifrovani-home-oddilu-v-ubuntu/
http://www.gigahype.com/resize-luks-encryped-lvm-partition/
http://www.finnie.org/2009/07/26/keyfile-based-luks-encryption-in-debian/

  1. Bez komentářů.
  1. Žádné zpětné odkazy