Como configurar o LVM e o LUKS para particionar autodecrypt?

18

Eu instalei recentemente o servidor Ubuntu 11.04 com a criptografia lvm completa (instalada a partir da configuração). Desejo agora usar um arquivo de chave para desbloquear automaticamente. Tentei seguir este guia link

Gerei uma chave com este comando: sudo dd if=/dev/urandom of=/boot/grub/keyfile bs=1024 count=4

eu coloquei em /boot/grub porque eu acho que não é criptografado. Quando tento adicionar a chave com este commad sudo cryptsetup luksAddKey /dev/sdX /boot/grub/keyfile ele me pede a frase secreta e quando eu digo que nada acontece, nada é impresso na tela! Eu o ignoro e continuo as outras etapas e reinicio mas nada aconteceu e ele pede a frase secreta.

Obrigado pela ajuda.

    
por isoman 01.09.2011 / 00:21

4 respostas

25

Acabei de passar por isso no meu novo servidor doméstico, demorou muito para googlar e adivinhar, mas eu tenho que trabalhar. Vou tentar reproduzir os passos aqui. Eu estou usando o Ubuntu Server 11.10, e comecei com uma instalação praticamente padrão usando o LVM criptografado, então vou relatar as mudanças que fiz a partir daí.

Configuração:

  • / dev / sda1 é minha partição não criptografada / boot
  • / dev / sda5 é minha partição lvm que contém todo o resto - root, swap e home
  • / dev / sdc1 é a partição na minha unidade flash USB onde armazenarei o arquivo de chaves

Primeiro, criei um arquivo-chave, apenas no meu diretório pessoal:

dd if=/dev/urandom of=keyfile bs=512 count=4

(você pode usar um tamanho maior de blocos ou contar para uma chave maior)

Diga cryptsetup a nova chave (é o conteúdo que é importante, não o nome do arquivo):

sudo cryptsetup luksAddKey /dev/sda5 keyfile

Depois, formatei minha unidade flash USB com ext2 e dei a ela um rótulo. Eu usei uma etiqueta, para que depois eu possa montá-la pela etiqueta e substituir a unidade flash USB, caso algo dê errado.

sudo mkfs -t ext2 /dev/sdc1
sudo e2label /dev/sdc1 KEYS

(claro, o seu dispositivo irá variar)

Agora, copie o arquivo de chaves para a unidade flash USB, de propriedade do modo raiz 400:

mkdir KEYS
sudo mount /dev/sdc1 KEYS
sudo cp keyfile KEYS
sudo chown root KEYS/keyfile
sudo chmod 400 KEYS/keyfile

Modifique o / etc / crypttab. Mina originalmente contida

sd5_crypt UUID=(...) none luks

que eu mudei para

sd5_crypt UUID=(...) /dev/disk/by-label/KEYS:/keyfile luks,keyscript=/lib/cryptsetup/scripts/passdev

Por fim, atualize o initramfs:

sudo update-initramfs -uv

Ele agora inicializa usando o arquivo de chaves na unidade flash USB. Se eu remover a unidade flash (por exemplo, quando saio de férias), ela não inicializa e meus dados são seguros.

Se alguém souber como obtê-lo para solicitar a senha, se a unidade flash USB estiver ausente, isso será útil como substituto. Espero que isso ajude, quaisquer acréscimos ou correções seriam mais que bem-vindos!

    
por Randy Orrison 28.12.2011 / 00:57
6

Melhorando a resposta de Randy Orrison , aqui está um pequeno script que eu criei, que fará o fallback do sistema pedir a senha do usuário se não consegue encontrar o arquivo de chaves.

#!/bin/sh

ask_for_password () {
    cryptkey="Unlocking the disk $cryptsource ($crypttarget)\nEnter passphrase: "
    if [ -x /bin/plymouth ] && plymouth --ping; then
        cryptkeyscript="plymouth ask-for-password --prompt"
        cryptkey=$(printf "$cryptkey")
    else
        cryptkeyscript="/lib/cryptsetup/askpass"
    fi
    $cryptkeyscript "$cryptkey"
}

device=$(echo  | cut -d: -f1)
filepath=$(echo  | cut -d: -f2)

# Ask for password if device doesn't exist
if [ ! -b $device ]; then
    ask_for_password
    exit
fi

mkdir /tmp/auto_unlocker
mount $device /tmp/auto_unlocker

# Again ask for password if device exist but file doesn't exist
if [ ! -e /tmp/auto_unlocker$filepath ]; then
    ask_for_password
else
    cat /tmp/auto_unlocker$filepath
fi

umount /tmp/auto_unlocker

Salve e substitua keyscript=/lib/cryptsetup/scripts/passdev in /etc/crypttab pelo caminho para este arquivo e execute sudo update-initramfs -uv e pronto.

    
por VarunAgw 05.08.2015 / 16:15
4

Essas instruções do howtoforge.com me colocaram em funcionamento com um volume descriptografado automaticamente.

Como Desbloquear Automaticamente as Unidades Criptografadas do LUKS com um Arquivo de Chaves

Passo 1: Crie um arquivo de chaves aleatório

sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4

Etapa 2: Tornar o arquivo de chaves somente leitura para raiz

sudo chmod 0400 /root/keyfile

Isso tornará o arquivo de chaves legível somente pelo root. Se alguém tiver acesso a este arquivo-chave, você terá um problema maior no seu computador.

Como alternativa, chown seu arquivo de chaves desejado para root: root e mova-o para a pasta / root

Passo 3: Adicione o arquivo de chaves ao LUKS

Os dispositivos habilitados para LUKS / dm_crypt podem conter até 10 arquivos-chave / senhas diferentes. Então, ao lado de ter a senha já configurada, vamos adicionar este keyfile como método de autorização adicional.

sudo cryptsetup luksAddKey /dev/sdX /root/keyfile

sdX é, claro, o seu dispositivo LUKS.

Primeiro, você será solicitado a inserir uma senha (existente) para desbloquear a unidade. Se tudo funcionar bem, você deve obter uma saída como esta:

Enter any LUKS passphrase:
key slot 0 unlocked.
Command successful.

Etapa 4: crie um mapeador

Os dispositivos LUKS precisam criar um mapeador que possa ser referenciado no fstab. Abra o / etc / crypttab

sudo nano /etc/crypttab

e adicione uma linha como esta:

sdX_crypt      /dev/sdX  /root/keyfile  luks

ou você pode usar o UUID do dispositivo:

sdX_crypt      /dev/disk/by-uuid/247ad289-dbe5-4419-9965-e3cd30f0b080  /root/keyfile  luks

sdX_crypt é o nome do mapeador que está sendo criado. Você pode usar aqui qualquer nome, por exemplo "música" ou "filmes" ou "sfdsfawe" ....

Salve e feche o arquivo emitindo ctrl-x, digite, insira. Ctrl-x fecha nano mas primeiro pede para salvar o arquivo [yes = enter] e qual o nome deve ser [same name = enter].

O que fizemos lá, na verdade, é dizer que / root / keyfile deve ser usado em vez da entrada de senha para desbloquear a unidade.

Etapa 5: monte o dispositivo no fstab

Agora, temos um dispositivo desbloqueado (bem, ainda não, mas quando o sistema está sendo inicializado) e só precisamos montá-lo agora. Abra o / etc / fstab:

sudo nano /etc/fstab

e adicione uma nova entrada como:

/dev/mapper/sdX_crypt  /media/sdX     ext3    defaults        0       2

Certifique-se de ter o nome do mapeador correto que você adicionou na etapa 4. Verifique também se o ponto / pasta de montagem existe. Após adicioná-lo, salve novamente o arquivo e feche-o (ctrl-x, enter, enter).

Passo 6: Reinicie ou remonte

É isso. Agora você pode reinicializar e os dispositivos adicionais devem ser desbloqueados e montados automaticamente. Você também pode testá-lo remontando todos os dispositivos:

sudo mount -a
    
por The New Guy 01.08.2013 / 22:59
1

@deitch Eu tive a mesma configuração como @Randy Orrison e corri para o mesmo problema que você e acontece que é um bug do systemd que tenta montar o sistema de arquivos / novamente quando encontra a entrada correspondente em / et / crypttab.

Para resolver isso, acabei de remover a entrada para sda5_crypt de / etc / crypttab assim que o comando update-initramfs -uv foi executado.

Reeboot e tudo funciona bem como pretendido.

    
por mukul kirtane 06.03.2018 / 12:01