Facendo riferimento a questo articolo vedremo come utilizzare luks con una singola chiave.
Nel momento in cui dobbiamo cifrare un disco, una partizione o piuttosto un Logical Volume, Luks può essere comodo per mantenere in sicurezza i nostri dati; ad esempio, potremmo voler cifrare la partizione di una chiavetta usb contenente nostri documenti personali, o magari intere parti del nostro filesystem… Insomma, in questi anni in cui la sicurezza è un’argomento più che quotidiano, è interessante vedere che Linux rende questa pratica alla portata di tutti!!
Luks utilizza il modulo dm_crypt fornendo una mappatura di basso livello che gestisce la codifica e decodifica dei dati del dispositivo; frapponendosi tra le operazioni di lettura/scrittua del kernel e le reali operazioni su disco, tutto quanto viene scritto (o messo in cache) sul nostro disco fisico viene cifrato.
Il suo funzionamento si basa sulla generazione di una chiave di crifatura usata per le operazioni di lettura-scrittura del disco, che a sua volta viene protetta tramite una password.
Vediamo come utilizzarlo.
Essend luks basato sul modulo mcrypt del kernel, per prima cosa andiamo a vedere se il modulo mcrypt è presente, e successivamente possiamo procedere all installazione di luks.
# lsmod | grep dm_crypt
Nel caso non avessimo output (il modulo non è caricato), carichiamolo con:
# modprobe dm_crypt # lsmod | grep dm_crypt dm_crypt 23177 0
Ora procediamo ad installare luks tramite il seguente comando:
Per distribuzioni Ubuntu e derivate:
$ sudo apt-get install crypt-setup
Per distribuzioni RHEL e derivate:
# yum install crypt-setup
Definiamo dunque la partizione che vogliamo criptare; useremo una chiavetta per il nostro esempio:
# fdisk -l /dev/sdb Disk /dev/sdb: 2147 MB, 2147483648 bytes 22 heads, 16 sectors/track, 11915 cylinders, total 4194304 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xd1db9e5f Device Boot Start End Blocks Id System /dev/sdb1 2048 4194303 2096128 83 Linux
La partizione che vogliamo cifrare è la prima della chiavetta sdb, ovvero /dev/sdb1.
Per fare questo utilizziamo il comando luksFormat che eseguirà una “pre-formattazione” del disco preparandolo alla cifratura:
# cryptsetup luksFormat /dev/sdb1 WARNING! ======== This will overwrite data on /dev/sdb1 irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase: Verify passphrase:
Verifichiamo due volte che il disco sia corretto, dopodiché scegliamo la nostra password (alcune regole possono essere definite per distribuzione, ad esempio CentOS7 richiede che la password sia almeno di 8 caratter).
Adesso andiamo ad aprire il nostro disco sempre tramite i comandi di cryptsetup:
# cryptsetup luksOpen /dev/sdb1 sdb1
Ovviamente ci verrà chiesta la password precedentemente inserita.
Una volta inserita, possiamo procedere alla creazione del filesystem:
# mkfs.ext4 /dev/mapper/sdb1 ...
Da notare che il comando di creazione del filesystem è stato dato sul Device Mapper /dev/mapper/sdb1. Questo è un device virtuale che ci permette di accedere al contenuto della partizione criptata tramite luks.
Terminata la creazione del filesystem, possiamo montare il disco come al solito:
# mount /dev/mapper/sdb1 /mnt/dati
E verificare che tutto sia come ce lo aspettiamo
# ls -l /mnt/dati total 24 drwxr-xr-x 3 root root 4096 nov 26 15:59 . drwxr-xr-x 4 root root 4096 nov 26 15:58 .. drwx------ 2 root root 16384 nov 26 15:59 lost+found
Ricordiamoci, quando abbiamo finito di utilizzare il disco, di procedere al suo smontaggio come al solito:
# umount /mnt/dati
Ma, soprattutto, ricordiamoci di “chiudere” la sessione criptata del dispositivo stesso
# cryptsetup luksClose sdb1
Questo rimuove il device criptato, evitando che qualcun altro possa accedere a /dev/mapper/sdb1 e, quindi, ai nostri dati.
L’eventuale tentativo di mount della partizione, senza che avvenga prima la sua apertura tramite il comando cryptsetup, ritorna un’errore:
# mount /dev/sdb1 /mnt/disco/ mount: unknown filesystem type 'crypto_LUKS'
Come abbiamo visto, dunque, mettere un filesystem in sicurezza è un’operazione veloce ed indolore su Linux.
Giusto come nota a margine, se per caso aveste bisogno di leggere questo disco da una macchina Windows (magari per lanciare qualche script bash), è disponibile un tool opensource chiamato LibreCrypt che permette l’apertura (sempre tramite password) di partizioni Luks dall’OS di Redmond.
Non avete più scuse 🙂
Lascia un commento