LUKS: Crittografia dei dati del disco rigido Linux con supporto NTFS in Linux

L’acronimo LUKS sta per Linux Unified Key Setup, che è un ampio metodo di crittografia dei dischi utilizzato dal kernel Linux ed è implementato con il pacchetto cryptsetup.

Il comando cryptsetup crittografa in modo dinamico un disco di volume utilizzando una chiave di crittografia simmetrica derivata dalla passphrase fornita ogni volta che un disco di volume, una partizione e anche un intero disco (anche una chiavetta USB) viene montato nella gerarchia del filesystem e utilizza il cifrario aes-cbc-essiv:sha256.

Linux Hard Disk Encryption Using LUKS

Poiché LUKS può crittografare l’intero blocco di dispositivi (hard-disk, chiavette USB, dischi Flash, partizioni, gruppi di volumi, ecc.) sui sistemi Linux, è ampiamente raccomandato per proteggere i supporti di archiviazione rimovibili, i dischi rigidi dei laptop o i file di swap in Linux e non è raccomandato per la crittografia a livello di file.

NTFS (New Technology File System) è un file system proprietario sviluppato da Microsoft.

Ubuntu 14.04 fornisce pieno supporto per la crittografia LUKS e anche il supporto nativo NTFS per Windows con l’aiuto del pacchetto ntfs-3g.

Per dimostrare il mio punto in questo tutorial, ho aggiunto un nuovo disco rigido (il 4°) sulla macchina Ubuntu 14.04 (il riferimento di sistema al nuovo HDD aggiunto è /dev/sdd) che sarà diviso in due partizioni.

  1. Una partizione (/dev/sdd1 -primaria) utilizzata per la crittografia LUKS.
  2. La seconda partizione (/dev/sdd5 – estesa) formattata in NTFS per accedere ai dati su entrambi i sistemi basati su Linux e Windows.

Inoltre, le partizioni saranno montate automaticamente su Ubuntu 14.04 dopo il riavvio.

Passo 1: Creare Partizioni del Disco.

1. Dopo aver aggiunto fisicamente il tuo hard disk alla tua macchina, utilizza il comando ls per elencare tutti i /dev/dispositivi (il quarto disco è /dev/sdd).

# ls /dev/sd*
List Partitions in Linux

2. Controlla il tuo nuovo HDD con il comando fdisk.

$ sudo fdisk –l /dev/sdd
Check Linux Hard Disk

Poiché non è stato scritto alcun filesystem, il disco non contiene ancora una tabella partizioni valida.

3. I passi successivi sezionano l’hard disk per ottenere due partizioni usando l’utilità disco cfdisk.

$ sudo cfdisk /dev/sdd

4. La schermata successiva apre la modalità interattiva con cfdisk. Seleziona lo spazio libero del tuo hard disk e vai all’opzione Nuovo utilizzando le frecce direzionali sinistra/destra.

cfdisk Interactive Mode

5. Scegli il tipo di partizione come Primaria e premi Invio.

Select Your Partition Type

6. Scrivi la dimensione desiderata della partizione in MB.

Write Down Partition Size

7. Crea questa partizione all’Inizio dello spazio libero del disco.

Create a Partition

8. Passa all’opzione Tipo della partizione e premi Invio.

Partition Type

9. Il prompt successivo mostra un elenco di tutti i tipi di filesystem e il loro codice numerico (numero esadecimale). Questa partizione sarà criptata Linux LUKS quindi scegli il codice 83 e premi di nuovo Invio per creare la partizione.

Enter File System Type

10. La prima partizione è stata creata e il prompt dell’utilità cfdisk torna all’inizio. Per creare la seconda partizione da utilizzare come NTFS, seleziona lo spazio libero rimanente, vai all’opzione Nuovo e premi il tasto Invio.

Create New Partition

11. Questa volta la partizione sarà del tipo Logica Estesa. Quindi, seleziona l’opzione Logica e premi nuovamente Invio.

Select Logical Partition Type

12. Inserisci nuovamente la dimensione della partizione. Per utilizzare lo spazio libero rimanente come nuova partizione, lascia il valore predefinito sulla dimensione e premi solo Invio.

Enter Size of Partition

13. Scegli nuovamente il codice del tipo di partizione. Per il filesystem NTFS, seleziona il codice di volume 86.

Select Partition Type

14. Dopo aver revisionato e verificato le partizioni, seleziona Scrivi, rispondi alla successiva domanda interattiva e quindi Esci per uscire dall’utilità cfdisk.

Write Partition Table to Disk
Confirm Changes
Quit to leave cfdisk utility

Congratulazioni! Le tue partizioni sono state create con successo e sono pronte per essere formattate e utilizzate.

15. Per verificare nuovamente la Tabella delle Partizioni del disco, esegui nuovamente il comando fdisk che mostrerà informazioni dettagliate sulla tabella delle partizioni.

$ sudo fdisk –l /dev/sdd
Confirm Parition Table

Passo 2: Creare il Filesystem delle Partizioni

Filesystem NTFS

16. Per creare il filesystem NTFS sulla seconda partizione, esegui il comando mkfs.

$ sudo mkfs.ntfs /dev/sdd5
Create NTFS Filesystem

17. Per rendere la partizione disponibile, deve essere montata sul filesystem su un punto di mount. Monta la seconda partizione sul quarto hard-disk al punto di mount /opt utilizzando il comando mount.

$ sudo mount /dev/sdd5 /opt

18. Successivamente, controlla se la partizione è disponibile ed è elencata nel file /etc/mtab utilizzando il comando cat.

$ cat /etc/mtab
Check Partition Availability

19. Per smontare la partizione utilizza il seguente comando.

$ sudo umount /opt
EXT4 LUKS

20. Assicurati che il pacchetto cryptsetup sia installato sul tuo sistema.

$ sudo apt-get install cryptsetup		[On Debian Based Systems]

# yum install cryptsetup				[On RedHat Based Systems]

21. Ora è il momento di formattare la prima partizione sul quarto disco rigido con filesystem ext4 emettendo il seguente comando.

$ sudo luksformat  -t ext4  /dev/sdd1

Rispondi con MAIUSCOLO alla domanda “Sei sicuro?” e inserisci tre volte la passphrase desiderata.

Format Partition

Nota: A seconda della dimensione della partizione e della velocità dell’HDD, la creazione del filesystem potrebbe richiedere del tempo.

22. È anche possibile verificare lo stato del dispositivo di partizione.

$ sudo cryptsetup luksDump  /dev/sdd1
Verify Partition Status

23. LUKS supporta un massimo di 8 password aggiunte. Per aggiungere una password utilizza il seguente comando.

$ sudo cryptsetup luksAddKey /dev/sdd1
Add a Password

Per rimuovere una password utilizza.

$ sudo cryptsetup luksRemoveKey /dev/sdd1
Remove a Password

24. Per rendere attiva questa partizione crittografata deve avere una voce di nome (essere inizializzata) nella directory /dev/mapper con l’aiuto del pacchetto cryptsetup.

Questa impostazione richiede la seguente sintassi da riga di comando:

$ sudo cryptsetup luksOpen  /dev/LUKS_partiton  device_name

Dove “nome_dispositivo” può essere un nome descrittivo a tua scelta! (Io l’ho chiamato volume_criptato). Il comando effettivo sarà come mostrato di seguito.

$ sudo cryptsetup luksOpen  /dev/sdd1 crypted_volume
Active Encrypted Partition

25. Verifica se il tuo dispositivo è elencato su /dev/mapper, directory, collegamento simbolico e stato del dispositivo.

$ ls /dev/mapper
$ ls –all /dev/mapper/encrypt_volume
Verify Encrypted Partition
$ sudo cryptsetup –v status encrypt_volume
Encrypted Partition Status

26. Ora, per rendere il dispositivo di partizione ampiamente disponibile, montalo sul tuo sistema in un punto di mount utilizzando il comando mount.

$ sudo mount  /dev/mapper/crypted_volume  /mnt
Mount Encrypted Partition

Come si può vedere, la partizione è montata ed è accessibile per scrivere dati.

27. Per renderla non disponibile, basta smontarla dal tuo sistema e chiudere il dispositivo.

$ sudo umount  /mnt
$ sudo cryptsetup luksClose crypted_volume
Umount Encrypted Partition

Passo 3: Montare automaticamente la partizione

Se utilizzi un disco rigido fisso e hai bisogno che entrambe le partizioni siano montate automaticamente dal sistema dopo il riavvio, devi seguire questi due passaggi.

28. Prima modifica il file /etc/crypttab e aggiungi i seguenti dati.

$ sudo nano /etc/crypttab
  1. Nome target: Un nome descrittivo per il tuo dispositivo (vedi punto sopra 22 su EXT4 LUKS).
  2. Unità di origine: La partizione del disco rigido formattata per LUKS (vedi punto sopra 21 su EXT4 LUKS).
  3. File chiave: Scegli “none”
  4. Opzioni: Specifica luks

La riga finale dovrebbe apparire come mostrato di seguito.

encrypt_volume               /dev/sdd1          none       luks
Mount Partition Automatically

29. Quindi modifica /etc/fstab e specifica il nome del tuo dispositivo, il punto di mount, il tipo di filesystem e altre opzioni.

$ sudo nano /etc/fstab

Nell’ultima riga utilizza la seguente sintassi.

/dev/mapper/device_name (or UUID)	/mount_point     filesystem_type     options    dump   pass

E aggiungi il tuo contenuto specifico.

/dev/mapper/encrypt_volume      /mnt    ext4    defaults,errors=remount-ro     0     0
Add Partition Entry in Fstab

30. Per ottenere l’UUID del dispositivo utilizza il seguente comando.

$ sudo blkid
Get Device UUID

31. Per aggiungere anche il tipo di partizione NTFS creato in precedenza, utilizzare la stessa sintassi come sopra su una nuova riga in fstab (Qui viene utilizzata la ridirezione degli allegati dei file Linux).

$ sudo su -
# echo "/dev/sdd5	/opt	ntfs		defaults		0              0"  >> /etc/fstab
Add NTFS Partition in fstab

32. Per verificare le modifiche, riavviare la macchina, premere Invio dopo il messaggio di avvio “Starting configure network device” e digitare la password del dispositivo.

Reboot Machine
Verify Partition is Mounted Automatically

Come puoi vedere entrambe le partizioni disco sono state montate automaticamente nella gerarchia del filesystem di Ubuntu. Come consiglio, non utilizzare volumi automaticamente cifrati dal file fstab su server fisicamente remoti se non puoi accedere alla sequenza di riavvio per fornire la password del tuo volume crittografato.

Le stesse impostazioni possono essere applicate a tutti i tipi di supporti rimovibili come chiavette USB, memorie flash, dischi rigidi esterni, ecc. per proteggere dati importanti, segreti o sensibili in caso di intercettazioni o furti.

Source:
https://www.tecmint.com/linux-hard-disk-encryption-using-luks/