Tuesday, July 19, 2011

Volume criptate in Linux

Postul asta are doua scopuri: sa-mi aduc aminte cum se foloseste cryptsetup in Linux si sa ramina "pentru posteritate".

In Linux sunt 2 solutii pentru criptarea datelor:

  • cryptsetup simplu, unde criptezi cu dm-crypt o partitie, volum LVM sau un fisier. Spun ca e simplu pentru ca poti folosi o parola sau un fisier pentru securizarea datelor si cam atit. Nu ca asta le face mai putin sigure, dar e mai complicat cind pierzi parola sau fisierul.
  • cryptsetup folosind LUKS (Linux Unified Key Setup) solutie care o voi descrie in contiuare. Cu LUKS exista posibilitatea de a folosi mai multe chei (sunt 8 sloturi) pentru criptarea datelor
Pentru inceput alegem device-ul ce va fi criptat, in acest exemlu /dev/sdb3

/dev/sdb3           19453       38913   156320482+  83  Linux

Alegem cifru AES-256, hash pentru parola SHA512 iar linia de comanda pentru crearea partitiei criptate va fi:

# cryptsetup -c aes -s 256 -h sha256 luksFormat /dev/sdb3
WARNING!
========
This will overwrite data on /dev/sdb3 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.

Dupa aceasta operatie, avem o partitie criptata si atit. Pasul urmator e sa o "deschidem" ca sa o putem formata cu un sistem de fisiere ca sa putem folosi partitia ca pe orice alta partitie:

# cryptsetup luksOpen /dev/sdb3 sdb3
Enter LUKS passphrase for /dev/sdb3:
key slot 0 unlocked.
Command successful.

Dupa aceasta comanda, vom avea acces la partitia criptata prin /dev/mapper/sdb3 (am ales numele sa fie identic cu partitia ca sa fie mai simplu pentru mine). Pasul urmator e sa formatam partitia:

# mkfs.ext3 -i 65536 /dev/mapper/sdb3
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2443264 inodes, 39079863 blocks
1953993 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
1193 block groups
32768 blocks per group, 32768 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

Acum putem monta partitia /dev/mapper/sdb3 unde dorim:

# mount /dev/mapper/sdb3 /mnt/
# df | grep sdb3
/dev/mapper/sdb3     156003840    192072 147995796   1% /mnt

Cind nu mai avem nevoie de partitia criptata, se va demonta si inchide device-ul (cryptsetup luksClose /dev/mapper/sdb3).

Voi reveni in alt post cu solutii de montare automata a partitiilor criptate.



No comments: