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.