Gentoo com partição raiz encriptada

A idéia desse post é apenas mostrar o caminho para instalar um Gentoo tendo a partição raiz (e todas as outras) encriptadas. Não é um texto muito detalhado, é para quem já tem costume com a instalação de gentoo. Mas mesmo que você não tenha familiaridade com esta distribuição, pode ler mesmo assim, apenas por curiosidade. =)

Um ponto negativo da abordagem que vou apresentar é que fica praticamente impossível recuperar seu laptop com programas como preyproject. A idéia nesse caso é proteger seus dados, não o aparelho. Esse último, bem ou mal, pode-se juntar dinheiro (mesmo que por muito tempo) e comprar outro, mas seus dados pessoais em mãos erradas, pode ser fatal. Lembrem-se sempre de manter seus backups atualizados. Bem, chega de papo e vamos ao que interessa.

Preparando as partições

Antes de começar a instalação, precisamos particionar nosso disco de forma correta. Repare que o que teremos encriptado será somente a partição raiz onde o S.O estará inslatado, tudo bem que isso corresponderá a quase 100% do disco, mas precisamos dexar claro que uma pequena parte do disco permanecerá sem encriptação, e você entenderá porque mais a frente.

Essas são as partções originais do notebook onde fiz essa instalação:

Particoes originais

Preciasmos, basciamente, criar duas partições:

  • Uma onde guardaremos as imagens dos kernels que vamos usar (/boot, 256MB)
  • Outra contendo o restande do disco, onde o S.O estará instalado

O motivo pelo qual temos que ter essa partição não encriptada é que nosso boot loader (grub) não é capaz de ler uma partição que esteja encriptada, se isso fosse possível poderíamos encriptar 100% do disco, inclusive a partição onde estão os kernels. Feito isso, nosso disco agora tem apenas duas partições:

Novas particoes criadas

Encriptando a partição principal

Agora o que precisamos fazer é efetivamente encriptar a partição onde vamos instalar o gentoo, para isso usaremos o cryptsetup:

Formatando com cryptsetup luksformat

Agora temos que fazer com que essa partição encriptada fique disponível como um block device.

Destravando crypt root

A partir desse momento já poderíamos formatar esse block device (mke2fs -j), mas como vamos usar LVM2 em cima da encriptação, precisamos fazer mais algumas coisas antes de começar a instalação. O comando acima cria um block device em /dev/mapper/crypt-root.

Configurando o LVM2

Agora que já temos toda a partição encripada é hora de configurar o LVM2. Vamos criar apenas um volume físico (physical volume) que ocupará toda a partição que acabamos de encriptar. Depois criaremos um Volume Group e dois Logical Volumes.

Criando volumes lvm2

Agora é hora de formatar os volumes que acabamos de criar:

Formatando volume lógico que será a partição raiz do S.O

Formatando o volume lógico que será o /home

Agora que temos dois volumes prontos, podemos começar a instalar o gentoo. Basta montar o block device /dev/vg01/root em /mnt/gentoo (como recomenda o gentoo handbook) e podemos continuar a partir do passo 5.

Configurando o kernel

No momento de configurar o kernel (handbook, passo 7) que usaremos, precisamos adicionar opções especiais para que tudo dê certo. Basicamente essas opções são:

  • Suporte a Device mapper, com suporte a encripatação
  • Suporte ao algoritmo de encriptação usado

Kernel option: device mapper

Kernel Option: Algoritmo de encriptação

Kernel Option: Sha 256 support

Essa última opção só foi necessária pois usamos –cipher twofish-cbc-essiv:sha256 no momento de encriptar a partição /dev/sda2.

Para podermos compilar esse kernel, o melhor é usarmos o utilitário genkernel. Basta instalar usando emerge normal. Antes de efetivamente compilar esse kernel, precisamos instalar dois pacotes. Atenção para as USE flags específicas de cada um deles:

  • sys-fs/lvm2 USE: +static
  • sys-fs/cryptsetup USE: +static-libs

Isso é necessário pois o ramdisk que será criado daqui a pouco precisará deles. O genkernel é uma mão na roda e é quem fará o trabalho duro de adicionar suporte para que seja possível bootar esse sistema com do disco encriptado. Como o genkernel já salva automaticamente os arquivos em /boot, temos que montar nossa partição (aquela que não é encriptada) no lugar certo:

# mount /dev/sda1 /boot

Agora poderemos usar o genkernel para preparar tudo:

# genkernel --menuconfig --luks --lvm all

Isso vai fazer com que o menu de configuração do kernel seja chamado (onde teremos que adicionar as opções citadas acima) e depois que salvarmos a configuração já começará a compilar nosso novo kernel. No final da compilação, teremos em /boot dois arquivos: O kernel e o initramfs criados pelo genkernel.

Configurando o boot loader

Nesse momento, o que falta é configurar o boot loader, nesse caso o Grub.

# emerge grub
# grub
grub> root (hd0,0)
gurb> setup (hd0)
quit

Repare que estamos instalando o grub no MBR, isso é válido pois nesse caso temos apenas um S.O instalado. Se estivéssemos fazendo dual-boot e já tivéssemos um outro S.O rodando, teríamos que instalar o grub na partição sda1, nesse caso em (hd0,0).

Como estamos preparando um sistema e um kernel especiais, precisamos passar opções especiais para o Grub, só assim ele poderá carregar nosso novo S.O. As linhas do /boot/grub/menu.lst ficam assim:

title Gentoo Linux 2.6.38-gentoo-r6
root (hd0,0)
kernel /boot/kernel-genkernel-x86_64-2.6.38-gentoo-r6 dolvm root=/dev/ram0 crypt_root=/dev/sda2 real_root=/dev/vg01/root
initrd /boot/initramfs-genkernel-x86_64-2.6.38-gentoo-r6

Ajustando o /etc/fstab

O último passo é ajustar o arquivo /etc/fstab para que as partições corretas sejam montadas. Temos que adicionar o /boot e o /, ficando assim:

Como fica o /etc/fstab

Nesse arquivo temos o /home, que no meu caso foi necessário pois sempre deixo a home separada. Não esqueça de retirar a linha do SWAP, pois não criamos uma.

Agora é dar reboot e curtir o novo sistema com os dados totalmente encriptados. Como estamos usando LVM2, qualquer partição adicional que você criar no futuro, já estará encriptada.

Considerações finais

É bem verdade que pelo fato de ter seu disco encriptado você terá uma perda de performance. Eu sei disso. A questão é que já uso essa configuração há 3 anos (usei desde o primeiro notebook) e como nunca tive um notebook sem ter o disco encriptado acabo não sabendo qual é a real perda de performance.

Usei o primeiro notebook durante todo o tempo, sem achar que ele estava lento por qualquer motivo. O notebook novo já é naturalmente mais rápido (Processador melhor, disco melhor, etc) então mesmo tendo novamente o disco encriptado, já percebi uma melhoria considerável na performance do novo aparelho. Então, diante disso, tá tudo bem! =)

  1. #1 por Alan Teixeira em 04/11/2012 - 13:17

    Interessante!
    Nunca usei discos encriptados dessa maneira.
    Já fiz um teste com o TrueCrypt.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: