EncryptedFilesystemUsingLUKS » Cronologia » Versione 12
Simone Piccardi, 06-12-2016 14:11
| 1 | 8 | Amministratore Truelite | h1. Come creare un filesystem cifrato usando LUKS |
|---|---|---|---|
| 2 | 1 | Amministratore Truelite | |
| 3 | 8 | Amministratore Truelite | "LUKS":http://luks.endorphin.org/ è un acronimo di "Linux Unified Key Setup" e si propone come lo standard per la crittografia dei dischi in sistemi linux (e non solo), offrendo un formato standard "on-disc", la possibilità di avere più di una coppia chiave-passphrase per l'accesso ed una gestione sicura di tutte le chiavi. |
| 4 | 1 | Amministratore Truelite | |
| 5 | 12 | Simone Piccardi | Un disco criptato con LUKS, nel caso lo si sia formattato con una filesystem compatibile (es. vfat) è accessibile anche dai sistemi Windows, usando "FreeOTFE":http://www.freeotfe.org/. Per utilizzarlo è necessaria una versione del programma @cryptsetup@ (usato anche per la cifratura diretta con ''dm-crypt'') che lo supporti, ma questa è ormai disponibile su tutte le distribuzioni recenti. Se ne può comunque verificare la presenza con il comando @cryptsetup --help@ controllando in coda la presenza delle opzioni relative a LUKS. Nel caso in cui il comando non fosse presente, su Debian lo si può installare semplicemente con: |
| 6 | 9 | Simone Piccardi | |
| 7 | 1 | Amministratore Truelite | <pre> |
| 8 | 10 | Simone Piccardi | apt-get install cryptsetup |
| 9 | 9 | Simone Piccardi | </pre> |
| 10 | 8 | Amministratore Truelite | |
| 11 | 12 | Simone Piccardi | A questo punto è possibile iniziare il lavoro di preparazione del dispositivo, nel nostro esempio prenderemo il caso una chiavetta USB rilevata dal sistema come @/dev/sdc@. |
| 12 | 1 | Amministratore Truelite | |
| 13 | 12 | Simone Piccardi | La prima cosa da fare è verificare l'affidabilità del dispositivo ed, al tempo stesso, riempire tutto lo spazio disponibile con dei dati casuali rendendo di fatto molto più difficoltosi eventuali tentativi di attacco e compromissione del filesystem cifrato che verrà creato in seguito. Prima di iniziare, va tenuto presente il fatto che a seconda della dimensione del disco, questo processo può richiedere molte ore, quindi se dovete lanciarlo su di un disco molto grande, vi conviene farlo prima di andare a dormire. |
| 14 | 1 | Amministratore Truelite | |
| 15 | <pre> |
||
| 16 | 12 | Simone Piccardi | badblocks -c 10240 -s -w -t random -v /dev/sdc |
| 17 | 2 | Amministratore Truelite | </pre> |
| 18 | 1 | Amministratore Truelite | |
| 19 | 10 | Simone Piccardi | Se siete particolarmente paranoici potete utilizzare @/dev/urandom@ come sorgente di dati casuali e riempirci il disco. La casualità dei dati sarà migliore rispetto a quella del metodo precedente, ma l'operazione farà un uso intensivo della CPU e richiederà ancora più tempo. Il comando da eseguire è: |
| 20 | 1 | Amministratore Truelite | |
| 21 | 9 | Simone Piccardi | Il comando da eseguire è: |
| 22 | 1 | Amministratore Truelite | <pre> |
| 23 | 12 | Simone Piccardi | dd if=/dev/urandom of=/dev/sdc |
| 24 | 9 | Simone Piccardi | </pre> |
| 25 | 8 | Amministratore Truelite | |
| 26 | 12 | Simone Piccardi | Successivamente va partizionato il disco. In questo caso l'obiettivo è di creare un'unica partizione che occupi tutto lo spazio disponibile e per farlo ci sono diverse alternative, sia da linea di comando come @fdisk@ o @cfdisk@ che grafiche come @gparted@ e @qtparted@. Si supponga comunque di aver creata una sola partizione, riconosciuta dal sistema come @/dev/sdc1@. |
| 27 | 1 | Amministratore Truelite | |
| 28 | 10 | Simone Piccardi | A questo punto è possibile cifrare la partizione con LUKS e poi "agganciarla" al _device-mapper_, in modo che ''dm-crypt'' possa presentarla in maniera "trasparente" al sistema. E' molto importante la scelta di una passphrase abbastanza lunga e complessa poiché l'utilizzo di una frase corta e/o facilmente indovinabile vanificherebbe l'utilizzo della crittografia. |
| 29 | 9 | Simone Piccardi | |
| 30 | 1 | Amministratore Truelite | I comandi da eseguire sono quindi: |
| 31 | 9 | Simone Piccardi | |
| 32 | 8 | Amministratore Truelite | <pre> |
| 33 | 12 | Simone Piccardi | cryptsetup --verbose --verify-passphrase luksFormat /dev/sdc1 |
| 34 | cryptsetup luksOpen /dev/sdc1 sdc1 |
||
| 35 | 1 | Amministratore Truelite | </pre> |
| 36 | |||
| 37 | 9 | Simone Piccardi | Se tutto è andato a buon fine, l'esecuzione del comando @ls -l /dev/mapper/@ dovrebbe restituire il seguente output, confermando l'avvenuto "aggancio" della partizione criptata al device mapper: |
| 38 | 1 | Amministratore Truelite | |
| 39 | <pre> |
||
| 40 | total 0 |
||
| 41 | 4 | Amministratore Truelite | crw------- 1 root root 10, 63 Jul 16 01:34 control |
| 42 | 12 | Simone Piccardi | brw-r----- 1 root root 253, 0 Jul 16 01:52 sdc1 |
| 43 | 1 | Amministratore Truelite | </pre> |
| 44 | |||
| 45 | Va quindi creato un filesystem sulla partizione criptata: |
||
| 46 | 9 | Simone Piccardi | |
| 47 | 5 | Amministratore Truelite | <pre> |
| 48 | 12 | Simone Piccardi | mkfs.ext3 -j -m 1 /dev/mapper/sdc1 |
| 49 | 1 | Amministratore Truelite | </pre> |
| 50 | |||
| 51 | e sarà possibile montarlo con: |
||
| 52 | 9 | Simone Piccardi | |
| 53 | 1 | Amministratore Truelite | <pre> |
| 54 | 12 | Simone Piccardi | mount /dev/mapper/sdc1 /mnt |
| 55 | 1 | Amministratore Truelite | </pre> |
| 56 | |||
| 57 | mentre i comandi per smontare filesystem e partizione criptata sono: |
||
| 58 | |||
| 59 | <pre> |
||
| 60 | umount /mnt |
||
| 61 | 12 | Simone Piccardi | cryptsetup luksClose /dev/mapper/sdc1 |
| 62 | 1 | Amministratore Truelite | </pre> |
| 63 | |||
| 64 | 12 | Simone Piccardi | Le distribuzioni sufficientemente moderne usano ??hal??, ??d-bus?? e ??gnome-volume-manager?? (o l'equivalente per KDE) per la gestione dei volumi disponibili nel sistema: quando viene collegata al sistema la chiavetta USB contenente la partizione crittografata con LUKS, questa viene riconosciuta e compare una finestra che chiede di inserire la passphrase. |
| 65 | 1 | Amministratore Truelite | Se la passphrase inserita è corretta, la partizione viene montata e sarà possibile utilizzarla normalmente da tutte le applicazioni. |
| 66 | 10 | Simone Piccardi | |
| 67 | 12 | Simone Piccardi | Una delle funzionalità più interessanti di LUKS, che lo rende preferibile rispetto all'uso diretto di ''dm-crypt'' come illustrato in [[UsbKeyInstallation]] è che il sistema consente l'uso di più password (fino ad un massimo di 8) che possono essere aggiunte o rimosse (posto che almeno una resti presente per poter accedere al dispositivo). Il caso più comune è quello in cui si vuole aggiungere una nuova password o cambiare quella esistente, che si realizza comunque per con una aggiunta seguita da una rimozione. |
| 68 | 10 | Simone Piccardi | |
| 69 | Il comando che consente di aggiungere una passphrase è il seguente: |
||
| 70 | |||
| 71 | <pre> |
||
| 72 | 12 | Simone Piccardi | cryptsetup luksAddKey /dev/sdc1 |
| 73 | 10 | Simone Piccardi | </pre> |
| 74 | |||
| 75 | verrà chiesta una delle passphrase presenti (all'inizio ce ne è una sola, quella impostata in fase di creazione, cui viene sempre assegnato l'indice 0) per sbloccare l'accesso e poi l'immissione due volte della nuova passwphrase. La passphrase sarà inserita nel primo degli slot disponibili (nel caso dell'esempio, se aggiunta dopo la creazione, questo sarà quello con indice 1) e potrà essere utilizzata in maniera equivalente a tutte quelle presenti. Se lo scopo non era quello di aggiungere una passhprase, ma quello di cambiare la precedente, si potrà a questo punto passare alla rimozione di quella non voluta, cancellando il relativo slot. |
||
| 76 | |||
| 77 | Per individuare lo slot si può usare il comando @cryptsetup luksDump@, ottenendo un risultato del tipo: |
||
| 78 | <pre> |
||
| 79 | 12 | Simone Piccardi | cryptsetup luksDump /dev/sdc1 |
| 80 | LUKS header information for /dev/sdc1 |
||
| 81 | 10 | Simone Piccardi | |
| 82 | ... |
||
| 83 | |||
| 84 | Key Slot 0: ENABLED |
||
| 85 | Iterations: 182965 |
||
| 86 | Salt: 50 6d 67 70 63 33 19 c6 41 e7 c1 55 b6 02 49 89 |
||
| 87 | 54 79 7b 56 4e b6 78 92 c8 f8 66 e8 bb e6 a8 f1 |
||
| 88 | 1 | Amministratore Truelite | Key material offset: 8 |
| 89 | 10 | Simone Piccardi | AF stripes: 4000 |
| 90 | Key Slot 1: ENABLED |
||
| 91 | Iterations: 144406 |
||
| 92 | Salt: 56 35 b1 33 8d c9 0e b8 ba 10 a0 1c 4f 16 2b 8c |
||
| 93 | d3 ec fe c8 5f 7f 23 74 79 ab 5d 96 ec 4c 4c 4a |
||
| 94 | Key material offset: 264 |
||
| 95 | AF stripes: 4000 |
||
| 96 | Key Slot 2: DISABLED |
||
| 97 | Key Slot 3: DISABLED |
||
| 98 | Key Slot 4: DISABLED |
||
| 99 | Key Slot 5: DISABLED |
||
| 100 | Key Slot 6: DISABLED |
||
| 101 | Key Slot 7: DISABLED |
||
| 102 | </pre> |
||
| 103 | |||
| 104 | 11 | Simone Piccardi | e a questo punto la rimozione della passhprase indesiderata (nello specifico quella dello slot 0) sarà effettuata con: |
| 105 | 10 | Simone Piccardi | <pre> |
| 106 | 12 | Simone Piccardi | cryptsetup luksKillSlot /dev/sdc1 0 |
| 107 | 10 | Simone Piccardi | </pre> |