smetti di crypttab che richiede la password per lo scambio


10

Ho installato un nuovo sistema 11.04 quando è stato rilasciato e impostato la crittografia del disco completo con LUKS. All'inizio mi ha chiesto una password per le mie tre partizioni crittografate:

/
/home
swap

Digitare la passphrase tre volte è stato frustrante, quindi ho provato a impostare / home e scambiare per decrittografare da un file di chiavi archiviato su /. Ho creato il file di chiavi e l'ho abilitato sulle due partizioni. Il mio crypttab ora assomiglia a questo:

root-root_crypt UUID=13c21bf6-4d92-42a7-877a-87cc31b1aa19 none luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 /root/keyfile luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 none luks
sda3_crypt UUID=e4677895-2114-4054-9f23-d36f6bb0e6a2 /root/keyfile luks,swap

Funziona bene per / home, che viene montato automaticamente senza richiedere una password. Ma cryptsetup richiede ancora una password per lo spazio di scambio. Ho anche provato ad aggiungere noauto allo spazio di swap in modo che non si configurasse affatto - una volta avviato il sistema posso abilitarlo senza la passphrase, quindi ho pensato di aggiungere uno script init in ritardo da fare esso, ma anche con noauto cryptsetup richiede ancora la passphrase.

Grazie!


4
Per questo motivo, si consiglia di utilizzare LVM + LUKS in caso di più partizioni. Crypsetup può essere utilizzato sopra o sotto il livello LVM (sopra -> filesystem, sotto -> disco). L'uso di cryptsetup sotto LVM ha il vantaggio di aver bisogno di una sola partizione crittografata (quella LVM).
Lekensteyn,

Risposte:


10

Ho avuto la stessa domanda, ecco come l'ho fatto su Ubuntu 12.04.1 e 12.10,

- prima di iniziare assicurati di avere un backup e puoi anche avviare il tuo sistema con ubuntu cd o usb; come se commettessi un errore, il tuo sistema potrebbe non avviarsi più o potresti perdere i dati. suppongo che tu abbia un sistema Ubuntu crittografato con LUKS, all'interno di LUKS hai 3 partizioni, SYSTEM-BOOT (non crittografato), SYSTEM-SWAP (crittografato) e SYSTEM-OS (crittografato) -

devi adattare UUID, SYSTEM-SWAP_crypt, SYSTEM-OS_crypt, SYSTEM-SWAP, SYSTEM-OS alla variazione utilizzata sul tuo sistema, per favore vedi link di riferimento sotto la mia soluzione per maggiori informazioni

Ottieni UUID:

blkid

Preparare>

swapoff /dev/mapper/SYSTEM-SWAP_crypt
cryptsetup luksClose SYSTEM-SWAP_crypt

Di 'a cryptsetup di calcolare la passphrase della partizione di swap dalla chiave di decrittazione del volume che contiene il filesystem di root>

/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksFormat /dev/mapper/SYSTEM-SWAP --key-file -
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksOpen /dev/mapper/SYSTEM-SWAP SYSTEM-SWAP_crypt --key-file -
mkswap /dev/mapper/SYSTEM-SWAP_crypt

informa il sistema sulla partizione di swap, modifica crypttab>

nano /etc/crypttab

=? assicurarsi che due righe corrispondano

SYSTEM-OS_crypt UUID=uuid-of-luks-containing-osroot none luks
SYSTEM-SWAP_crypt UUID=uuid-of-luks-containing-swap SYSTEM-OS_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

informa il sistema della partizione di swap, modifica fstab>

nano /etc/fstab

=? assicurati di avere questa linea

/dev/mapper/SYSTEM-SWAP_crypt swap swap sw 0 0

informa il sistema sulla partizione di swap, modifica riprendi>

nano /etc/initramfs-tools/conf.d/resume

=? assicurati di avere questa linea

RESUME=UUID=uuid-of-encrypted-swap-SYSTEM-SWAP_crypt

aggiorna initramfs sulla partizione di avvio>

update-initramfs -u -k all

Riferimento

La risposta ispirata dall'installazione di un sistema Debian crittografato (collegamento archiviato):

Se stai usando un sistema Debian crittografato, probabilmente hai alcuni requisiti di sicurezza da soddisfare. In tal caso, è necessario utilizzare anche una partizione di swap crittografata.

La partizione di swap può essere crittografata in due modi:

  • può essere ricreato ad ogni avvio, usando una passphrase casuale, o
  • può essere creato come gli altri volumi crittografati con una passphrase persistente

Se si desidera utilizzare suspend-to-disk, non è possibile utilizzare il primo approccio in quanto sovrascriverebbe il footprint di memoria archiviato nella partizione di swap. Inoltre, non è possibile utilizzare un file chiave come le altre partizioni, poiché il filesystem di root non è (e non deve) essere montato quando inizia il processo di ripresa e deve leggere la partizione di swap decodificata.

Il modo in cui ho risolto questo è dicendo a cryptsetup di calcolare la passphrase della partizione di swap dalla chiave di decrittazione del volume che contiene il filesystem di root; il pacchetto cryptsetup lo implementa con /lib/cryptsetup/scripts/decrypt_derived. Pertanto, per impostare la partizione di swap, faccio quanto segue, supponendo che hda2sia la partizione che contiene lo swap crittografato e che il filesystem di root sia in hda5_crypt:

swapoff /dev/mapper/hda2_crypt
cryptsetup luksClose hda2_crypt
dd if=/dev/urandom of=/dev/hda2
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksFormat /dev/hda2 --key-file -
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksOpen /dev/hda2 hda2_crypt --key-file -
mkswap /dev/mapper/hda2_crypt

Per comunicare al sistema questa partizione di swap, è necessario aggiungerla a /etc/crypttabe /etc/fstab; assicurati che quei file contengano linee come le seguenti:

/etc/crypttab:
  hda2_crypt /dev/hda2 hda5_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

/etc/fstab:
  /dev/mapper/hda2_crypt swap swap sw 0 0

Con questo in atto, non appena si configura il sistema per la sospensione su disco, la partizione di swap verrà automaticamente impostata insieme al filesystem di root molto presto durante la sequenza di avvio. Per capire quale partizione di swap rendere disponibile a quel punto, cryptsetup controlla quanto segue: asfasfafs - una linea come RESUME=/dev/mapper/hda2_cryptin /etc/initramfs-tools/conf.d/resume - riprende l'impostazione del dispositivo in /etc/uswsusp.conf(vedi uswsusp.conf(5)) - una voce in /etc/suspend.conf - a resume=/dev/mapper/hda2_cryptnella riga di comando del kernel

Puoi controllare /usr/share/initramfs-tools/hooks/cryptrootse vuoi saperne di più su questo.


Benvenuto in Ask Ubuntu! Avrebbe fatto +1 se non semplicemente copiato / incollato senza occuparsi della formattazione (cosa che ho appena fatto). Mi piace l'approccio "può essere ricreato ad ogni avvio, usando una passphrase casuale" qui.
gertvdijk,

aggiunti i comandi che ho effettivamente usato per la risposta, ho intenzione di testarlo anche il 12.10, aggiornerò la risposta in seguito
Prince

Va bene. Ho pensato che lo avessi copiato / incollato completamente. Si prega di modificarlo per chiarire quali modifiche sono state apportate per farlo funzionare. Sarebbe utile, grazie!
gertvdijk,

non provarlo il 12.10 mentre mi imbattevo in un bug che impedisce l'avvio, ottengo "cryptsetup lvm non è disponibile", segnalazioni sui bug di ritorno della ricerca di Google. ho bisogno di approfondire ma non ho tempo, te lo farò sapere più tardi.
Principe

aggiornata la risposta, il mio sistema 12.10 è ora perfettamente funzionante e richiede solo una password, non ho aggiornato-initramfs -u -k alla fine che ha creato il problema che ho citato nel commento precedente. @gertcdijk ha formulato tutto, spero che tu sia felice ora
Prince

4

Ciò probabilmente indica che si accede alla partizione di swap durante la initramfsparte del processo di avvio. A questo punto il file system di root non è ancora stato montato, quindi tutti i file di configurazione memorizzati non saranno visibili.

Mentre lo spazio di swap è montato dopo il file system radice, c'è un motivo per cui il initramfsprocesso di inizializzazione accede allo spazio di swap: quando si iberna il computer, il contenuto della memoria e lo stato del sistema vengono scritti su swap. Per riprendere dal letargo, è necessario verificare se lo spazio di scambio contiene un'immagine di letargo che richiederebbe la passphrase.

Se non ti dispiace perdere la possibilità di riprendere dal letargo, puoi disabilitare questo comportamento modificando /etc/initramfs-tools/conf.d/resumee commentando la riga a partire da RESUME=. Dopo aver apportato la modifica, esegui update-initramfs -uper aggiornare l' initramfsimmagine.


Ah grazie! Non sono sicuro di voler sacrificare l'ibernazione. Non lo uso spesso, ma quando la batteria si scarica senza che me ne accorga, torna utile. Sai se c'è un modo per fare in modo che cryptsetup riutilizzi la stessa password per /?
Brad,

Non conosco un modo per farlo. E prima di chiedere, non provare a mettere una copia del tuo file di chiavi nel file initramfs. Mentre eliminerebbe il prompt passphrase, lo renderebbe disponibile anche a chiunque abbia accesso fisico al disco.
James Henstridge,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.