Come faccio a creare un filesystem crittografato all'interno di un file?


16

Ho trovato questo tutorial interessante sul blog flossstuff .

Spiega come creare un file vuoto, formattarlo come ext4 e montarlo come dispositivo.

Vorrei sapere se può essere creato come un file system ext4 crittografato.

Ho provato a usare palimpsest (l'utilità del disco trovata nel menu Sistema) per formattare il file system già creato ma non funziona in quanto rileva il file system in uso.

Se provo a smontare il file system, non funzionerà nemmeno perché non rileva il dispositivo (poiché non è un dispositivo reale come un disco rigido o un'unità USB).

Quindi la mia domanda è: esiste un'opzione per creare il file system come crittografato dall'inizio? Ho usato questi comandi:

Crea un file vuoto di 200 Mb:

dd if=/dev/zero of=/path/to/file bs=1M count=200

Fallo ext4:

mkfs -t ext4 file

Montalo in una cartella dentro casa mia:

sudo mount -o loop file /path/to/mount_point

Esiste un modo in cui il mkfscomando può creare un filesystem ext4 crittografato che richiede una password di decrittografia?

Sto programmando di usarlo come un modo per crittografare i file all'interno di Dropbox.



Se si desidera una corretta crittografia durante il backup dei file, è possibile prendere in considerazione SpiderOak. Più sicurezza e meno confusione.
Landroni,

Risposte:


8

È possibile utilizzare cryptmountper crittografare un filesystem, anche se il filesystem si trova su un file.

La cryptmountpagina di manuale ha una spiegazione molto semplice e dettagliata che riporto (modificata) qui, e menziona esplicitamente un filesystem basato su file.

  • Passaggio 1
    Aggiungere una voce /etc/cryptmount/cmtabcome segue:

    mycrypt {
        dev=/media/data/mycrypt dir=/home/enzotib/mycrypt
        fstype=ext4 mountoptions=defaults cipher=twofish
        keyfile=/etc/cryptmount/mycrypt.key
        keyformat=builtin
    }
    

    dove /media/data/mycryptè il file di supporto creato da dded /home/enzotib/mycryptè il mountpoint desiderato.

  • Passaggio 2
    Generare una chiave di decrittografia segreta

    sudo cryptmount --generate-key 32 mycrypt
    
  • Passaggio 3
    Eseguire il comando seguente

    sudo cryptmount --prepare mycrypt
    

    ti verrà quindi richiesta la password utilizzata durante l'impostazione della chiave

  • Passaggio 4
    Creare il filesystem

    sudo mkfs.ext4 /dev/mapper/mycrypt
    
  • Passaggio 5
    Eseguire

    sudo cryptmount --release mycrypt
    
  • Passo 6
    Ora monta il filesystem

    mkdir /home/enzotib/mycrypt
    cryptmount -m mycrypt
    

    quindi smontalo

    cryptmount -u mycrypt
    

Inoltre, se è necessario crittografare una directory, encfspuò valere la pena prendere in considerazione.


Grazie per la risposta, ho creato il file system, crittografato e caricato su Dropbox. Più tardi proverò a montare quel file nell'altro pc. Solo una cosa, può essere fatto senza sudo? Se voglio mantenere il file e il file system montati all'interno della mia casa (non su supporti come USB o hardrive) i comandi sarebbero gli stessi senza sudo o cryptmount necessita sempre dei privilegi di root?
animaletdesequia,

1
@darent: sembra che il comando abbia bisogno dei privilegi di root solo nella configurazione del filesystem, ma montare / smontare è un'azione dell'utente, a condizione che il file immagine e il mountpoint siano di proprietà dell'utente. Per impostare lo stesso file immagine su un'altra macchina, suppongo che dovresti copiare /etc/cryptmount/mycrypt.keye saltare il --generate-keypassaggio.
enzotib,

Ottengo questo errore nell'ultimo passaggio: $ sudo cryptmount -m encriptat Inserisci la password per il target "encriptat": e2fsck 1.41.14 (22-dic-2010) fsck.ext4: Súperbloc no vàlid, provant els blocs de còpia de seguretat. .. fsck.ext4: Bad magic number in super-block en intentar obrir / dev / mapper / encriptat
animaletdesequia

1
@darent: hai creato il filesystem come mostrato nel passaggio 4? sei stato coerente nella sostituzione del nome "mycrypt" con "encriptat"?
enzotib,

Siamo spiacenti, l'errore era perché invece di (sudo mkfs.ext4 / dev / mapper / mycrypt) stavo scrivendo (sudo mkfs.ext4 mycript). Stavo puntando direttamente sul file, non sul dispositivo. Ora funziona perfettamente. E mi dispiace per il formato di questo messaggio, non so perché non riesco a separare le righe (se premo invio pubblica il commento invece di creare una nuova riga, forse un glitch di Firefox ...) Saluti! EDIT: ora ho letto la tua risposta, il nome dell'encriptat non era un problema (ho semplicemente adattato il tuo post e messo i file con nomi catalani, ma è tutto coerente). Ora tutto funziona bene, grazie ancora :)
animaletdesequia,

7

Segui i passaggi successivi per creare un file crittografato con all'interno il filesystem:

1. Il modo più veloce per creare file di dimensioni specifiche è:

fallocate -l 128M /path/to/file

2. Creare una partizione LUKS (Linux Unified Key Setup) all'interno del file usando gli strumenti dm-crypt :

cryptsetup -y luksFormat /path/to/file

È possibile verificare che il file sia un contenitore crittografato:

/path/to/file: LUKS encrypted file, ver 1 [aes, xts-plain64, sha1] UUID: 7e2af5a1-3fab-43ea-a073-3b9cc6073f00

3. Apri contenitore crittografato:

cryptsetup luksOpen /path/to/file data

dataè il nome del volume del mapper del dispositivo. Puoi scegliere un altro nome.

Questo apre il dispositivo LUKS e lo associa a un nome che forniamo, nel nostro caso creando un file su /dev/mapper/data.

4. Crea il ext4filesystem su questo dispositivo:

mkfs.ext4 /dev/mapper/data

5. Quindi creare il punto di montaggio:

mkdir /path/to/mount

6. E montare il dispositivo lì:

mount /dev/mapper/data /path/to/mount

7. Per smontare il filesystem e chiudere il dispositivo LUKS:

umount /path/to/mount
cryptsetup luksClose data

Ora hai un contenitore LUKS crittografato con filesystem ext4 all'interno. Quando si desidera utilizzarlo, ripetere semplicemente i passaggi 3 e 6. Al termine, chiamare il passaggio 7.

Questo articolo mi è stato molto utile.

Inoltre un giorno il tuo contenitore esaurirà lo spazio. Supponiamo che la dimensione del file contenitore crittografato sia 128 MB e che vogliamo aumentarne la dimensione a 512 MB. Per aumentare la sua capacità attenersi alla seguente procedura:

1. Smontare e chiudere il dispositivo LUKS (vedere il passaggio 7 nell'elenco precedente).

2. Aumenta la dimensione del file contenitore:

 dd if=/dev/zero of=/path/to/file bs=384M count=1 oflag=append conv=notrunc

3. Apri il dispositivo LUKS.

cryptsetup luksOpen /path/to/file data

4. Ridimensionare il dispositivo LUKS in modo che corrisponda alle dimensioni del file contenitore. Dalla pagina man:

Se --size (in settori) non è specificato, viene utilizzata la dimensione del dispositivo a blocchi sottostante.

Quindi puoi semplicemente:

cryptsetup resize data

5. Quindi ridimensionare il filesystem ext4:

e2fsck -f /dev/mapper/data
resize2fs /dev/mapper/data

6. Ora puoi montare nuovamente il filesystem:

mount /dev/mapper/data /path/to/mount

1
Penso che questa risposta sia la risposta migliore e più aggiornata. Dovrebbe essere selezionato come la risposta corretta!
yurtesen,

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.