Por que meu volume LVM criptografado (dispositivo LUKS) não é montado no momento da inicialização?

15

Estou tentando configurar um volume criptografado seguindo este guia

Tudo está configurado, mas a montagem do volume criptografado falha no momento da inicialização com o erro:

fsck.ext4: Não existe esse arquivo ou diretório ao tentar abrir / dev / mapper / safe_vault Possivelmente dispositivo inexistente?

Esta é a minha configuração:

crypttab

$ sudo cat /etc/crypttab
safe_vault  /dev/disk/by-uuid/d266ae14-955e-4ee4-9612-326dd09a463b  none    luks

NOTA:

O uuidvem de:

$ sudo blkid /dev/mapper/<my_logical_group>-safe_vault 
/dev/mapper/<my_logical_group>-safe_vault: UUID="d266ae14-955e-4ee4-9612-326dd09a463b" TYPE="crypto_LUKS" 

fstab

$ sudo cat /etc/fstab | grep safe_vault
/dev/mapper/safe_vault      /safe-vault     ext4    defaults    0 2

O que eu fiz...

Então eu fui ao site do desenvolvedor e no FAQ de Problemas Comuns eles dizem:

Verifique se você possui o mapeador de dispositivos e o destino de criptografia no seu kernel. A saída de "destinos dmsetup" deve listar um destino "criptografia". Se não estiver lá ou se o comando falhar, adicione o mapeador de dispositivo e o crypt-target ao kernel.

Então eu fiz, acontece que não tenho um cryptalvo:

$ sudo dmsetup targets
striped          v1.4.1
linear           v1.1.1
error            v1.0.1

O problema é que não sei como adicionar um alvo.

Eu acho que isso (não ter o cryptdestino) talvez faça com que a crypttabconfiguração seja ignorada no momento da inicialização e, portanto, tente montar a entrada com fstabfalha porque cryptsetupnão mapeou meu volume criptografado /dev/mapper/safe_vault.

NOTA:

O volume criptografado pode ser mapeado, montado e gravado manualmente:

$ sudo cryptsetup luksOpen /dev/mapper/<my_logical_group>-safe_vault safe_vault
Enter passphrase for /dev/mapper/<my_logical_group>-safe_vault: 

$ sudo mount /dev/mapper/safe_vault /safe_vault

É assim que ele é mapeado e montado:

$ sudo lsblk -o name,uuid,mountpoint
NAME                                  UUID                                   MOUNTPOINT
sda                                                                          
├─sda1                                28920b00-58d3-4941-889f-6249357c56ee   
├─sda2                                                                       
└─sda5                                uhBLE7-Kcfe-RMi6-wrlX-xgVh-JfAc-PiXmBe 
  ├─<my_logical_group>-root (dm-0)       1bed9027-3cf7-4f8d-abdb-28cf448fb426   /
  ├─<my_logical_group>-swap_1 (dm-1)     a40c16c4-7d0c-46d7-afc8-99ab173c20bb   [SWAP]
  ├─<my_logical_group>-home (dm-2)       e458abb7-b263-452d-8670-814fa737f464   /home
  ├─<my_logical_group>-other (dm-3)      0a1eec42-6534-46e1-8eab-793d6f8e1003   /other
  └─<my_logical_group>-safe_vault (dm-4) d266ae14-955e-4ee4-9612-326dd09a463b   
    └─safe_vault (dm-5)               9bbf9f47-8ad8-43d5-9c4c-dca033ba5925   /safe-vault
sr0  

ATUALIZAR

  • Acontece que eu tenho o cryptalvo, mas para que ele apareça dmsetup targetseu tive que primeirocryptsetup luksOpen <my-device>
  • Tentei usar UUIDs de acordo com a resposta de @Mikhail Morfikov, mas ainda falha no momento da inicialização.

Ainda acho que o problema é que, de alguma forma, o volume criptografado não está sendo mapeado (aberto com cryptsetup luksOpen) no momento da inicialização, portanto, não /dev/mapper/<safe_vault or UUID>existe, e a tentativa de montá-lo (fstab) falha.

ATUALIZAÇÃO 2

Acontece que eu não tinha os scripts necessários para montar no momento da inicialização. Veja a nota na resposta de @ MikhailMorfikov.

pgpb.padilla
fonte
1
O destino da criptografia aparece depois que você faz manualmente luksOpen? Eu esperaria que, se não estivesse lá, o luksOpen também falharia.
um CVn
Ok, depois que sudo cryptsetup luksOpendois novos destinos aparecerem para sudo dmsetup targets: errore crypt. Eu acho que preciso de mudar a pergunta então ...
pgpb.padilla
É uma partição ou um contêiner de arquivos?
Mikhail Morfikov
/dev/mapper/<my-logical-volume>-safe_vaulté um volume lógico criado com o LVM e /dev/mapper/safe_vaulté o dispositivo para o qual ele é mapeado cryptsetup luksOpen /dev/mapper/<my-logical-volume>-safe_vault. Você sabe se crypttabfunciona com volumes LVM?
Pgpb.padilla
Eu tenho o lvm dentro de uma partição luks, na verdade eu tenho todo o meu disco de 1,5 TB criptografado (exceto /boot). Tudo montado na inicialização sem nenhum problema. Tem certeza de que atualizou initramfsapós a edição /etc/crypttab? Você pode mostrar a saída de lsblk -o name,uuid,mountpointquando tudo está montado e funciona como deveria?
Mikhail Morfikov

Respostas:

16

Você deve prestar atenção aos UUIDs. Por exemplo, esta é minha configuração:

# lsblk -o name,uuid,mountpoint
├─sda2                         727fa348-8804-4773-ae3d-f3e176d12dac
│ └─sda2_crypt (dm-0)          P1kvJI-5iqv-s9gJ-8V2H-2EEO-q4aK-sx4aDi
│   ├─debian_crypt-swap (dm-1) 3f9f24d7-86d1-4e21-93e9-f3c181d05cf0   [SWAP]
│   ├─debian_crypt-tmp (dm-2)  93fc8219-f985-45fb-bd5c-2c7940a7512d   /tmp
│   ├─debian_crypt-home (dm-3) 12e8566c-8f0f-45ec-8524-6d9d9ee91eae   /home
│   └─debian_crypt-root (dm-4) 9685570b-4c9e-43ea-815e-49d10dc7a1bf   /

Eu tenho uma partição criptografada (sda2) com 4 volumes (LVM). O que eu preciso é definir dois UUIDs nos arquivos corretos. O sda2 UUID /etc/crypttabacessa e o volume UUID (por exemplo debian_crypt-root) acessa /etc/fstab.

Então, seria:

# cat /etc/crypttab
sda2_crypt              UUID=727fa348-8804-4773-ae3d-f3e176d12dac   none        luks

# cat /etc/fstab
UUID=9685570b-4c9e-43ea-815e-49d10dc7a1bf       /               ext4    defaults,errors=remount-ro              0 1

Após alterar o /etc/crypttabarquivo, você deve reconstruir o initramfs:

# update-initramfs -u -k all

NOTA

O pacote cryptsetupprecisa ser instalado porque possui scripts de inicialização que fornecem suporte para a montagem automática de volumes criptografados na inicialização.

Por que se preocupar em mencionar isso? Bem, se você configurar o LVM durante a instalação, o Debian Wheezy instala os pacotes cryptsetup-binlibcryptsetup4 e , lvm2mas não cryptsetup, então você tem as ferramentas para configurar dispositivos LVM & LUKS, mas não os scripts necessários para montar dispositivos LUKS no momento da inicialização. Aqueles vêm no pacote de criptografia .

Mikhail Morfikov
fonte
Eu tentei usar, UUIDmas recebo o mesmo erro. Vou atualizar a pergunta com detalhes.
Pgpb.padilla
Oi, isso está ficando um pouco longo, podemos conversar ?
Pgpb.padilla
Como um aparte, mesmo que você não edite o / etc / crypttab, parece que os discos o editarão se você alterar determinadas configurações de criptografia. Essa resposta me ajudou a corrigir os erros que cometi nos discos (e talvez mais erros ao tentar desfazer os discos).
sage
0

Parece que a resposta de @Mikhail Morfikov cobre a montagem durante o estágio initramfs . Uma alternativa (se não for o sistema de arquivos raiz) é descriptografar e montar a partição automaticamente via systemd , após o carregamento do kernel linuz. Claro que isso só é possível se você estiver executando o systemd . Vou explicar o método aqui:

A /etc/crypttabentrada:

crypt2 UUID=e412-blahblah /path/to/crypt2.key luks,noauto

Aqui noautoestá uma instrução para não tentar descriptografar o disco durante o estágio initramfs .

Acima, e412-blahblahé o UUID da partição que contém o sistema luks, no meu caso, uma partição /dev/sdb2:

# blkid | grep sdb2
/dev/sdb2: UUID="e41274d8-fd83-4632-b560-ad0ba113ae75" TYPE="crypto_LUKS" PARTUUID="5673a908-02"

Durante a inicialização do kernel linuz, o systemd lerá o /etc/crypttabarquivo e criará um arquivo de serviço de tempo de execução /run/systemd/generator/[email protected]. No entanto, esse serviço não é executado automaticamente. Você pode executá-lo manualmente

systemctl start [email protected]

mas para descriptografá-lo e montá-lo durante a inicialização, /etc/fstabpode ser necessário da seguinte maneira:

/dev/mapper/crypt2--vg-data /media/crypt-data ext4 defaults,noauto,user,x-systemd.automount,[email protected] 0 2

Aqui x-systemd.automountestá uma instrução para o systemd montar /media/crypt-data, e [email protected]é uma instrução para o systemd cuja descriptografia crypt2é necessária antes que isso seja possível.

No systemd, ele não monta o diretório até a primeira vez que é acessado, por exemplo ls /media/crypt-data, ele monta na hora certa e aparece a partir de então /proc/mounts.


Relacionado

Você pode perguntar "* por que ter um disco de dados criptografados com a chave no sistema de arquivos raiz?". Isso ocorre porque o sistema de arquivos raiz também é criptografado, portanto a chave está segura. O sistema de arquivos raiz é descriptografado durante o estágio de inicialização do initramfs , como resposta de Mikhail. Eu tenho outra entrada no /etc/crypttabarquivo para isso:

crypt1 UUID=8cda-blahbalh none luks,discard,lvm=crypt1--vg-root

e eu descrevo configurar isso e um usb de inicialização aqui

Craig Hicks
fonte