In uno dei nostri articoli precedenti, abbiamo appreso come puoi crittografare l'intero filesystem di root facilmente su Linux.
Tuttavia, in alcuni casi, potresti voler crittografare una semplice partizione che potrebbe memorizzare alcuni dei tuoi file importanti.
Come già sai, la crittografia dei dischi è fondamentale . Se il tuo laptop dovesse essere rubato, probabilmente perderesti tutte le tue informazioni personali.
Tuttavia, ci sono alcuni modi per far fronte a questo problema:crittografando le partizioni del disco .
In questo tutorial imparerai tutti i passaggi necessari per crittografare un'intera partizione del disco , proteggilo con una passphrase o con un file di chiavi.
Ad esempio, l'articolo verrà illustrato su un sistema operativo RHEL 8, ma non dovrebbero esserci differenze se ne utilizzi un altro.
Prerequisiti
Per eseguire la maggior parte dei comandi forniti in questo articolo, devi disporre dei diritti di amministratore.
Per verificare se questo è il caso o meno, puoi eseguire i "gruppi " e verifica di appartenere al "sudo ” per le distribuzioni basate su Debian o “wheel ” per quelli basati su RedHat.
$ groups
Se non disponi di tali diritti, puoi leggere uno dei nostri articoli sull'argomento su come ottenere i diritti sudo per le distribuzioni Ubuntu o CentOS.
Crittografa la partizione usando cryptsetup
Come specificato negli articoli precedenti, la crittografia di una partizione comporta la formattazione dell'intero disco .
Di conseguenza, se prevedi di crittografare un disco con dati esistenti, dovresti ora che i tuoi dati verranno cancellati nel processo. Per evitare di perdere qualcosa, dovresti fare un backup dei tuoi dati su un disco esterno o in un cloud online.
Crea nuova partizione su disco
Per crittografare una partizione, dobbiamo prima crearne una nuova utilizzando l'utilità "fdisk" . Per l'esempio, creeremo una nuova partizione denominata "sdb1" sul disco "sdb".
$ sudo fdisk /dev/sdb
Nell'utilità fdisk, puoi creare una nuova partizione utilizzando la parola chiave "n" e specifica che vuoi una partizione con una dimensione di 5 GB, ad esempio.
Se non sei sicuro di come utilizzare "fdisk" o come creare partizioni , abbiamo un articolo dedicato su questo argomento.
Al termine del processo, devi utilizzare la parola chiave "w" per scrivere le modifiche sul disco.
Fantastico, ora che la tua partizione è stata creata, la formattiamo come partizione LUKS .
Formatta la partizione del disco come LUKS
Per crittografare la partizione, utilizzeremo un comando relativo al progetto LUKS .
Il progetto LUKS, abbreviazione di Linux Unified Key System , è una specifica utilizzata per crittografare tutti i dispositivi di archiviazione utilizzando speciali protocolli crittografici. Come descritto, LUKS è solo una specifica, avrai bisogno di un programma che la implementi.
In questo caso, utilizzeremo l'utilità "cryptsetup" . Come spiegato nella sezione del manuale, cryptsetup mira a creare spazi crittografati per dm-crypt.
Prima di tutto, assicurati di avere il "cryptsetup ” utilizzando il comando “quale”.
$ which cryptsetup
Se non riesci a trovare cryptsetup sul tuo server, assicurati di installarlo usando uno dei seguenti comandi
$ sudo apt-get install cryptsetup (for Debian distributions)
$ sudo yum install cryptsetup (for RHEL/CentOS distributions)
Per creare la tua partizione LUKS, devi eseguire "cryptsetup" seguito da "luksFormat" e il nome della partizione da formattare.
$ sudo cryptsetup luksFormat /dev/sdb1
Prima di tutto, ti viene ricordato che la crittografia del disco lo formatterà effettivamente nel processo.
Dopo aver digitato "SI ” in maiuscolo, dovrai scegliere una passphrase per proteggere il tuo dispositivo.
LUKS supporta due modi per proteggere i tuoi file multimediali:utilizzando una passphrase (quello che utilizziamo attualmente) e utilizzo delle chiavi . Per ora, puoi scegliere una password sicura e la tua partizione dovrebbe essere formattata automaticamente.
Ora che la tua partizione è stata creata, puoi ispezionarla usando "lsblk Comando ” :la partizione deve essere contrassegnata come “crypto_luks “.
$ lsblk -f
Eccezionale! Ora che il volume è formattato, possiamo aprirlo e creare un semplice filesystem ext4 su di esso.
Crea filesystem ext4 su partizione
Per impostazione predefinita, il tuo volume crittografato è chiuso, il che significa che non puoi accedere ai dati disponibili su di esso.
Per “aprire”, che significa “sbloccare” il tuo volume, devi utilizzare nuovamente il comando “cryptsetup” seguito da “luksOpen” e dal nome del volume.
Alla fine del comando, fornisci un nome per il tuo volume aperto, in questo caso sceglieremo "cryptpart “.
$ sudo cryptsetup luksOpen /dev/sdb1 cryptpart
Come puoi intuire, ti viene chiesto di fornire la passphrase che hai scelto nella sezione precedente.
Eseguendo nuovamente il comando "lsblk", probabilmente hai notato che è stato creato un volume sotto il volume crittografato "sdb1" denominato "cryptpart “. Il "mappatore di dispositivi" , che è uno dei framework del kernel Linux, l'ha fatto per te.
Ora che il tuo volume è sbloccato, è il momento di creare un nuovo filesystem ext4 su di esso .
Per creare un nuovo filesystem sulla tua partizione, usa il comando "mkfs" seguito dal formato del filesystem, in questo caso "ext4".
$ sudo mkfs.ext4 /dev/mapper/cryptpart
Fantastico, il filesystem è stato creato.
Ora puoi montarlo e aggiungervi nuovi file. I file creati su questo volume verranno crittografati automaticamente .
$ mkdir -p /home/devconnected/files
$ sudo mount /dev/mapper/cryptpart /home/devconnected/files
$ sudo chown devconnected:devconnected /home/devconnected/files
Fantastico, ora che i tuoi dati sono al sicuro su una partizione crittografata, vediamo come puoi montare la partizione di crittografia all'avvio.
Modifica i file crypttab e fstab
Molti amministratori di sistema conoscono l'esistenza del file fstab utilizzato dal processo init per montare le unità.
Tuttavia, quando si ha a che fare con partizioni crittografate, c'è un altro file che entra in gioco: /etc/crypttab .
Analogamente al file fstab, crypttab viene letto dal processo init all'avvio. Date le informazioni in esso fornite, ti chiederà di sbloccare la partizione o leggerà un file chiave per farlo automaticamente.
Nota :/etc/crypttab potrebbe non esistere sul tuo sistema. In caso contrario, potrebbe essere necessario crearlo.
Le colonne del crypttab sono descritte sopra :
- Nome dispositivo :puoi dare al tuo dispositivo decifrato il nome che desideri. Inoltre, verrà creato automaticamente dal mapper del dispositivo nel percorso "/dev/mapper". Nella sezione precedente, abbiamo scelto "cryptpart ” per questa colonna;
- UUID del dispositivo crittografato :per trovare quale partizione contiene i dati crittografati, il tuo sistema deve avere il suo UUID che significa il suo identificatore univoco;
- Metodo di autenticazione :come spiegato, puoi scegliere “nessuno ” per la passphrase oppure puoi specificare un percorso per la chiave. Il metodo chiave sarà spiegato nell'ultimo capitolo di questo articolo;
- Opzioni di montaggio :utilizzando questa colonna è possibile specificare il numero di tentativi per una passphrase, la cifra, il metodo di crittografia e molti altri parametri. L'elenco completo delle opzioni è disponibile nella pagina di manuale di “crypttab”.
$ sudo nano /etc/crypttab
# Content of the crypttab file
cryptpart UUID=<partition_uuid> none luks
In caso di dubbi sull'UUID della partizione crittografata, è possibile utilizzare il "blkid ” con una semplice pipe “grep”.
$ sudo blkid | grep -i luks
Ora che il "/etc/crypttab ” viene modificato, dovrai modificare il file “fstab ” per specificare il punto di montaggio.
$ sudo blkid | grep -i ext4
$ sudo nano /etc/fstab
Nelle colonne fstab, devi specificare :
- L'UUID del dispositivo decrittografato :per trovarlo puoi usare il comando “blkid” ma assicurati di aver aperto il dispositivo prima di procedere. Se il dispositivo è chiuso, non sarai in grado di trovare il tuo UUID;
- Il punto di montaggio :dove verrà montato il dispositivo decifrato. Se il percorso non esiste, verrà creato automaticamente;
- Il tipo di filesystem :in questo caso, abbiamo scelto di utilizzare “ext4” ma potrebbe essere diverso sul tuo sistema;
- Opzioni di dump e di passaggio :non vogliamo che il filesystem venga controllato all'avvio, quindi possiamo mantenerlo sui valori predefiniti.
Quando hai finito, salva il file e dovresti essere pronto per partire.
Dati i passaggi che hai appena eseguito, il tuo dispositivo è pronto e dovrebbe essere montato automaticamente all'avvio.
Verifica il montaggio del dispositivo crittografato all'avvio
Per verificare che il dispositivo sia montato correttamente, possiamo riavviare il nostro server e attendere che il modulo initramfs apra il dispositivo crittografato.
$ sudo reboot
Questa è la schermata che dovresti vedere, almeno su RHEL8, quando avvii il tuo server. Se fornisci la passphrase, la tua macchina dovrebbe essere in grado di sbloccarla e montarla per te.
Una volta effettuato l'accesso al server, è possibile verificare che la partizione crittografata sia stata montata correttamente utilizzando nuovamente "lsblk".
$ lsblk -f | grep sdb1 -A 2
Congratulazioni, hai crittografato con successo una partizione su Linux utilizzando LUKS!
Crea chiavi per partizione crittografata
Come spiegato in precedenza, LUKS gestisce due metodi di autenticazione, ovvero passphrase e file chiave.
Nella sezione precedente, abbiamo utilizzato le passphrase, ma può essere molto utile avere anche una chiave di autenticazione.
Prima di tutto, crea un file chiave e salvalo in un posto sicuro (in directory in cui gli utenti normali non possono navigare, come "/boot ” o “/root “).
$ echo "supersecretpass" > volume-key
$ sudo mv volume-key /boot/
Come puoi vedere, per impostazione predefinita, il file è stato creato utilizzando le credenziali dell'utente e ha troppi permessi.
Usando i comandi “chown” e “chmod”, possiamo impostare “root” come proprietario del file e cambiarne i permessi in sola lettura.
$ sudo chown root:root /boot/volume-key
$ sudo chmod 0400 /boot/volume-key
Ora che il file è impostato in sola lettura, possiamo aggiungerlo come chiave in uno degli slot del nostro volume LUKS.
Aggiungi chiave al volume LUKS
Per aggiungere una chiave al tuo volume LUKS, devi eseguire il comando "cryptsetup" seguito da "luksAddKey", il nome del volume crittografato e il percorso della chiave.
$ sudo cryptsetup luksAddKey <encrypted_device> <path_to_key>
$ sudo cryptsetup luksAddKey /dev/sdb1 /boot/volume-key
Per eseguire questa operazione, ti verrà richiesta la tua passphrase. Quando viene fornita, la chiave verrà automaticamente aggiunta ai tuoi slot.
Per verificare che la chiave sia stata aggiunta correttamente, puoi ispezionare gli slot delle chiavi utilizzando "luksDump comando ".
$ sudo cryptsetup luksDump /dev/sdb1
Ora che la chiave è stata aggiunta, devi solo modificare "/etc/crypttab" in modo che il tuo sistema lo trovi all'avvio.
$ sudo nano /etc/crypttab
# Content of the crypttab file
cryptpart UUID=<partition_uuid> /boot/volume-key luks
Al riavvio, la partizione crittografata verrà montata automaticamente!
Conclusione
In questo articolo, hai imparato come crittografare facilmente la tua partizione su Linux utilizzando il progetto LUKS e la sua implementazione denominata cryptsetup.
Puoi vedere che puoi utilizzare un "file chiave ” per sbloccare automaticamente la partizione.
Se sei interessato a una crittografia completa del sistema, abbiamo recentemente scritto un articolo sull'argomento.
Inoltre, se vuoi saperne di più su Amministrazione del sistema Linux , assicurati di dare un'occhiata alla nostra sezione dedicata sul sito web.