GNU/Linux >> Linux Esercitazione >  >> Linux

10 esempi di Linux cryptsetup per la gestione delle chiavi LUKS (come aggiungere, rimuovere, modificare, reimpostare la chiave di crittografia LUKS)

LUKS è la crittografia del disco per Linux.

La prima volta quando si crittografa una partizione con LUKS (o quando si seleziona l'opzione di crittografia del disco durante l'installazione del sistema operativo), è necessario specificare una password che verrà utilizzata quando si apre la partizione LUKS.

Ma, dopodiché, puoi montare e smontare la partizione tutte le volte che vuoi senza dover inserire la password fino al riavvio del sistema.

Immagina i due scenari seguenti:

  1. Hai dimenticato la password LUKS. Oppure, hai ereditato un sistema da qualcuno che ha una partizione montata con crittografia LUKS. Non hai la password LUKS per questo. Quando riavvii il sistema, avrai problemi, poiché non hai la chiave LUKS.
  2. Per motivi di conformità alla sicurezza, è necessario modificare frequentemente la password di crittografia LUKS. In questo caso devi ruotare la chiave LUKS senza interrompere la partizione montata.

In questo tutorial discuteremo di tutto ciò che devi sapere sulla gestione delle chiavi LUKS.

1. Otto slot per chiavi LUKS

In LUKS, per una singola partizione crittografata, puoi avere otto chiavi diverse.

Una qualsiasi delle otto chiavi diverse può essere utilizzata per aprire la partizione crittografata.

Puoi scegliere di avere una sola chiave su una partizione, oppure puoi assegnare tutte e otto le chiavi diverse.

Queste chiavi sono memorizzate negli slot per chiavi LUKS per la partizione. Quindi, ci saranno 8 slot chiave per una partizione.

Per visualizzare tutti gli slot delle chiavi, utilizzare cryptsetup luksDump come mostrato di seguito. In questo esempio, utilizza solo due slot.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

In quanto sopra:

  • /dev/sdb1 è la partizione crittografata LUKS.
  • Il numero di slot chiave inizia da 0. Poiché abbiamo 8 slot, il numero di slot chiave inizia da 0 a 7.
  • ENABLED indica che a questo particolare slot è assegnata una chiave.
  • Qui abbiamo due slot con chiave LUKS. Quindi, la partizione crittografata /dev/sdb1 LUKS ha due chiavi assegnate.

2. Aggiungi una nuova chiave LUKS

Per aggiungere una nuova passphrase LUKS (chiave LUKS) alla partizione crittografata /dev/sdb1 LUKS, utilizzare il comando cryptsetup luksAddKey come mostrato di seguito.

# cryptsetup luksAddKey /dev/sdb1
Enter any passphrase: 
Enter new passphrase for key slot: 
Verify passphrase: 

In quanto sopra:

  • Quando dice "Inserisci una passphrase:", dovresti inserire una qualsiasi delle password esistenti per /dev/sdb1. Come abbiamo visto sopra, questo aveva già due password da Slot 0 e Slot 1. Dovresti prima inserire una di quelle password.
  • Una volta inserita una password esistente, puoi assegnare una nuova chiave LUKS.

Ogni volta che aggiungi una nuova chiave LUKS, verrà aggiunta al successivo slot disponibile. Poiché avevamo già due chiavi esistenti, la nuova chiave è stata aggiunta allo slot n. 2, che era il successivo slot disponibile.

Quindi, lo slot da 0 a 2 indicherà "ABILITATO". Abbiamo tre chiavi LUKS su /dev/sdba1.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

3. Aggiungi una nuova chiave LUKS a uno slot specifico

Invece di aggiungere la nuova chiave LUKS allo slot successivo disponibile, puoi anche aggiungere una nuova chiave a uno slot specifico.

Per questo usa l'opzione -S in cryptsetup luksAddKey come mostrato di seguito.

In questo esempio, stiamo aggiungendo una nuova chiave LUKS allo Slot#5. Ho assegnato la nuova passphrase come:PasswordforSlot5

# cryptsetup luksAddKey /dev/sdb1 -S 5

Come vediamo di seguito, ora lo slot n. 5 dice "ABILITATO", mentre lo slot n. 3 e n. 4 sono ancora in stato DISABILITATO.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: ENABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

A questo punto, abbiamo 4 chiavi LUKS assegnate alla partizione crittografata /dev/sdb1.

4. Elimina una chiave LUKS esistente

Per rimuovere una chiave esistente dalla partizione LUKS, usa cryptsetup luksRemoveKey come mostrato di seguito.

In questo esempio, devi solo inserire la password (chiave) che vuoi cancellare.

Rimuovere/cancellare/eliminare una chiave LUKS da uno slot. Non è necessario specificare il numero di slot. Specificare invece la chiave da eliminare!.

In questo esempio, quando viene richiesto "Inserisci la passphrase LUKS da eliminare:", ho inserito la chiave creata nell'esempio precedente:PasswordforSlot5

# cryptsetup luksRemoveKey /dev/sdb1
Enter LUKS passphrase to be deleted: 

Come puoi vedere dal seguente output di luksDump, la chiave nello Slot#5 è ora cancellata.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

5. Elimina una chiave LUKS utilizzando luksKillSlot

Se non hai la chiave per uno slot particolare, ma vuoi semplicemente eliminarla, puoi farlo usando il comando cryptsetup luksKillSlot come mostrato di seguito.

In questo esempio, stiamo eliminando la chiave dallo slot LUKS#2.

Per questo, devi inserire la chiave LUKS per uno qualsiasi degli slot. Questa è solo una convalida prima di eliminare la chiave dallo slot n. 2.

# cryptsetup luksKillSlot /dev/sdb1 2
Enter any remaining LUKS passphrase: 

Come puoi vedere dal seguente output di luksDump, la chiave nello Slot#2 è ora cancellata.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

6. Aggiungi una nuova chiave LUKS da un file

Puoi anche aggiungere una nuova chiave LUKS basata su un file di chiavi che hai già come mostrato di seguito.

# cryptsetup luksAddKey  /dev/sdb1 masterkeyfile
Enter any passphrase: 

In quanto sopra:

  • masterkeyfile contiene la nuova chiave LUKS che vuoi aggiungere. Questo dovrebbe essere un file binario.
  • Quando viene richiesto "Inserisci una passphrase:", inserisci una qualsiasi delle chiavi LUKS esistenti per la partizione /dev/sdb1.
  • Come vedi sopra, non è stata richiesta la nuova chiave LUKS, poiché l'ha presa dal file della chiave master.

Come puoi vedere dal seguente output di luksDump, questa nuova chiave dal file masterkey viene aggiunta allo slot#2

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

7. Reimposta chiave LUKS dimenticata:ottieni la chiave esistente

Se hai riavviato il server e non riesci a montare la tua partizione LUKS crittografata, perché hai dimenticato la tua password LUKS, allora sei sfortunato, puoi ripristinarla.

Ma, se una partizione LUKS crittografata è già aperta, e se non hai riavviato il sistema e hai dimenticato la password LUKS per la partizione già montata (almeno LUKS aperto una volta dall'ultimo riavvio), allora puoi assegnare una nuova chiave LUKS.

In questo scenario "password LUKS dimenticata", puoi eseguire i due passaggi seguenti:

  1. Estrai la chiave crittografata corrente dalla partizione LUKS
  2. Crea una nuova chiave LUKS utilizzando la chiave crittografata estratta sopra

In questo esempio, ho la partizione /home1 montata, che è una partizione crittografata LUKS, ma non ho la password per questo.

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             127G   44G   76G  37% /
/dev/mapper/home1      93G  188M   88G   1% /home1

Il nome del volume è quello che c'è dopo "/dev/mapper/" nella prima colonna dell'output del comando df sopra. Quindi, nel nostro esempio, il nome del volume è "home1"

La seguente tabella dmsetup –showkeys mostrerà le chiavi crittografate di tutte le partizioni che sono montate sul tuo sistema.

# dmsetup table --showkeys 
home1: 0 197259264 crypt aes-cbc-essiv:sha256 607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c 0 8:17 4096

Il campo dopo "aes-cbc-essiv:sha256" è la password crittografata. Ottieni la chiave LUKS crittografata e salvala in un file.

# vi existinglukskey.txt
607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c

8. Reimposta chiave LUKS dimenticata:crea un file di chiave binaria

Ora dobbiamo convertire questa chiave esistente da un file di testo a un file binario. Usa il comando xxd come mostrato di seguito.

# xxd -r -p existinglukskey.txt existinglukskey.bin

In quanto sopra:

    L'opzione
  • -r è per il contrario. Questo convertirà l'hexdump in binario.
  • L'opzione
  • -p è per PostScript. Questo indica lo stile hexdump continuo Postscript.
  • file di input esistentelukskey.txt
  • file di output esistentelukskey.bin. Questo ora conterrà la password LUKS crittografata esistente in un file binario.

9. Reimposta chiave LUKS dimenticata:aggiungi una nuova chiave

Infine, aggiungi una nuova chiave LUKS utilizzando la chiave LUKS esistente che abbiamo estratto nel file binario.

# cryptsetup luksAddKey /dev/sdb1 --master-key-file <(cat existinglukskey.bin)
Enter new passphrase for key slot: 
Verify passphrase: 

In quanto sopra:

  • –file-chiave-master Specificare qui il file binario. Non utilizzare il file esistentelukskey.txt. Usa invece il file existinglukskey.bin che abbiamo creato sopra.
  • Come vedi sopra, luksAddKey non ha richiesto la password LUKS esistente, poiché l'ha presa dal file binario.
  • Quando viene richiesto "Inserisci una nuova passphrase per lo slot della chiave:", inserisci la nuova password LUKS. Ma, questa volta, non dimenticarlo.

Ancora una volta, ricorda questo:se dimentichi la password LUKS dopo aver riavviato il sistema, sei fuori Luks (sfortunato), poiché non puoi ripristinarlo.

10. Scarica LUKS MasterKey

Puoi anche scaricare la MasterKey e tenerla al sicuro da qualche parte. Usa l'opzione –dump-master-key insieme a luksDump come mostrato di seguito.

# cryptsetup luksDump --dump-master-key /dev/sdb1
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: 
LUKS header information for /dev/sdb1
Cipher name:    aes
Cipher mode:    cbc-essiv:sha256
Payload offset: 4096
UUID:           146d639a-757c-4bcb-aee6-8fe815345104
MK bits:        256
MK dump:        60 7f 48 28 70 c7 95 a9 b1 e3 07 ff bf c6 64 3e 
                aa 21 9e 9e f8 c6 77 3d e0 2c d2 98 c8 fc da 3c 

Tieni presente che devi archiviare il dump dell'intestazione LUKS in un luogo sicuro. Utilizzando il dump della chiave principale, qualcuno può accedere alla partizione crittografata LUKS.


Linux
  1. Come aggiungere o rimuovere un utente da un gruppo in Linux

  2. Come modificare, rimuovere o disabilitare la password utente in Linux

  3. Aggiungi utente al gruppo in Linux, come farlo (con esempi)

  4. Come cambiare la shell in Linux

  5. Come rimuovere la crittografia LUKS?

Come aggiungere un host Linux remoto a Cacti per il monitoraggio

Come aggiungere un host Linux in Zabbix Server per il monitoraggio

Come aggiungere una password per proteggere un file Vim in Linux

Come cambiare utente su Linux

Come modificare l'indirizzo IP su Linux

7 Esempi di comandi di route Linux (come aggiungere route in Linux)