GNU/Linux >> Linux Esercitazione >  >> Linux

Come crittografare la partizione su Linux

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.


Linux
  1. Come partizionare un disco in Linux

  2. Come aggiungere un nuovo disco a un server Linux esistente

  3. Come usare fdisk per partizionare un disco in Linux

  4. Come clonare la partizione del disco di Linux sulla rete usando dd

  5. Come spostare una partizione in GNU/Linux?

Come elencare le partizioni del disco in Linux

Come crittografare il filesystem di root su Linux

Come crittografare file su Linux

Come creare partizioni del disco su Linux

Come crittografare i dispositivi a blocchi utilizzando LUKS su Linux

Come visualizzare le partizioni del disco Linux (tabella delle partizioni)