Come posso impostare un file di scambio crittografato in Linux?


15

2017 ATTENZIONE! La risposta accettata sembra funzionare, ma con i kernel recenti ho scoperto che il sistema si sarebbe bloccato non appena avesse iniziato a scambiare. Se si tenta di utilizzare un file di scambio crittografato, assicurarsi che si scambia effettivamente correttamente. Mi ci è voluto molto tempo per capire perché il mio sistema continuava a bloccarsi senza una ragione apparente. Sono tornato a utilizzare una partizione di swap crittografata, che funziona correttamente.


Come posso impostare un file di scambio crittografato (non partizione) in Linux? È anche possibile? Tutte le guide che ho trovato parlano di partizioni di swap crittografate, ma non ho una partizione di swap e preferirei non dover ripartizionare il mio disco.

Non ho bisogno del supporto per la sospensione su disco, quindi mi piacerebbe usare una chiave casuale ad ogni avvio.

Sto già utilizzando un volume ospitato su file TrueCrypt per i miei dati, ma non voglio inserire il mio scambio in quel volume. Non ho intenzione di utilizzare TrueCrypt per il file di scambio se esiste una soluzione migliore.

Sto usando Arch Linux con il kernel predefinito, se è importante.


Quale sarebbe esattamente il punto di ciò? Dovrebbe essere decifrato durante l'uso e sarebbe vuoto quando non in uso.
tkbx,

1
Quando cerchi encrypted swapfileil primo risultato porta a rayslinux.blogspot.de/2011/01/…
ott--

@ott, nonostante abbia detto "file di scambio" nel titolo, se leggi le indicazioni in quel post descrivono chiaramente una partizione di scambio.
cjm,

@tkbx, il punto è impedire a qualcuno di recuperare i dati sensibili dal file di scambio dopo aver spento il computer. (O qualcuno non è stato in grado di indovinare la mia password, quindi si riavvia in un CD live o simili.)
cjm,

2
@tkbx, non ci credo. Ciò richiederebbe la scrittura di gigabyte di dati ogni volta che si spegne il computer. I dati in un file di scambio non vengono utilizzati al riavvio, ma ciò non significa che vengano cancellati dal disco.
cjm,

Risposte:


14

In effetti, la pagina descrive l'impostazione di una partizione, ma è simile per un file di scambio:

dd if=/dev/urandom of=swapfile.crypt bs=1M count=64
loop=$(losetup -f)
losetup ${loop} swapfile.crypt
cryptsetup open --type plain --key-file /dev/urandom ${loop} swapfile
mkswap /dev/mapper/swapfile
swapon /dev/mapper/swapfile

Il risultato:

# swapon -s
Filename                                Type            Size    Used    Priority
/dev/mapper/swap0                       partition       4000176 0       -1
/dev/mapper/swap1                       partition       2000084 0       -2
/dev/mapper/swapfile                    partition       65528   0       -3

swap0 e swap1 sono partizioni reali.


loop-AES.README dice nella sezione 7.1: "I loop supportati da file non possono essere usati per lo scambio." È falso (o vero solo per loop-AES)?
cjm,

Cioè senza Device Mapper.
ott--

Ho rivisto il tuo comando cryptsetup per usare openinvece di create(che la manpage dice è obsoleto) e per usare una chiave casuale invece di richiedere una password. Sembra funzionare.
cjm,

Questo non sembra persistere al riavvio: "swapon: impossibile aprire / dev / mapper / swapfile: nessun file o directory del genere"
therobyouknow

6

Questa configurazione utilizza chiavi generate casualmente all'avvio e non supporterà l'ibernazione sul disco rigido! È necessario disabilitare l'ibernazione tramite l'utility DE Power Management rispettabile e impostarlo su Arresto su Critico per evitare la perdita di dati!

Assicurarsi di eseguire sudo -so suprima di eseguire quanto segue.

  1. Disabilita scambio:

    # swapoff -a
    
  2. Individua la partizione di swap esistente

    # lsblk
    

    Otterrai qualcosa del genere:

    sda3    8:3    0     8G  0 part [SWAP]
    
  3. Sovrascrivi vecchio scambio

    # dd if=/dev/zero bs=1024000 of=/dev/sda<#>
    

    per esempio:

    # dd if=/dev/zero bs=1024000 of=/dev/sda3
    
  4. fstab impostare

    # vim /etc/fstab
    

    Sostituisci il vecchio dispositivo SWAP con il nome del mapper crypttab: /dev/mapper/cswap

    #<file system>      <mount point>   <type>  <options>   <dump>  <pass>
    /dev/mapper/cswap   none            swap    pri=1,defaults  0   0
    
  5. Crypto Setup

    # ls -lF /dev/disk/by-id
    

    Per esempio:

    ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3
    
    # vim /etc/crypttab
    
    # <name>    <device>                            <password>  <options>
      cswap     /dev/disk/by-id/ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3   /dev/urandom    swap,cipher=aes-cbc-essiv:sha256,size=256
    
  6. Swap crittografato attivo

    # reboot
    
  7. Verifica delle operazioni di scambio codificate

    Per esempio:

    # dmsetup -C info 
    cswap      253   0 L--w    2    1      0 CRYPT-PLAIN-cswap  
    # lsblk
    ├─sda3                8:3    0     8G  0 part  
    │ └─cswap             253:0    0     8G  0 crypt [SWAP]
    # cat /proc/swaps 
    Filename                Type        Size    Used    Priority
    /dev/dm-0               partition   8385532 0       -1
    

1

Se usi dd if=/dev/zero of=/swapfile bs=8G count=1, seguito da mkswap /swapfilee swapon /swapfile, dovresti avere un file di scambio funzionante sul tuo filesystem di root. (ci ddassicuriamo che non ci siano buchi nel file di scambio)

Questo evita di dover fare confusione con i dispositivi loop e / o crypttab e posiziona semplicemente il file di scambio all'interno del tuo filesystem già crittografato. (Supponiamo che tu stia utilizzando la crittografia per l'intera unità qui. Prepara il /swapfileparametro con il percorso della directory crittografata se è altrove)

Vedi man mkswape man swaponper maggiori informazioni.


Ho provato a creare un file di scambio come questo nella mia directory home crittografata in quel modo, e si è bloccato proprio come faceva il file di scambio crittografato ...
fifaltra

La tua home directory è sbloccata all'avvio del sistema o quando accedi? Se si sblocca solo quando accedi, non puoi avere il file di scambio lì dentro. Lo scambio deve essere sbloccato e reso disponibile all'avvio del sistema. Oltre a ciò, non si desidera roba di sistema nella directory home dell'utente. È riservato agli utenti.
Mio Rin,
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.