< Dm-crypt (Português)

dm-crypt (Português)/Swap encryption (Português)

Dependendo da necessidade, diferentes métodos podem ser usados para criptografar a partição swap. Uma configuração onde a partição swap é criptografada na inicialização oferece maior proteção dos dados, devido a evitar uma situação onde fragmentos de arquivos sensíveis colocados lá, e que não foram sobrescrevidos, estejam alcançáveis. No entanto, criptografar a swap em cada inicialização impossibilita a suspensão para o disco.

Status de tradução: Esse artigo é uma tradução de dm-crypt/Swap encryption. Data da última tradução: 2021-02-15. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Sem suporte a suspender para o disco

Em sistemas onde suspender para o disco (hibernação) não é desejado, /etc/crypttab pode ser usado para abrir a partição swap com uma senha randômica com o modo plain do dm-crypt no tempo de inicialização. Ao desligar o sistema, a senha aleartória é descartada, fazendo os dados criptografados inacessíveis.

Para habilitar esta funcionalidade, simplesmente descomente a linha que começa com swap no /etc/crypttab. Mude o parâmetro <dispositivo> para seu dispositivo swap. Por exemplo, deve parecer com:

/etc/crypttab
# <name>  <device>    <password>     <options>
swap      /dev/sd''X#''   /dev/urandom   swap,cipher=aes-xts-plain64,size=256

Isto vai mapear /dev/sdX# para /dev/mapper/swap e assim esta pode ser adicionada em /etc/fstab como uma swap normal. Se você tinha uma partição swap não criptografada antes, não se esqueça de desabilitá-la - ou reutilizar sua entrada do fstab ao mudar o dispositivo para /dev/mapper/swap. As opções padrão devem ser o suficiente para a maioria dos usuários. Para outras opções e uma explicação de cada coluna, veja crypttab(5) e também 2.3 do FAQ do cryptsetup.

Para usar o nomeação persistente , primeiro identifique o dispositivo swap:

Então o use como uma referência persistente para a partição (se dois resultados são retornados como acima, use qualquer um deles):

/etc/crypttab
# <name>  <device>                                                         <password>     <options>
swap      /dev/disk/by-id/ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-partX  /dev/urandom   swap,cipher=aes-cbc-essiv:sha256,size=256

Depois de inicializar para ativar a swap criptografada, você vai notar que ao rodar swapon -s vai ser mostrado uma entrada arbitária para o dispositivo mapeado (exemplo, ), enquanto o comando mostra crypt na coluna . Devido a cada inicialização ser criptografada novamente, o UUID de /dev/mapper/swap vai mudar toda vez.

UUID e LABEL

É perigoso usar a nomeação simples de dispositivos do kernel, como e , para criptografar a swap com o crypttab. Uma pequena mudança no nome dos dispositivos ou particionamento pode acarretar na perda de seus dados na próxima inicialização. O mesmo se você usar o PARTUUID e então usar esta partição para alguma outra coisa e se esquecer de remover a respectiva entrada do crypttab.

É mais confiável identificar a partição correta ao dar um genuíno UUID ou LABEL. Por padrão isto não funciona devido ao dm-crypt e sobrescreverem qualquer coisa presente na partição, incluindo o UUID e LABEL. No entanto é possível especificar o início (offset) da swap. Isto permite criar um minúsculo e vazio sistema de arquivos com o objetivo de prover um UUID ou LABEL persistente para a encriptação da swap.

Crie um sistema de arquivos, com uma LABEL de sua escolha:

# mkfs.ext2 -L cryptswap /dev/sdX# 1M

O parâmetro não usual depois do nome do dispositivo limita o tamanho do sistema de arquivos para 1 MiB, deixando espaço para a swap criptografada.

Com isso, agora pode facilmente ser identificada por ambos UUID ou LABEL, independente do nome do dispositivo ou até mesmo o número da partição que podem mudar no futuro. Modifique as entradas do /etc/crypttab e /etc/fstab:

/etc/crypttab
# <name> <device>             <password>    <options>
swap     LABEL=''cryptswap''      /dev/urandom  swap,offset=2048,cipher=aes-xts-plain64,size=512

Observe o offset: são 2048 setores de 512 bytes, então 1 MiB. Desta maneira a swap criptografada não vai afetar o LABEL/UUID do sistema de arquivos, e o alinhamento de dados vai funcionar também.

Ao usar esta configuração, o cryptswap vai somente usar a partição com o LABEL correspondente, independente do que o nome do dispositivo pode ser. Se você decidir formatar e usar a partição para outra coisa, o LABEL vai ser perdido, logo, na próxima inicialização nada deve ser sobrescrito.

Desabilitando hibernação nos ambientes desktop

Ambientes desktop podem não detectar automaticamente que a partição swap é randomicamente criptografada e não pode ser usada para suspender para o disco.

Xfce pode ser configurado para esconder seu botão de Hibernação ao executar este comando:

$ xfconf-query -c xfce4-session -np /shutdown/ShowHibernate -t bool -s false

Com suporte a suspender para o disco

Para resumir depois de suspender o computador para o disco (hibernar), é necessário manter o espaço swap intacto. Por isso, tenha uma partição ou arquivo swap criptografada com LUKS, que pode ser guardada no disco ou colocada na inicialização.

Os três seguintes métodos são alternativas que possibilitam suspender para o disco. Se você aplicar qualquer uma delas, entenda que dados críticos podem ter sido colocados na swap e potencialmente permanecer por um longo período de tempo (até que sejam sobrescritos). Para reduzir o risco, considere montar um sistema que criptografa a swap novamente, por exemplo, a cada vez que o sistema é desligado normalmente, junto com o método de sua escolha.

LVM dentro do LUKS

Se o swap está no grupo de volumes lógicos que é ativado no initramfs, simplesmente siga as instruções em Power management/Suspend and hibernate#Hibernation.

Usando uma partição swap

Para resumir de uma partição swap criptografada, esta deve ser aberta durante o initramfs.

  • Quando usar o initramfs padrão baseado no busybox com o hook encrypt, siga as instruções em #Hook do mkinitcpio.
  • Quando usar o initramfs baseado no systemd com o hook sd-encrypt, adicione os parâmetros adicionais do rd.luks para abrir a partição swap.

Hook do mkinitcpio

Se o swap está em um dispositivo diferente do sistema de arquivos da partição raiz, este não vai ser aberto pelo hook , o resume vai tomar lugar antes que o /etc/crypttab seja lido, por isso é necessário criar um hook e colocá-lo em para abrir o dispositivo swap criptografado com LUKS antes dessa situação.

Se você deseja usar a partição que é atualmente usada pelo sistema, você vai ter que desativá-la primeiro:

# swapoff /dev/<dispositivo>

Tenha certeza de remover qualquer linha em /etc/crypttab apontando para este dispositivo.

Se você está usando uma partição swap existente, e esta está numa tabela de partição GPT, você vai precisar usar o gdisk para definir o atributo de partição 63 "do not automount" ("não monte automaticamente") nela. Isto vai prevenir o systemd-gpt-auto-generator de descobrir e habilitar a partição na inicialização.

A seguinte configuração tem a desvantagem de inserir manualmente uma senha adicional para a partição swap toda vez que ligar o sistema.

Formate o container criptografado para a partição swap, crie um espaço de chave para uma senha memorizável.

# cryptsetup luksFormat /dev/<dispositivo>

Abra a partição em :

# cryptsetup open /dev/<dispositivo> dispositivoSwap

Crie o sistema de arquivos para a swap dentro da partição mapeada:

# mkswap /dev/mapper/dispositivoSwap

Agora faça um hook para abrir a swap na inicialização. Você pode instalar e configurar o , ou seguir as seguintes instruções. Crie um arquivo contendo o seguinte comando de abertura:

Atenção: Montar o sistema de arquivos é perigoso e destrutivo. A keyfile não deve ser lida de um sistema de arquivos que estava montado quando o sistema foi suspenso.

Para abrir o dispositivo swap ao digitar a senha ou

Para abrir o dispositivo swap com uma keyfile do dispositivo raiz criptografado.

Em alguns computadores, condições de corrida podem ocorrer quando o mkinitcpio tenta montar o dispositivo antes dele ser aberto e a enumeração de dispositivos ainda está incompleta. O bloco opcional vai atrasar o processo de inicialização em 2 segundos até que o dispositivo raiz esteja pronto para ser montado.

Crie e edite o arquivo de configuração do hook:

/etc/initcpio/install/openswap
build ()
{
   add_runscript
}
help ()
{
cat<<HELPEOF
  Isto abre a partição swap criptografada /dev/<dispositivo> em /dev/mapper/dispositivoSwap
HELPEOF
}

Adicione o hook no vetor no , entre e . Não se esqueça de adicionar o hook depois de

HOOKS=(... encrypt openswap resume filesystems ...)

Gere novamente o initramfs.

Coloque a partição mapeada no /etc/fstab ao adicionar a seguinte linha:

/dev/mapper/dispositivoSwap swap swap defaults 0 0

Configure seu sistema para resumir com o /dev/mapper/dispositivoSwap. Por exemplo, se você usa GRUB com suporte a hibernação do kernel, adicione o parâmetro do kernel resume=/dev/mapper/dispositivoSwap na variável em . Uma linha do kernel com a raiz e swap criptografada pode parecer com isso:

kernel /vmlinuz-linux cryptdevice=/dev/sda2:raiz root=/dev/mapper/raiz resume=/dev/mapper/dispositivoSwap ro

Na inicialização, o hook vai abrir a partição swap para que o kernel possa usá-la. Se você usar hooks especiais para resumir da hibernação, tenha certeza de que eles estão depois do no vetor . Note que devido ao initrd abrir a swap, não é necessário ter uma entrada para dispositivoSwap em /etc/crypttab.

Usando um arquivo swap

Um arquivo swap pode ser usado para reservar um espaço swap dentro de uma partição existente e isto também pode ser feito dentro de uma partição criptografada.

Siga as instruções para criação do arquivo swap em Swap#Arquivo swap e configure a hibernação de acordo com Power management/Suspend and hibernate#Hibernation into swap file.

Problemas conhecidos

gollark: *VRRRR intensifies*
gollark: It's not as bad as my server at maximum fan speed, though...
gollark: *VRRRRRR*
gollark: When I occasionally do voice chat on here and stuff I have to use push to talk.
gollark: My laptop's microphone is very bad, so they'd probably ask me to turn it off if I were to actually use it.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.