Como configuro um arquivo de troca criptografado no Linux?

14

2017 AVISO! A resposta aceita parece funcionar, mas com os kernels recentes eu descobri que o sistema iria travar assim que começasse a trocar. Se você tentar usar um arquivo de permuta criptografado, certifique-se de que ele seja realmente alternado. Levei muito tempo para descobrir por que meu sistema continuava bloqueando sem motivo aparente. Voltei a usar uma partição de troca criptografada, que funciona corretamente.

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

Não preciso de suporte para suspender para disco, por isso gostaria de usar uma chave aleatória em cada inicialização.

Eu já estou usando um volume hospedado por um arquivo TrueCrypt para meus dados, mas não quero colocar meu swap em esse volume. Eu não estou definido em usar TrueCrypt para o arquivo de swap, se houver uma solução melhor.

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

    
por cjm 12.02.2013 / 17:30

3 respostas

14

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

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.

    
por 12.02.2013 / 22:10
5

Esta configuração usa chaves geradas aleatoriamente na inicialização e não suportará a hibernação para o disco rígido! Você deve desativar a hibernação através de seu utilitário de gerenciamento de energia respeitado DE e configurá-lo para desligamento no crítico para evitar a perda de dados!

Certifique-se de executar sudo -s ou su antes de executar o seguinte.

  1. Desativar troca:

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

    # lsblk
    

    Você receberá algo assim:

    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 setup

    # vim /etc/fstab
    

    Substitua o dispositivo SWAP antigo pelo nome do mapeador 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. Verifique as Operações de Troca Encontadas

    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
    
por 01.05.2015 / 21:42
1

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

Isso evita ter que mexer com dispositivos de loop e / ou crypttab e simplesmente coloca o swapfile dentro do seu sistema de arquivos já criptografado. (Estamos assumindo que você está usando criptografia para a unidade inteira aqui. Prefixe o parâmetro /swapfile com o caminho para o diretório criptografado, se estiver em outro lugar)

Veja man mkswap e man swapon para mais informações.

    
por 07.06.2017 / 09:09