Como faço para configurar um arquivo de troca criptografado no Linux?

15

2017 ATENÇÃO! A resposta aceita parece funcionar, mas com os kernels recentes, descobri que o sistema travava assim que começava a trocar. Se você tentar usar um arquivo de troca criptografado, verifique se ele realmente troca corretamente. Levei muito tempo para descobrir por que meu sistema continuava travando sem motivo aparente. Voltei a usar uma partição de troca criptografada, que funciona corretamente.


Como configuro um arquivo de troca criptografado (não partição) no Linux? Isso é possível? Todos os guias que encontrei falam sobre partições de troca criptografadas, mas não tenho uma partição de troca e prefiro não ter que reparticionar meu disco.

Não preciso de suporte à suspensão em disco, portanto, gostaria de usar uma chave aleatória em cada inicialização.

Já estou usando um volume hospedado em arquivo TrueCrypt para meus dados, mas não quero colocar minha troca nesse volume. Não uso o TrueCrypt para o arquivo de troca, se houver uma solução melhor.

Estou usando o Arch Linux com o kernel padrão, se isso importa.

cjm
fonte
Qual seria exatamente o objetivo disso? Teria que ser descriptografado durante o uso e ficaria vazio quando não estiver em uso.
Tkbx
1
Quando você pesquisa encrypted swapfileo primeiro resultado, leva ao rayslinux.blogspot.de/2011/01/…
ott-- 12/02/2013
@ott, apesar de dizer "arquivo de troca" no título, se você ler as instruções nesse post, elas descreverão claramente uma partição de troca.
Cjm
@tkbx, o objetivo é impedir que alguém recupere dados confidenciais do arquivo de permuta depois de desligar o computador. (Ou alguém tem sido incapaz de adivinhar minha senha, então eles estão reiniciando em um CD ao vivo ou tal.)
CJM
2
@ tkbx, eu não acredito. Isso exigiria a gravação de gigabytes de dados toda vez que você desligasse o computador. Os dados em um arquivo de troca não são usados quando você reinicia, mas isso não significa que foram apagados do disco.
Cjm

Respostas:

14

De fato, a página descreve a configuração de uma partição, mas é semelhante para um arquivo de troca:

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

O resultado:

# 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 são partições reais.

ott--
fonte
O loop-AES.README diz na seção 7.1: "Os loops com backup de arquivo não podem ser usados ​​para troca". Isso é falso (ou somente verdadeiro para loop-AES)?
Cjm
Isso é sem o mapeador de dispositivos.
ott--
Revisei seu comando cryptsetup para usar em openvez de create(o que a página de manual diz ser obsoleto) e usar uma chave aleatória em vez de solicitar uma senha. Parece estar funcionando.
CJM
Isso não parece persistir na reinicialização: "swapon: não é possível abrir / dev / mapper / swapfile: não
existe
6

Esta configuração usa chaves geradas aleatoriamente na inicialização e não suporta a hibernação no disco rígido! Você deve desativar a hibernação através do seu respeitado DE Power Management Utility e configurá-lo como Shutdown on Critical para evitar a perda de dados!

Certifique-se de executar sudo -sou suantes de executar o seguinte.

  1. Desativar Troca:

    # swapoff -a
    
  2. Localize a partição de troca existente

    # lsblk
    

    Você obterá algo como isto:

    sda3    8:3    0     8G  0 part [SWAP]
    
  3. Substituir Troca Antiga

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

    por exemplo:

    # dd if=/dev/zero bs=1024000 of=/dev/sda3
    
  4. fstab configuração

    # vim /etc/fstab
    

    Substitua o dispositivo SWAP antigo pelo nome do mapeador de crypttab: /dev/mapper/cswap

    #<file system>      <mount point>   <type>  <options>   <dump>  <pass>
    /dev/mapper/cswap   none            swap    pri=1,defaults  0   0
    
  5. Configuração de criptografia

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

    Por exemplo:

    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. Troca criptografada ativa

    # reboot
    
  7. Verificar operações de troca codificada

    Por exemplo:

    # 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
    
Timothy Butterworth
fonte
1

Se você usar dd if=/dev/zero of=/swapfile bs=8G count=1, seguido por mkswap /swapfilee swapon /swapfile, deverá ter um arquivo de troca em funcionamento no seu sistema de arquivos raiz. (usamos ddpara garantir que não haja falhas no arquivo de troca)

Isso evita ter que mexer com dispositivos de loop e / ou crypttab e simplesmente coloca o arquivo de troca dentro do seu sistema de arquivos já criptografado. (Supomos que você esteja usando criptografia para toda a unidade aqui. Anexe o /swapfileparâmetro com o caminho para o diretório criptografado, se estiver em outro lugar)

Veja man mkswape man swaponpara mais informações.

Mio Rin
fonte
Eu tentei criar um arquivo de swap como esta no meu diretório home criptografado assim, e ele caiu assim como o arquivo de troca criptografada fez ...
fifaltra
Seu diretório pessoal está desbloqueado na inicialização do sistema ou quando você faz login? Se ele for desbloqueado apenas quando você efetuar login, não poderá ter o arquivo de troca nele. A troca deve ser desbloqueada e disponibilizada na inicialização do sistema. Além disso, você não deseja itens do sistema no diretório inicial do usuário. Isso é reservado para as coisas do usuário.
Mio Rin