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

[bash]sudo apt-get install cryptsetup[/bash]

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

[bash]df -h[/bash]

Tvorba šifrovaného oddílu /home

odpojíme oddíl

[bash]sudo umount /home[/bash]

zahladíme stopy po nešifrovaných datech

[bash]dd if=/dev/urandom of=/dev/sda2[/bash]

a zašifrujeme

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

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íč

[bash]cryptsetup luksAddKey /dev/sda2[/bash]

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

[bash]cryptsetup luksOpen /dev/sda2 cryptohome[/bash]

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.

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

Test odpojení a připojení

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

[bash]cryptsetup luksClose cryptohome[/bash]

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

[bash]cryptsetup luksOpen /dev/sda2 cryptohome[/bash]

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

[bash]Enter LUKS passphrase:
key slot 0 unlocked.
Command successful[/bash]

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

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

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

[bash]cryptohome /dev/sda2 none luks[/bash]

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

[bash]/dev/mapper/cryptohome /home ext4 defaults 0 2[/bash]

/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

[bash]swapoff /dev/sda4[/bash]

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

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

[bash]dd if=/dev/urandom of=/dev/sda4 bs=1M[/bash]

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

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

a nezapomeneme ani upravit /etc/fstab

[bash]/dev/mapper/cryptoswap none swap sw 0 0[/bash]

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

[bash]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[/bash]

 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

[bash]cryptsetup luksDump /dev/sdb2[/bash]

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

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

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í)

[bash]cryptsetup luksAddKey /dev/sdb1 /etc/keys/sdb2_key[/bash]

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

[bash]cryptsetup –key-file /etc/keys/sdb2_key luksOpen /dev/sdb2 cryptohome[/bash]

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

[bash]cryptohome /dev/sda2 /etc/keys/sdb2_key luks[/bash]

/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

[bash]umount /home[/bash]

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

[bash]fsck.ext4 -C 0 -f /dev/mapper/cryptohome[/bash]

zavřeme LUKS filesystém

[bash]cryptsetup luksClose cryptohome[/bash]

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

[bash]lvextend –size +20G /dev/LVM-sda2-sdb2/home[/bash]

opět otevřeme LUKS filesystém

[bash]cryptsetup luksOpen /dev/LVM-sda2-sdb2/home cryptohome[/bash]

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

[bash]cryptsetup –verbose resize cryptohome[/bash]

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

[bash]fsck.ext4 -f /dev/mapper/cryptohome[/bash]

 

[bash]resize2fs /dev/mapper/cryptohome[/bash]

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

[bash]mount /dev/mapper/cryptohome /home[/bash]

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