Pesquisa de site

Como criptografar disco completo ao instalar o Ubuntu 22.04


As distribuições Linux fizeram um ótimo trabalho para obter proteção adicional, trazendo criptografia completa de disco e sendo líderes de mercado.

O Ubuntu também vem com vários recursos e a criptografia de disco é um deles. Ativar a criptografia completa do disco é crucial para aqueles que desejam proteger seus dados privados a qualquer custo, mesmo que seu dispositivo seja roubado, pois exige que você insira a senha a cada inicialização.

A criptografia completa do disco só pode ser habilitada durante a instalação do sistema operacional, pois a criptografia completa do disco será aplicada a cada partição da sua unidade, que também inclui a partição de inicialização e troca. E é por isso que somos obrigados a habilitá-lo desde o início da instalação.

Este tutorial passo a passo irá guiá-lo sobre como você pode habilitar a criptografia completa de disco no Ubuntu 22.04 e para esse propósito, utilizaremos o LVM (Gerenciamento de volume lógico) e LUKS (para fins de criptografia).

Pré-requisitos:

  • Uma unidade USB inicializável.
  • Conexão à Internet com largura de banda suficiente para baixar arquivos grandes.
  • Placa-mãe habilitada para UEFI.

Mas antes de prosseguirmos com o processo, vamos ter uma breve ideia sobre os prós e os contras da criptografia de disco.

Prós e contras da criptografia de disco

Cada recurso vem com seus prós e contras e isso também se aplica no caso de criptografia de disco. Portanto, é sempre uma boa ideia saber o que esperar e o que não esperar das etapas que vamos realizar.

Prós:
  • Protege seus dados confidenciais contra roubo – Sim, esse é o recurso mais interessante da criptografia de disco, pois seus dados privados estarão sempre protegidos, mesmo que seu sistema seja roubado. Este ponto é mais apropriado no caso de dispositivos móveis como Laptops que têm mais chances de serem roubados.
  • Salva seus dados da vigilância – As chances de seu sistema ser hackeado são mínimas no Linux, mas isso pode ser feito se o usuário não for inteligente o suficiente para se proteger de golpes suspeitos. Mesmo que o seu computador esteja sob ataque, o hacker não conseguirá acessar seus dados, o que é outra prova que o permite.
Contras:
  • Impacto no desempenho – Isso só pode ser aplicado a sistemas com poucos recursos, pois o computador moderno pode lidar com a criptografia sem nenhum problema, mas ainda assim você encontrará velocidades de leitura e gravação um pouco mais lentas durante o uso.

Segundo nós, a criptografia completa do disco é sempre a escolha sábia, pois oferece muitas vantagens e é fácil superar os contras com mais alguns recursos. Portanto, se você concordar com uma pequena queda no desempenho para melhor segurança, vamos iniciar o processo de criptografia.

Criptografando disco inteiro no Ubuntu 22.04

Este é um guia amigável para iniciantes e deve guiá-lo em cada etapa, enquanto usuários avançados ainda podem se beneficiar dele.

Etapa 1: Baixe o Ubuntu 22.04 ISO

Visite a página oficial de download do Ubuntu e escolha a versão Ubuntu 22.04 LTS, que iniciará automaticamente o download.

Etapa 2: Crie uma unidade USB inicializável do Ubuntu

Para atualizar a imagem Ubuntu ISO para a unidade USB, usaremos Balena Etcher, que detectará automaticamente o sistema operacional que você está usando no momento. Quando terminar de instalar o Balena Etcher, instale-o em seu sistema.

Para gravar o arquivo ISO, abra balenaEtcher e selecione a opção “Flash do arquivo” e escolha o arquivo Ubuntu 22.04 ISO baixado recentemente.

Em seguida, escolha a unidade na qual queremos fazer o flash do arquivo ISO. Escolha a opção “Selecionar destino” e ela listará todas as unidades montadas em seu sistema. Entre as opções disponíveis, escolha a unidade USB ou DVD.

Depois de atualizar com sucesso nossa unidade USB, é hora de inicializar a partir da unidade USB. Para inicializar a partir de USB, reinicie o sistema e use F10, F2, F12, F1 ou DEL enquanto o sistema inicializa. A partir daí, você deve escolher seu USB como unidade de inicialização.

Etapa 3: iniciar a instalação do Ubuntu usando unidade USB

Assim que inicializarmos via USB, podemos prosseguir para a parte de particionamento e criptografia. Isso pode sobrecarregar alguns novos usuários, pois pode parecer complexo, mas você apenas precisa seguir cada etapa e seu sistema será criptografado rapidamente.

NOTA: Alguns comandos são diferentes para usuários de SSD Nvme, portanto, leia as instruções antes de aplicar o comando, pois os separamos quando necessário.

Depois de inicializar no Ubuntu, você terá duas opções: Experimentar o Ubuntu e Instalar o Ubuntu. Como vamos criptografar partições, somos obrigados a usar um ambiente ativo. Portanto, selecione a primeira opção chamada “Experimente o Ubuntu”.

Clique em Atividades situado no canto superior esquerdo e digite pesquisar por Terminal. Pressione Enter no primeiro resultado e o Terminal será aberto para nós. Em seguida, mude para o usuário root, pois todos os comandos que usaremos exigirão privilégios administrativos.

sudo -i

Como os próximos comandos dependerão muito do BASH, vamos mudar do nosso shell padrão para o BASH com o seguinte comando:

bash

A seguir, identifique o destino da instalação, somos obrigados a listar todos os dispositivos de armazenamento montados pelo seguinte comando:

lsblk

Você pode identificar facilmente a partição alvo por tamanho e, na maioria dos casos, ela será nomeada como sda e vda. No meu caso, é sda com tamanho de 20GB.

Alocar nomes de variáveis ao dispositivo de destino (para HDD e SSDs SATA)

Esta seção só se aplica se você estiver usando HDD para SSDs SATA. Portanto, se você estiver equipado com SSD Nvme, a alocação de nomes de variáveis é explicada na etapa abaixo.

Como meu dispositivo de destino se chama sda, preciso usar o seguinte comando:

export DEV="/dev/sda"
Alocar nomes de variáveis ao dispositivo de destino (somente para SSDs Nvme)

Se você usa Nvme, o esquema de nomenclatura do seu dispositivo de destino será /dev/nvme$ {CONTROLLER}n$ {NAMESPACE}p$ {PARTITION} portanto, se houver apenas uma partição, ela provavelmente terá um nome semelhante ao comando fornecido:

export DEV="/dev/nvme0n1"

Agora, vamos configurar a variável para o mapeador de dispositivos criptografados com o seguinte comando:

export DM="${DEV##*/}"

Cada dispositivo Nvme precisará de 'p' no sufixo, então use os comandos fornecidos para adicionar o sufixo:

export DEVP="${DEV}$( if [[ "$DEV" =~ "nvme" ]]; then echo "p"; fi )"
export DM="${DM}$( if [[ "$DM" =~ "nvme" ]]; then echo "p"; fi )"

Etapa 4: crie uma nova partição GPT

Para criar uma nova tabela de partição GPT, utilizaremos o utilitário sgdidk com o seguinte comando:

sgdisk --print $DEV

Agora podemos remover com segurança todos os dados disponíveis, mas se você estiver instalando este sistema junto com partições existentes, evite esta etapa.

Para formatar os dados, utilize o seguinte comando:

sgdisk --zap-all $DEV

Etapa 5: Crie uma nova partição para instalação

Vamos alocar uma partição de 2 MB para a imagem principal do GRUB no modo BIOS, uma partição de inicialização de 768 MB e 128 MB para o sistema de arquivos EFI, e o espaço restante será alocado para o usuário onde você pode armazenar os dados desejados.

Use os comandos fornecidos um por um para particionar sua unidade:

sgdisk --new=1:0:+768M $DEV
sgdisk --new=2:0:+2M $DEV
sgdisk --new=3:0:+128M $DEV
sgdisk --new=5:0:0 $DEV
sgdisk --typecode=1:8301 --typecode=2:ef02 --typecode=3:ef00 --typecode=5:8301 $DEV

Para alterar o nome das partições, use os comandos fornecidos:

sgdisk --change-name=1:/boot --change-name=2:GRUB --change-name=3:EFI-SP --change-name=5:rootfs $DEV
sgdisk --hybrid 1:2:3 $DEV

Para listar partições criadas recentemente, use o seguinte comando:

sgdisk --print $DEV

Etapa 6: criptografando a inicialização e a partição do sistema operacional

Apenas para HDD e SSDs SATA

Vamos iniciar nosso processo de criptografia criptografando a partição de inicialização. Você é obrigado a digitar SIM em letras maiúsculas quando for solicitada sua permissão.

cryptsetup luksFormat --type=luks1 ${DEV}1

Agora, vamos criptografar a partição do sistema operacional com o seguinte comando:

cryptsetup luksFormat --type=luks1 ${DEV}5

Para instalação posterior, devemos desbloquear as partições criptografadas usando os seguintes comandos para desbloquear as partições de inicialização e sistema operacional.

cryptsetup open ${DEV}1 LUKS_BOOT
cryptsetup open ${DEV}5 ${DM}5_crypt
Apenas para SSDs Nvme

Esta etapa só é aplicável se o seu sistema estiver equipado com SSD Nvme. Use os seguintes comandos para criptografar as partições de inicialização e do sistema operacional:

cryptsetup luksFormat --type=luks1 ${DEVP}1
cryptsetup luksFormat --type=luks1 ${DEVP}5

Agora, vamos desbloquear as partições criptografadas, pois é necessário para processarmos ainda mais a instalação.

cryptsetup open ${DEVP}1 LUKS_BOOT
cryptsetup open ${DEVP}5 ${DM}5_crypt

Etapa 7: formatar partições

Esta é uma das etapas mais cruciais, pois se não for feita, o instalador desabilitará a capacidade de gravar o sistema de arquivos. Use o seguinte comando para iniciar a formatação:

mkfs.ext4 -L boot /dev/mapper/LUKS_BOOT

Formatar partição EFI-SP (somente para HDD e SSDs SATA)

Se o seu sistema estiver equipado com HDD e SSD SATA, use o seguinte comando para formatá-lo em FAT16:

mkfs.vfat -F 16 -n EFI-SP ${DEV}3
Formatar partição EFI-SP (somente para SSDs Nvme)

Portanto, se o seu sistema estiver usando SSD Nvme, você pode formatar facilmente a terceira partição usando o seguinte comando:

mkfs.vfat -F 16 -n EFI-SP ${DEVP}3

Etapa 8: Criar grupos de volumes lógicos

LVM é uma daquelas funções que mais admiro. Mesmo que você não use os recursos do LVM, ativá-lo não prejudicará o seu sistema e, no futuro, se precisar de algum recurso fornecido pelo LVM, você poderá usá-lo sem problemas.

Aqui, vamos alocar 4GB para a partição swap que usará espaço em disco quando o sistema ficar sem memória. Também estamos alocando 80% do espaço livre para o root para que o usuário possa utilizar seu espaço em disco ao máximo.

Claro, você pode alterá-lo de acordo com seus casos de uso e até mesmo modificá-lo no futuro. Use os comandos fornecidos um por um e seu sistema estará pronto para LVM rapidamente:

pvcreate /dev/mapper/${DM}5_crypt
vgcreate ubuntu--vg /dev/mapper/${DM}5_crypt
lvcreate -L 4G -n swap_1 ubuntu--vg
lvcreate -l 80%FREE -n root ubuntu--vg

Etapa 9: inicie o instalador do Ubuntu

É hora de iniciar o instalador do Ubuntu. Basta minimizar o instalador e você o encontrará na tela inicial.

Se você optar pela instalação normal ou mínima, depende de você, mas algumas opções devem ser selecionadas para proporcionar uma experiência melhor, e são a instalação de atualizações e drivers e codecs de terceiros que certamente irão melhorar sua experiência de usuário e salvar seu tempo após a instalação.

Na seção de tipo de instalação, selecione a opção “Outra coisa” que nos ajudará a gerenciar as partições que acabamos de criar manualmente.

Aqui você encontrará várias partições com o mesmo nome. Você pode identificar facilmente o original, pois o instalador mencionará o tamanho obtido. Agora vamos começar com LUKS_BOOT.

Selecione LUKS_BOOT e clique no botão alterar.

Agora, selecione o sistema de arquivos com diário Ext4 na primeira opção. Habilite a opção Formatar a partição e no ponto de montagem, selecione /boot.

Da mesma forma, selecione ubuntu–vg-root e clique no botão alterar. Aqui, selecione o sistema de arquivos com diário Ext4 na primeira opção. Habilite a opção Formatar a partição e na última escolha a opção “/ ”.

Agora selecione ubuntu–vg-swap_1 e clique no botão de opções. Selecione a opção de área de troca e pronto.

Finalize as alterações e escolha sua localização atual.

Após criar o usuário, não clique no botão instalar agora, pois aplicaremos alguns comandos logo após criar um novo usuário. Crie o usuário com uma senha forte.

Etapa 10: Habilite a criptografia no GRUB

Logo após criar um usuário, abra seu terminal e use os comandos fornecidos, pois vamos habilitar a criptografia no GRUB antes do início da instalação:

while [ ! -d /target/etc/default/grub.d ]; do sleep 1; done; echo "GRUB_ENABLE_CRYPTODISK=y" > /target/etc/default/grub.d/local.cfg

Assim que a instalação estiver concluída, clique em continuar testando, pois faremos algumas alterações que ainda exigem o uso de uma unidade inicializável.

Etapa 11: configuração pós-instalação do Ubuntu

Nesta seção, montaremos unidades, instalaremos os pacotes necessários e faremos algumas alterações necessárias para que a criptografia funcione. Então abra seu terminal e siga os passos indicados:

Criar ambiente Chroot

Chroot é usado para acessar as partições nas quais acabamos de instalar o Ubuntu. Use os comandos fornecidos, um dos quais envolve a montagem da unidade e a criação do ambiente chroot.

mount /dev/mapper/ubuntu----vg-root /target
for n in proc sys dev etc/resolv.conf; do mount --rbind /$n /target/$n; done 
chroot /target
mount -a

Instale o pacote Cryptsetup-initramfs

O pacote Cryptsetup será responsável por desbloquear arquivos criptografados no momento da inicialização e podemos instalá-lo facilmente com o comando fornecido:

apt install -y cryptsetup-initramfs
Adicione arquivos principais e scripts de suporte

O arquivo de chave será usado para verificar a senha para descriptografia e será salvo em /boot/, que também é uma partição criptografada. Use o comando fornecido para prosseguir:

echo "KEYFILE_PATTERN=/etc/luks/*.keyfile" >> /etc/cryptsetup-initramfs/conf-hook 
echo "UMASK=0077" >> /etc/initramfs-tools/initramfs.conf 
Crie um arquivo de chave e adicione-o ao LUKS

Vamos criar um arquivo de chave de 512 bytes, torná-lo seguro e também adicionar volumes criptografados. Você pode conseguir isso utilizando os comandos fornecidos:

mkdir /etc/luks
dd if=/dev/urandom of=/etc/luks/boot_os.keyfile bs=512 count=1
chmod u=rx,go-rwx /etc/luks
chmod u=r,go-rwx /etc/luks/boot_os.keyfile
Adicionando chaves a boot_os.file e Crypttab (somente para HDD e SSDs SATA)

Esta deveria ser uma das últimas etapas, pois estamos muito perto de criptografar nosso sistema com sucesso. Use o seguinte comando para adicionar chaves no arquivo boot_os.key.

cryptsetup luksAddKey ${DEV}1 /etc/luks/boot_os.keyfile
cryptsetup luksAddKey ${DEV}5 /etc/luks/boot_os.keyfile 

Para adicionar chaves ao crypttab, use o seguinte comando:

echo "LUKS_BOOT UUID=$(blkid -s UUID -o value ${DEV}1) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
echo "${DM}5_crypt UUID=$(blkid -s UUID -o value ${DEV}5) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
Adicionando chaves a boot_os.file e Crypttab (somente para SSDs Nvme)

Se estiver usando SSD Nvme, você pode utilizar o seguinte comando para adicionar chaves em boot_os.file:

cryptsetup luksAddKey ${DEVP}1 /etc/luks/boot_os.keyfile
cryptsetup luksAddKey ${DEVP}5 /etc/luks/boot_os.keyfile 

Da mesma forma, para adicionar chaves no crypttab, use o seguinte comando:

echo "LUKS_BOOT UUID=$(blkid -s UUID -o value ${DEVP}1) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
echo "${DM}5_crypt UUID=$(blkid -s UUID -o value ${DEVP}5) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
Atualizar arquivos Initialramfs

Agora vamos atualizar os arquivos initialramfs, pois ele adicionará scripts de desbloqueio e arquivo-chave pelo seguinte comando:

update-initramfs -u -k all

Agora, reinicie o sistema e você será direcionado ao prompt da senha do GRUB para inicializar o sistema.

A principal intenção por trás deste guia foi criar um procedimento fácil de seguir, onde até mesmo iniciantes possam proteger seu sistema ativando a criptografia completa de disco no Ubuntu.