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/
Nejnovější komentáře