HOWTO Riconfigurare Cryptsetup Dopo Installazione: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(7 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
== Descrizione ==
== Descrizione ==
Può capitare di aver un ripensamento sulle impostazioni apportate al disco dopo averlo "messo" al sicuro con cryptsetup durante una normale installazione di debian o qualsiasi altra distro.     
Può capitare di aver un ripensamento sulle impostazioni apportate al disco dopo averlo "messo" al sicuro con '''cryptsetup''' durante una normale installazione di debian o qualsiasi altra distro.     
Si potrebbe cambiare idea e magari rafforzare il cipher...ma una volta installata la distro e costruito il disco con cryptsetup risulterà impossibile apportare un cambiamento radicale del genere.. eccetto per delle semplici modifiche, come cambiare la passphrase. Quindi in queste situazioni non resta altro che reinstallare il tutto e apportare le giuste modifiche durante l'installazione.
Si potrebbe cambiare idea e magari rafforzare il cipher...ma una volta installata la distro e costruito il disco con ''cryptsetup'' risulterà impossibile apportare un cambiamento radicale del genere.. eccetto per delle semplici modifiche, come cambiare la passphrase. Quindi in queste situazioni non resta altro che reinstallare il tutto e apportare le giuste modifiche durante l'installazione.
Ma c'è un modo per ovviare a tutto ciò? La risposta è si ed esistono fondamentalmente due strade:
Ma c'è un modo per ovviare a tutto ciò? La risposta è si ed esistono fondamentalmente due strade:


*    Usare l'utility '''cryptsetup-reencrypt''' ( ''man cryptsetup-reencrypt'' [https://www.systutorials.com/docs/linux/man/8-cryptsetup-reencrypt/] ). Può essere molto utile e veloce in quanto ci permette di fare cambiamenti radicali "a volo". Unica pecca può essere il suo grado di rischio in quanto si andrà a operare direttamente sull'header, quindi a meno che non avete file importanti sul disco in cui la cancellazione involontaria dei dati, (o comunque l'inaccesibilità degli stessi) non vi farà bestemmiare :) , procedete con questa opzione.
*    Usare l'utility '''cryptsetup-reencrypt''' ( ''man cryptsetup-reencrypt'' [https://www.systutorials.com/docs/linux/man/8-cryptsetup-reencrypt/] ). Può essere molto utile e veloce in quanto ci permette di fare cambiamenti radicali "a volo". Unica pecca può essere il suo grado di rischio in quanto si andrà a operare direttamente sull'header, quindi a meno che non avete file importanti sul disco in cui la cancellazione involontaria dei dati, (o comunque l'inaccesibilità degli stessi) non vi farà bestemmiare :) , procedete con questa opzione.


*    Fare tutto "a mano". La strada migliore, anche se un pò lunga. Vedere '''Obiettivo'''
*    Fare tutto "a mano". La strada migliore, anche se un pò lunga. (Vedere '''Obiettivo''' [http://guide.debianizzati.org/index.php/HOWTO_Riconfigurare_Cryptsetup_Dopo_Installazione#Obiettivo])
 


=== Obiettivo ===
=== Obiettivo ===
Riga 13: Riga 14:


*        Copiare il sistema su un supporto rimovibile di appoggio
*        Copiare il sistema su un supporto rimovibile di appoggio
*        Formattare la partizione con cryptsetup, stavolta con le impostazioni giuste
*        Formattare la partizione con ''cryptsetup'', stavolta con le impostazioni giuste
*        Ricopiare il sistema
*        Ricopiare il sistema


Riga 26: Riga 27:


Prima di tutto dobbiamo fare un pò di ricerca sul nostro sistema.
Prima di tutto dobbiamo fare un pò di ricerca sul nostro sistema.
Dobbiamo vedere ''l'UUID'' della partizione grezza, cioè' dove è presente il sistema cifrato, e ''l'UUID'' della partizione decifrata dove risiede il nostro sistema mappato da cryptsetup in ''/dev/mapper/<nome_vostra_partizione>'' (di solito in debian le partizioni criptate configurate durante l'installazione sono rinominate in '''sd''<device><numero_partizione>''_crypt''').
Dobbiamo vedere ''l'UUID'' della partizione grezza, cioè' dove è presente il sistema cifrato, e ''l'UUID'' della partizione decifrata dove risiede il nostro sistema mappato da cryptsetup in ''/dev/mapper/<nome_vostra_partizione>'' (di solito in debian le partizioni criptate configurate durante l'installazione sono rinominate in '''sd'''''<device><numero_partizione>'''''_crypt''').
Infine dobbiamo procurarci un supporto esterno dove copiare momentaneamente l'intero sistema. Inutile dirlo ma come capacità dovrà essere maggiore o uguale a quest'ultimo.
Infine dobbiamo procurarci un supporto esterno dove copiare momentaneamente l'intero sistema. Inutile dirlo ma come capacità dovrà essere maggiore o uguale a quest'ultimo.


'''NOTA: Per vedere la grandezza di tutto il sistema, è sufficiente digitare: <pre> du -sh /</pre>
'''NOTA: Per vedere la grandezza di tutto il sistema, è sufficiente digitare: <pre> $ du -sh /</pre>
'''Non preoccupatevi degli errori che potranno comparire a riguardo alle cartelle ''/proc'' o ''/tmp'' in quanto sono cartelle volatili e riempite dal sistema durante l'avvio e quindi allo spegnimento non vi sarà nulla al loro interno. Non occuperanno nessuno spazio'''
'''Non preoccupatevi degli errori che potranno comparire a riguardo delle cartelle ''/proc'' o ''/tmp'' in quanto sono cartelle volatili e riempite dal sistema durante l'avvio e quindi allo spegnimento non vi sarà nulla al loro interno. Non occuperanno nessuno spazio'''


== All'opera ==
== All'opera ==
Riga 38: Riga 38:
Una volta avviata è possibile che i pacchetti che ci servono non siano installati. Quindi procediamo con:
Una volta avviata è possibile che i pacchetti che ci servono non siano installati. Quindi procediamo con:


 
<pre> $ apt-get install cryptsetup -y </pre>
<pre> apt-get install cryptsetup -y </pre>


Decifriamo il disco con:
Decifriamo il disco con:


<pre> cryptsetup luksOpen /dev/<vostro_device> sd_crypt </pre>
<pre> $ cryptsetup luksOpen /dev/<vostro_device> sd_crypt </pre>


Infine montiamo il disco in sola '''lettura''' per evitare scritture involontarie:
Infine montiamo il disco in sola '''lettura''' per evitare scritture involontarie:


<pre> mount -o ro /dev/mapper/sd_crypt /mnt </pre>
<pre> $ mount -o ro /dev/mapper/sd_crypt /mnt </pre>


Colleghiamo adesso il nostro supporto rimovibile e creiamo una cartella per poterlo montare:
Colleghiamo adesso il nostro supporto rimovibile e creiamo una cartella per poterlo montare:


<pre> mkdir /root/usb</pre>
<pre> $ mkdir /root/usb</pre>


E montiamolo con:
E montiamolo con:


<pre> mount /dev/<vostro_supporto_rimovibile> /root/usb</pre>
<pre> $ mount /dev/<vostro_supporto_rimovibile> /root/usb</pre>


Non ci resta adesso che copiare tutto il sistema nel supporto, badando a non modificare nulla. La copia sarà fatto con il banalissimo comando '''cp''' ''(''[[Guida_ai_comandi_da_terminale_-_Gestione_di_file_e_directory]]'')''. Il problema però nasce dal fatto che durante la copia i file possono assumere informazioni riguardanti l'utente che appunto sta effettuando la copia, e per risolvere a questo inconveniente, durante la copia risulterà utile aggiungere al comando cp la seguente opzione:
Non ci resta adesso che copiare tutto il sistema nel supporto, badando a non modificare nulla. La copia sarà fatta con il banalissimo comando '''cp''' ''(''[[Guida_ai_comandi_da_terminale_-_Gestione_di_file_e_directory]]'')''. Il problema però nasce dal fatto che durante la copia i file possono assumere informazioni riguardanti l'utente che appunto sta effettuando la copia, e per risolvere a questo inconveniente, durante la copia risulterà utile aggiungere al comando cp la seguente opzione:


<pre> cp --preserve=all -R /mnt/* /root/usb/</pre>
<pre> $ cp --preserve=all -R /mnt/* /root/usb/</pre>


Questa opzione indica che durante la copia non dovranno essere modificati data e ora di accesso, gruppo e utente proprietario.
Questa opzione indica che durante la copia non dovranno essere modificati data e ora di accesso, gruppo e utente proprietario.
Riga 66: Riga 65:
Ma prima smontiamo le unità:
Ma prima smontiamo le unità:


<pre>  umount /mnt</pre>
<pre>
<pre> cryptsetup luksClose sd_crypt</pre>
  $ umount /mnt
  $ cryptsetup luksClose sd_crypt
</pre>


Possiamo addesso formattare la partzione:
Possiamo addesso formattare la partzione:


<pre> dd if=/dev/zero of=/dev/<vostra_partizione> bs=10M count=1</pre>
<pre> $ dd if=/dev/zero of=/dev/<vostra_partizione> bs=10M count=1</pre>


Nell' esempio seguente si rimuove solo l'heaser LUKS cancellando di fatto solo i primi 10MB della partizione.
Nell' esempio seguente si rimuove solo l'heaser LUKS cancellando di fatto solo i primi 10MB della partizione.
Ma possiamo anche riformattare direttamente la partizione con cryptsetup. Ricordiamoci inoltre durante la formattazione di impostare '''l'UUID''' precedentemente visto, cioè della partizione grezza dove andrà il sistema che sarà poi cifrato. Ecco un esempio:
Ma possiamo anche riformattare direttamente la partizione con cryptsetup. Ricordiamoci inoltre durante la formattazione di impostare '''l'UUID''' precedentemente visto, cioè della partizione grezza dove andrà il sistema che sarà poi cifrato. Ecco un esempio:


<pre>   cryptsetup --hash=sha512 --key-size=512 --iter-time=10000 --use-random --uuid=<UUID_partizione_grezza> luksFormat /dev/<vostra_partizione></pre>
<pre> $ cryptsetup --hash=sha512 --key-size=512 --iter-time=10000 --use-random --uuid=<UUID_partizione_grezza> luksFormat /dev/<vostra_partizione></pre>


Alla domanda digitiamo '''YES''' tutto in maiuscolo e procediamo.
Alla domanda digitiamo '''YES''' tutto in maiuscolo e procediamo.
Riga 85: Riga 86:
Quindi:
Quindi:


<pre> mkfs.ext4 /dev/mapper/sd_crypt</pre>
<pre> $ mkfs.ext4 /dev/mapper/sd_crypt</pre>


Adesso non ci resta che decifrare la nuova partizione, montarla e ricopiare di nuovo il sistema al suo interno:
Adesso non ci resta che decifrare la nuova partizione, montarla e ricopiare di nuovo il sistema al suo interno:


<pre>  cryptsetup luksOpen /dev/<nuova_partizione_creata> sd_crypt</pre>
<pre>
 
  $ cryptsetup luksOpen /dev/<nuova_partizione_creata> sd_crypt
<pre> mount /dev/mapper/sd_crypt /mnt</pre>
  $ mount /dev/mapper/sd_crypt /mnt
 
  $ cp --preserve=all -R /root/usb/* /mnt/
<pre> cp --preserve=all -R /root/usb/* /mnt/</pre>
</pre>


== Conclusioni ==
== Conclusioni ==


Porre molta attenzione ai vari ''UUID'' visti sul sistema (vedere '''Preparativi''').
Porre molta attenzione ai vari ''UUID'' visti sul sistema (vedere '''Preparativi''' [http://guide.debianizzati.org/index.php/HOWTO_Riconfigurare_Cryptsetup_Dopo_Installazione#Preparativi]).
Se si sbaglia uno dei due ''UUID'' il sistema non partirà e quindi si dovrà necessariamente ripetere tutte le fasi partendo dall'inizio.
Se si sbaglia uno dei due ''UUID'' il sistema non partirà e quindi si dovrà necessariamente ripetere tutte le fasi partendo dall'inizio.
Ma se si è sbagliati solo ''l'UUID'' della partizione decifrata ( quella del sistema che partirà effettivamente presente in ''/dev/mapper/'' ) non c'è bisogno di ripetere tutto; basta accedere da una live e cambiare ''l'UUID'' con:
Ma se si è sbagliati solo ''l'UUID'' della partizione decifrata ( quella del sistema che partirà effettivamente presente in ''/dev/mapper/'' ) non c'è bisogno di ripetere tutto; basta accedere da una live e cambiare ''l'UUID'' con:


<pre> tune2fs /dev/mapper/<mapper_sistema> -U <UUID></pre>
<pre> $ tune2fs /dev/mapper/<mapper_sistema> -U <UUID></pre>


Ovviamente questo andrà fatto una volta aperto (decifrato) e mappato il disco con cryptsetup.
Ovviamente questo andrà fatto una volta aperto (decifrato) e mappato il disco con cryptsetup.


Se tutto è filato liscio si è riusciti riconfigurare l'header di LUKS senza reinstallare l'intero sistema.
Se tutto è filato liscio si è riusciti riconfigurare l'header di LUKS senza reinstallare l'intero sistema.

Versione delle 22:24, 25 lug 2017

Descrizione

Può capitare di aver un ripensamento sulle impostazioni apportate al disco dopo averlo "messo" al sicuro con cryptsetup durante una normale installazione di debian o qualsiasi altra distro. Si potrebbe cambiare idea e magari rafforzare il cipher...ma una volta installata la distro e costruito il disco con cryptsetup risulterà impossibile apportare un cambiamento radicale del genere.. eccetto per delle semplici modifiche, come cambiare la passphrase. Quindi in queste situazioni non resta altro che reinstallare il tutto e apportare le giuste modifiche durante l'installazione. Ma c'è un modo per ovviare a tutto ciò? La risposta è si ed esistono fondamentalmente due strade:

  • Usare l'utility cryptsetup-reencrypt ( man cryptsetup-reencrypt [1] ). Può essere molto utile e veloce in quanto ci permette di fare cambiamenti radicali "a volo". Unica pecca può essere il suo grado di rischio in quanto si andrà a operare direttamente sull'header, quindi a meno che non avete file importanti sul disco in cui la cancellazione involontaria dei dati, (o comunque l'inaccesibilità degli stessi) non vi farà bestemmiare :) , procedete con questa opzione.
  • Fare tutto "a mano". La strada migliore, anche se un pò lunga. (Vedere Obiettivo [2])


Obiettivo

Il nostro obiettivo sarà quindi:

  • Copiare il sistema su un supporto rimovibile di appoggio
  • Formattare la partizione con cryptsetup, stavolta con le impostazioni giuste
  • Ricopiare il sistema

In questo HOWTO spiegheremo quest'ultima opzione.

Occorrente

  • Usb o HD
  • Sistema Live (è preferibile usare una distro uguale a quella che avete installato)

Preparativi

Prima di tutto dobbiamo fare un pò di ricerca sul nostro sistema. Dobbiamo vedere l'UUID della partizione grezza, cioè' dove è presente il sistema cifrato, e l'UUID della partizione decifrata dove risiede il nostro sistema mappato da cryptsetup in /dev/mapper/<nome_vostra_partizione> (di solito in debian le partizioni criptate configurate durante l'installazione sono rinominate in sd<device><numero_partizione>_crypt). Infine dobbiamo procurarci un supporto esterno dove copiare momentaneamente l'intero sistema. Inutile dirlo ma come capacità dovrà essere maggiore o uguale a quest'ultimo.

NOTA: Per vedere la grandezza di tutto il sistema, è sufficiente digitare:

 $ du -sh /

Non preoccupatevi degli errori che potranno comparire a riguardo delle cartelle /proc o /tmp in quanto sono cartelle volatili e riempite dal sistema durante l'avvio e quindi allo spegnimento non vi sarà nulla al loro interno. Non occuperanno nessuno spazio

All'opera

Spegniamo il pc e avviamo la Live. La live deve essere uguale a quella che abbiamo installato in quanto i pacchetti, patch ecc., possono essere leggermente differenti e quindi potrebbero variare da distro a distro e per evitare complicanze in seguito è buona norma usare una live (importante anche la versione) uguale a quella del vostro sistema. Una volta avviata è possibile che i pacchetti che ci servono non siano installati. Quindi procediamo con:

 $ apt-get install cryptsetup -y 

Decifriamo il disco con:

 $ cryptsetup luksOpen /dev/<vostro_device> sd_crypt 

Infine montiamo il disco in sola lettura per evitare scritture involontarie:

 $ mount -o ro /dev/mapper/sd_crypt /mnt 

Colleghiamo adesso il nostro supporto rimovibile e creiamo una cartella per poterlo montare:

 $ mkdir /root/usb

E montiamolo con:

 $ mount /dev/<vostro_supporto_rimovibile> /root/usb

Non ci resta adesso che copiare tutto il sistema nel supporto, badando a non modificare nulla. La copia sarà fatta con il banalissimo comando cp (Guida_ai_comandi_da_terminale_-_Gestione_di_file_e_directory). Il problema però nasce dal fatto che durante la copia i file possono assumere informazioni riguardanti l'utente che appunto sta effettuando la copia, e per risolvere a questo inconveniente, durante la copia risulterà utile aggiungere al comando cp la seguente opzione:

 $ cp --preserve=all -R /mnt/* /root/usb/

Questa opzione indica che durante la copia non dovranno essere modificati data e ora di accesso, gruppo e utente proprietario.

Arrivati a questo punto possiamo riformattare la partizione con qualsiasi strumento che permette la gestione di dischi, come gparted, cfdisk o dd: Ma prima smontiamo le unità:

 $ umount /mnt
 $ cryptsetup luksClose sd_crypt

Possiamo addesso formattare la partzione:

 $ dd if=/dev/zero of=/dev/<vostra_partizione> bs=10M count=1

Nell' esempio seguente si rimuove solo l'heaser LUKS cancellando di fatto solo i primi 10MB della partizione. Ma possiamo anche riformattare direttamente la partizione con cryptsetup. Ricordiamoci inoltre durante la formattazione di impostare l'UUID precedentemente visto, cioè della partizione grezza dove andrà il sistema che sarà poi cifrato. Ecco un esempio:

 $ cryptsetup --hash=sha512 --key-size=512 --iter-time=10000 --use-random --uuid=<UUID_partizione_grezza> luksFormat /dev/<vostra_partizione>

Alla domanda digitiamo YES tutto in maiuscolo e procediamo.

Bisogna infine ricreare il filesystem per la nuova partizione per ospitare i dati. In questo caso il filesystem dovrà essere uguale a quello del sistema. Nella maggior parte dei casi, il filesystem ext4 è il più utilizzato.

Quindi:

 $ mkfs.ext4 /dev/mapper/sd_crypt

Adesso non ci resta che decifrare la nuova partizione, montarla e ricopiare di nuovo il sistema al suo interno:

 $ cryptsetup luksOpen /dev/<nuova_partizione_creata> sd_crypt
 $ mount /dev/mapper/sd_crypt /mnt
 $ cp --preserve=all -R /root/usb/* /mnt/

Conclusioni

Porre molta attenzione ai vari UUID visti sul sistema (vedere Preparativi [3]). Se si sbaglia uno dei due UUID il sistema non partirà e quindi si dovrà necessariamente ripetere tutte le fasi partendo dall'inizio. Ma se si è sbagliati solo l'UUID della partizione decifrata ( quella del sistema che partirà effettivamente presente in /dev/mapper/ ) non c'è bisogno di ripetere tutto; basta accedere da una live e cambiare l'UUID con:

 $ tune2fs /dev/mapper/<mapper_sistema> -U <UUID>

Ovviamente questo andrà fatto una volta aperto (decifrato) e mappato il disco con cryptsetup.

Se tutto è filato liscio si è riusciti riconfigurare l'header di LUKS senza reinstallare l'intero sistema.