LUKS

Encriptació

Cal desmuntar el volum abans de començar.

ATENCIÓ: l'encriptació del volum destrueix el contingut!

Com a root, activa LUKS a la partició i obre-la:

cryptsetup luksFormat <dispositiu>
cryptsetup luksOpen <dispositiu> <nom>

a on es el nom amb que vols que aparegui a /dev/mapper. Ara cal formatejar-la i, si vols, assignar una etiqueta de volum. Per exemple, per fer una ext4:

mkfs.ext4 -m0 /dev/mapper/<nom>
tune2fs -L <etiqueta> /dev/mapper/<nom>

En aquests moments pots tractar-la com qualsevol altre volum, i muntar-la com faries amb aquests:

mount /dev/mapper/<nom> <mountpoint>

Un cop hagis acabat de treballar, has de desmuntar el volum i tancar-lo:

umount <mountpoint>
cryptsetup luksClose <nom>

Si vols veure la informació de la capçalera LUKS:

cryptsetup luksDump <dispositiu>

Muntat

Com qualsevol altre volum, de partida només root pot muntar-lo. Tens dues opcions:

  • si és un disc fix, muntar-lo a fstab amb normalitat. Pot ser automàtic o manual. En aquest segon cas, segurament vols que l'usuari pugui fer-ho per sí mateix. No tinc clar en quin moment demanarà la clau d'encriptació. Ja investigaré quan ho necessiti. En tot cas, una possible manera de definir les opcions que he comentat seria:
/dev/mapper/<nom>   <mountpoint>   ext4   user,atime,noauto,rw,dev,exec,suid   0 0
  • si es un pendrive, que és el cas més probable, HAL el reconeixerà tal i com el connectis. En aquest cas només cal connectar el pendrive, introduir la clau quan la demani, i emprar-lo amb normalitat.

Vigila si estàs acostumat a treballar amb FAT32 als pendrives, perquè això té format linux i per tant has de tenir en compte propietaris i permisos. Segurament suporta també vfat, però no té gaire sentit fer-ho.

Si vols emprar-lo des de windows, pots fer servir FreeOTFE. Suporta particions linux. Per això no té sentit fer una vfat.

Expansió d'un LVM encriptat

Pensa a on posar això, ja que és LUKS + LVM. Per ara ho guardo aquí. Potser no és complet.

Desmunta el volum però no el tanquis. Llavors:

fsck.ext4 <volum_encriptat>
cryptsetup luksClose <volum_encriptat>
lvextend -l +1024 <lvm>
cryptsetup luksOpen <lvm> <nom_encriptat>
cryptsetup --verbose resize <nom_encriptat>
mount <volum_encriptat> <mountpoint> # per provar si esta be
umount <mountpoint>
e2fsck -f <volum_encriptat>
resize2fs <volum_encriptat>

Ara ja pots muntar el volum.

Classificar

Manera barroera de muntar varis volums alhora:

  • han de tenir la mateixa frase de pas
  • la guardem en un fitxer gpg, que abans d'encriptar hem afegit a tots els volums: cryptsetup luksAddKey /dev/sdXY
  • desencriptem el fitxer a /dev/shm
    • obviament el fitxer no pot ser al volum encriptat
    • millor encara, mkdir z; mount -t ramfs ramfs $PWD/z => memoria privada
  • obrim amb --key-file
  • esborrem el fitxer
    • millor encara, desmuntem la memoria privada

Per tant la frase que introduim en arrencar es la de GPG.

Script d'exemple amb read en comptes de gpg:

#!/bin/bash

RAM=/root/fdp
FDP=$RAM/fdp

mkdir -p $RAM
mount -t ramfs ramfs $RAM
chmod 700 $RAM

read -sp "?" fdp
echo "$fdp" >> $FDP
for d in b c d
do
   cryptsetup luksOpen --key-file $FDP /dev/sd${d}1 sd$d
done

umount $RAM
rmdir $RAM

i amb gpg, que es una bona idea i era la idea inicial pero falla perque no pot demanar la frase de pas de root durant l'arranc:

#!/bin/bash

RAM=/root/fdp
FDP=fdp

mkdir -p $RAM
mount -t ramfs ramfs $RAM
chmod 700 $RAM
gpg2 -do $RAM/$FDP $FDP.gpg

for d in b c d
do
   cryptsetup luksOpen --key-file $RAM/FDP /dev/sd${d}1 sd$d
done

umount $RAM
rmdir $RAM

Per afegir una frase que es a un fitxer: cryptsetup luksAddKey /dev/sda3 /path/fitxer

Per provar una frase: cryptsetup luksOpen --key-file $FDP --test-passphrase /dev/sdb3 && echo ok (es luksOpen pero no munta, nomes prova)

Volver al inicio