1. Backup

1. Backup

Minha empresa está trabalhando na implementação de alguns sistemas Ubuntu em alguns de seus novos esforços de teste e fui encarregado de uma solução de criptografia para eles. Tendo sido um usuário principalmente do Windows com apenas um conhecimento prático de Ubuntu e Linux/Unix em geral, isso tem sido um pouco desafiador, mas intrigante. Eu sei que muitos serviços de criptografia funcionam com Windows, mas notei a falta deles no Ubuntu e depois de ler mais de 20 postagens aqui sobre isso, decidi que uma nova instalação com criptografia completa de disco é a única opção realista. Dito isto, alguns dos sistemas já estão em uso e não poderiam ser simplesmente apagados e instalados novamente com criptografia. Eu precisaria de TODAS as configurações e alterações, bem como dos arquivos existentes copiados/com backup. Portanto, não é tão simples quanto copiar/home. Fiquei curioso para saber qual seria o melhor curso de ação para mim, tenho uma cópia completa da partição (usei o gparted para fazer uma cópia rápida para externo) para minha máquina de teste e uma nova instalação do Ubuntu com LUKS. Estou familiarizado com os fundamentos do clonezilla, mas não acredito que isso me ajude aqui, pelo que percebi.

tldr: Preciso mover uma instalação completa do Ubuntu 16.04 para um disco criptografado. Algumas máquinas serão habilitadas para TPM e outras não. Preciso saber o melhor curso de ação para cada uma. Obrigado por ajudar um novo administrador.

BÔNUS se você puder descrever uma maneira que não requer acesso externo à rede, mas não é obrigatório. Ou seja, se precisar de um pacote, posso baixá-lo em um PC de teste para USB/CD/DVD e instalar o pacote offline.

Responder1

Descrito abaixo está um procedimento que usei com sucesso várias vezes. Funciona para Ubuntu 16.04 e 18.04. Ao contrário da solução proposta por @Arno em sua resposta, não requer edição manual das opções de inicialização do kernel. Em vez disso, ele depende da update-grubgeração de configuração adequada com base em /etc/crypttab- uma solução mais canônica (trocadilho não intencional) que também é usada pelo Ubuntu ao instalar com sua criptografia padrão baseada em LVM. (esta solução não usa LVM nem criptografada /boot)

Não sou responsável por qualquer perda de dados ou outras possíveis consequências desagradáveis ​​ao seguir este guia. Certifique-se de ter backups confiáveis ​​antes de fazer qualquer coisa.

Não estou testando este guia enquanto digito. É baseado em um (testado)postagem no blog por mim mesmoem um caso um tanto semelhante e alguns detalhes que me lembro.

Este guia pressupõe que:

  • Ubuntu já está instalado
  • O sistema inicializa com (U)EFI, não BIOS/CSM
  • /bootestá em uma partição separada 1
  • Você pode inicializar uma mídia live do Ubuntu 16.04/18.04 ou Pop!_OS 18.04 (de USB, PXE, DVD, qualquer que seja) 2

Se você /bootnão estiver em uma partição separada, extraí-la é bastante simples: crie uma partição de 200-500 MB em qualquer lugar, formate-a para ext4, copie /booto conteúdo atual, adicione /etc/fstabentrada, update-grubreinicie.


1. Backup

Você precisa fazer backup das partições atuais do sistema. A maneira mais fácil de fazer isso é usar o Clonezilla. É à prova de usuário, não é necessário manual - basta seguir as instruções.

2. Reduzindo partições

Os cabeçalhos LUKS ocupam parte do espaço em uma partição. Clonezilla/partclone não pode restaurar imagens para dispositivos menores que os de origem, então você não seria capaz de restaurar a imagem da partição não criptografada para o contêiner criptografado, porque é um pouco menor.

Em seguida, temos que reduzir um pouco a(s) partição(ões) para serem criptografadas. Reduza-os em 10 MB ou mais, apenas por segurança. A maneira mais fácil de fazer isso é usar o GParted. Está disponível na mídia ao vivo do Ubuntu.

3. Fazendo imagens de partições reduzidas

Faça isso com o Clonezilla novamente ou já se familiarize comclone parcial, que o Clonezilla está usando por padrão. Estaremos restaurando manualmente as imagens com partclone mais tarde.

Clonando para uma imagem com partclone:

sudo partclone.ext4 -c -s /dev/sda2 | pigz -0 > /mnt/backup/sda2.ext4.ptcl.gz
  1. partclone.ext4é um dos binários do partclone dedicado a trabalhar com ext4. Cada sistema de arquivos suportado obtém seu próprio binário partclone.

  2. /dev/sda2é obviamente a partição que você deseja clonar. Eu prefiro me referir às partições pelo seu partlabel, por exemplo. /dev/disk/by-partlabel/os- IMO muito mais limpo. /dev/sda2é mais reconhecível, no entanto.

  3. porcozé gzip multicore. -0diz para favorecer a velocidade em vez da compressão eficaz.

  4. /mnt/backupaqui representa algum local externo onde você deseja armazenar a imagem. Se você acabou de usar o Clonezilla antes, ele ainda pode ser montado no /home/partimag. Se você deseja montar um compartilhamento SMB: sudo mount -t cifs -o username=gronostaj //192.168.1.90/Backup /mnt/backup(pede a senha de forma interativa)

4. Amplie a(s) partição(ões) para o tamanho original

Queremos ter de volta aquele espaço extra para cabeçalhos LUKS, não é? Redimensione as partições de volta aos seus tamanhos originais.

5. Formatando para LUKS

Este é o momento em que você perde seus dados originais. Certifique-se de que seus backups estejam corretos.

Formate as partições do sistema (exceto /boot) para LUKS:

sudo cryptsetup luksFormat --type luks2 /dev/sda2

Abra o(s) contêiner(es) criado(s):

sudo cryptsetup open /dev/sda2 os

Certifique-se de que todo o contêiner criptografado pareça lixo aleatório e que seus dados antigos ainda não sejam legíveis:

sudo dd if=/dev/zero of=/dev/mapper/os bs=1M

(isso substituirá o conteúdo descriptografado do contêiner por zeros, mas o conteúdo criptografado parecerá lixo aleatório)

6. Restaurando imagens

Execute manualmente o partclone para restaurar imagens:

cat /mnt/backup/sda2.ext4.ptcl.gz | pigz -d | sudo partclone.ext4 -r -o /dev/mapper/os

Se você seguiu o caminho mais fácil e fez backups "reduzidos" com o Clonezilla, procure em seus arquivos de saída, você descobrirá facilmente quais são as fontes do partclone. A menos que você defina um tamanho de pedaço grande, eles serão fragmentados, você terá que catjuntá-los antes de canalizar para pigz.

Você também deve ajustar a geometria do sistema de arquivos para caber na partição inteira:

sudo resize2fs /dev/mapper/os

7. Habilitando suporte à criptografia

Primeiro, faça chroot no sistema operacional recém-restaurado:

mkdir /mnt/os
sudo mount /dev/mapper/os /mnt/os
cd /mnt/os
mount --bind /etc/resolv.conf etc/resolv.conf
mount --bind /dev dev
mount -t tmpfs tmpfs tmp
mount -t sysfs sys sys
mount -t proc proc proc
sudo chroot .
mount -a

Este terminal agora está funcionando na sua instância instalada do Ubuntu, não na instância ativa.

Instalarconfiguração de criptografia:

apt update
apt install cryptsetup -y

Deveria criar um arquivo /etc/crypttab. Caso contrário, não se preocupe, crie-o manualmente. Edite este arquivo e adicione entradas para partição(ões):

os /dev/sda2 none luks

Salve e saia do editor. Reconstrua o initramfs:

update-initramfs -u -k all

Atualize as entradas do GRUB:

update-grub

8. Removendo solicitações extras de senha

Se você tiver mais de uma partição criptografada, será necessário digitar a senha de cada uma delas na inicialização. No entanto, o LUKS permite adicionar arquivos-chave adicionais que podem ser usados ​​para desbloquear partições em vez de senha. Você pode armazenar esses arquivos-chave em /uma partição criptografada e usá-los para desbloquear os subsequentes.

Crie um arquivo-chave aleatório:

dd if=/dev/urandom of=/luks.key bs=4096 count=1

Adicione-o à(s) partição(ões) não-root:

cryptsetup luksAddKey /dev/sda3 /luks.key

Adicione crypttabentradas:

home /dev/sda3 /luks.key luks

Reconstrua o initramfs:

update-initramfs -u -k all

1 Por que uso separado /boot:

  • É mais fácil assim ;)
  • GRUB ainda não suporta LUKS2, portanto /bootnão deve estar na partição criptografada LUKS2
  • Se você deseja criptografar LUKS /boote criptografar LUKS2 /, será necessário inserir a senha duas vezes ouincorporar arquivo-chave no initramfs- muito incômodo, IMO, porque ...
  • Criptografado /bootpor si só não o torna menos vulnerável, porque mesmo que você /bootesteja criptografado, sua partição do sistema EFI não pode ser, então o invasor pode adulterá-la e, por exemplo. use seu kernel/initramfs malicioso personalizado em vez do seu do /boot. (para corrigir isso, você tem queconstrua um binário GRUB autocontêiner e assine-o com sua chave privadae use o UEFI Secure Boot para verificá-lo)

Defina seu próprio modelo de ameaça e decida qual nível de segurança (e contra qual) você precisa.

2 Você pode tentar a sorte com outras versões do Ubuntu ou CDs de resgate, comoGRML, mas sua milhagem pode variar. Eu experimentei esse procedimento falhando apenas porque a mídia ao vivo não correspondia ao sistema.

Responder2

Você pode criar uma imagem da partição raiz, formatá-la com LUKS, montá-la e substituí-la pela imagem. Então, seriam necessárias algumas alterações no GRUB para que ele fosse descriptografado na inicialização.Não testei os passos abaixo, eles são apenas uma pista.

Presumi que /bootestá ativado sdb1, a partição raiz está ativada sdb2e /media/hddé uma unidade externa. Estamos em um Live USB em um prompt do administrador.

Criptografe a partição raiz

dd if=/dev/sdb2 of=/media/hdd/diskimg bs=1M
cryptsetup luksFormat /dev/sdb2
cryptsetup luksOpen /dev/sdb2 enc_root
dd if=/media/hdd/diskimg of=/dev/mapper/enc_root

Monte as partições

mount /dev/sdb2 /mnt
mount /dev/sdb1 /mnt/boot

Configurar o GRUB

Observe o UUID da partição executando:

blkid /dev/sdb2

Edite /mnt/etc/default/grub, encontre a linha que diz GRUB_CMDLINE_LINUX_DEFAULT="quiet splash". Altere-o para o seguinte, substituindo device-UUIDpelo UUID anotado na etapa anterior.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash cryptdevice=UUID=device-UUID:enc_root root=/dev/mapper/enc_root"

Em seguida, atualize a configuração do GRUB:

mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
mount --bind /proc /mnt/proc
chroot /mnt
update-grub
exit

E desmonte tudo:

umount /mnt/dev
umount /mnt/sys
umount /mnt/proc
umount /mnt/boot
umount /mnt

E reinicie. Algumas armadilhas:

  • Não testei nada disso e não brinquei com partições Linux há algum tempo, então tenho quase certeza de que esqueci ou estraguei alguma coisa. Espere que as pessoas revisem e corrijam.
  • Isso pressupõe que /bootesteja em uma partição separada; não funcionaria se tudo estivesse na mesma partição.
  • Em um sistema UEFI, não se esqueça de montar também a partição EFI onde ela pertence.
  • ddirá copiartudoincluindo espaço livre, um método mais rápido seria copiar apenas os arquivos da partição.

Boa sorte!

informação relacionada