Criptografar sua atual partição root usando dm-crypt com luks

Atualmente há vários métodos de criptografia disponíveis dos quais, por exemplo, loop-aes. Minha escolha por cryptsetup-luks com dm-crypt se deu por ser considerado o método adequado para grande volume de dados, por não ter uma perda muito grande na performance e por ser considerado o mais seguro.

[ Hits: 47.221 ]

Por: Aline de Freitas em 11/01/2008


Criando a imagem initramfs



A initramfs é um ramfs no qual um arquivo initramfs é desempacotado antes que o kernel efetue tarefas tais como montar a partição root. Este arquivo pode ser inserido junto com a imagem do kernel, no momento da confecção do mesmo ou como um arquivo separado.

Para nossa initramfs precisamos do busybox. Busybox é um conjunto de utilitários comuns em sistemas UNIX em um único e minúsculo executável. Para usuários de Gentoo:

# mkdir /usr/local/src/build_initramfs
# ROOT="/usr/local/src/build_initramfs/" USE="-pam make-symlinks static" emerge -av busybox


Edite /etc/portage/savedconfig/sys-apps/busybox-<version> e tenha certeza de que a linha CONFIG_BUSYBOX_EXEC_PATH está como abaixo:

CONFIG_BUSYBOX_EXEC_PATH="/bin/busybox"

Senão altere e construa o busybox novamente com a USE savedconfig.

# ROOT="/usr/local/src/build_initramfs/" USE="-pam savedconfig make-symlinks static" emerge -av busybox
# cd /usr/local/src/build_initramfs
# rm -r {etc,usr,lib,lib64,var}


Usuários Debian ou outra distribuição devem baixar as fontes diretamente de http://www.busybox.net/.

# tar -xjvf busybox-<versão>
# cd busybox-<versão>
# make menuconfig


E selecione as opções conforme:
Vamos gerar um kmap (mapa do teclado):

# dumpkeys > default_keymap
# loadkeys br-abnt2
# /usr/local/src/build_initramfs/bin/busybox dumpkmap > br-abnt2-<ARCH>.bin


Ou, se você compilou as fontes do pacote oficial do busybox:

<caminho para as fontes do busybox>/busybox dumpkmap > br-abnt2-<ARCH>.bin

Como eu uso amd64 no lugar de ARCH inseri amd64 ficando br-abnt2-amd64.bin Se for i386, idem.

# loadkeys default_keymap

O arquivo init do initramfs

Quando você boota seu sistema, o kernel irá extrair o initramfs para o rootfs e verificará se um arquivo chamado "init" existe, e se encontrado o executará. O arquivo init no nosso caso será responsável por decriptar e montar a partição root quando então o resto do processo de boot será assumido pelo init da partição root.

O init constante em http://gentoo-wiki.com/...Initramfs.27s_init não funciona em versões recentes do busybox. Assim você deve usar meu arquivo atualizado e disponibilizado em:

Preparando a initramfs

Baixe também o arquivo applets:
Se você compilou o busybox com o pacote do site oficial faça o seguinte:

Crie o diretório temporário para a initramfs:

# mkdir /usr/local/src/build_initramfs

E crie os links para o busybox:

# cd /path/to/busybox-<version>
# ./applets/install.sh /usr/local/src/build_initramfs --symlinks


Agora, independente de qual busybox esteja usando faça o seguinte:

Crie os diretórios necessários:

# cd /usr/local/src/build_initramfs
# mkdir {proc,sys,new-root,etc,dev}


Copie o script init:

# cp /path/to/init .
# chmod 755 init


Crie os dispositivos necessários:

# mknod --mode=0660 /usr/local/src/build_initramfs/dev/null c 1 3
# mknod --mode=0600 /usr/local/src/build_initramfs/dev/console c 5 1


Você precisa de um executável estático executável cryptsetup. Pode baixá-lo de:
# cp cryptsetup-<versão>-<arch>-pc-linux-gnu-static /usr/local/src/build_initramfs/sbin/cryptsetup
# chmod u+x /usr/local/src/build_initramfs/sbin/cryptsetup


Você pode incluir um arquivo com uma art ascii para ser apresentado no momento do login, para um visual mais bonito. Salve em /usr/local/src/build_initramfs/etc copie também o kmap que você criou anteriormente e o applets em /usr/local/src/build_initramfs/etc.

Recompilando o kernel

Agora finalmente vamos criar a imagem initramfs diretamente nas fontes do kernel. Tenha certeza de que a fonte do seu kernel esteja em /usr/src/linux.

# rm -iv /usr/src/linux/usr/initramfs_data.cpio.gz
# cd /usr/local/src/build_initramfs
# find . | cpio --quiet -o -H newc | gzip -9 >/usr/src/linux/usr/initramfs_data.cpio.gz
# touch /usr/src/linux/usr/initramfs_data.cpio.gz


Tenha certeza que seu kernel está configurado conforme as opções apresentadas no início. Agora compile mais uma vez:

# mount /boot
# make && make modules modules_install install


Ou para Debian:

# make-kpkg --revision=crypt.1.0 kernel-image
# dpkg -i <novo-pacote-do-kernel>


Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Preparativos iniciais
   3. Preparando as partições root e swap a criptografar
   4. Criando a imagem initramfs
   5. Últimos passos
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Teste de vulnerabilidades com OpenVAS 3.0

Servidor de autenticação 802.1x com Freeradius

Como instalar o Avast antivírus no Linux

Sudo 1.8.12 - Parte II - Como sudo funciona

Controle de conteúdo: Como proteger seus usuários deles mesmos

  
Comentários
[1] Comentário enviado por EDUPERSOFT em 11/01/2008 - 22:02h

Excelente, assunto sofisticado, atual, útil e por outro lado pouco difundido. O artigo bem escrito, direto, prático. Muito bom ver um artigo escrito por uma mulher aqui no VOl, ainda mais um artigo deste nível. As barreiras vão caindo, as mulheres conquistando espaço no mundo Linux e o Linux conquistando espaço no mundo feminido.

[2] Comentário enviado por maykonhammer em 11/01/2008 - 22:16h

Parabéns pelo atigo...

[3] Comentário enviado por fred_m em 12/01/2008 - 03:05h

Muito bom Aline.
Escrevi também um artigo durante minha pós em segurança sobre o assunto, gostaria de compartilhar com você.
http://www.madeira.eng.br/wiki/index.php?page=Criptografia+de+Disco+%E2%80%93+Garantindo+a+seguran%C... (arquivo em PDF)

[4] Comentário enviado por edupersoft em 12/01/2008 - 08:48h

fred_m, seu artigo também é muito bom. Porque você não coloca aqui no VOL também?

[5] Comentário enviado por capitainkurn em 12/01/2008 - 12:26h

Chix!
Excelente o seu artigo! Tanto em conteúdo quanto em didática!
Já está em meus favoritos!

[6] Comentário enviado por kalib em 12/01/2008 - 13:53h

Parabéns pelo artigo amiga. ;]
Continue com contribuições deste nível com a comunidade e todos ficaremos gratos! :D
Interessante ver meninas se destacando por aqui... ;]

abraços e boa sorte

[7] Comentário enviado por sermart em 12/01/2008 - 15:41h

O que eu mais gostei foi sua imparcialidade quanto as distros, isto é muito importante aqui no vol.

[8] Comentário enviado por removido em 14/01/2008 - 09:52h

Arrepiou-ne até a alma este trabalho... ;-)

[9] Comentário enviado por hiroyuki em 15/01/2008 - 10:24h

Veri gud! Muito bom... estou pensando em até criptografar meu disco tb =)

[10] Comentário enviado por marceloviana em 16/04/2016 - 09:50h

Alinef, obrigado pelo artigo!

É possível remover a senha do cryptsetup da inicialização do sistema e configurar para pedir senha somente quando for necessário descriptografar a partição para alguma manutenção nos arguivos?

Obrigado.


Contribuir com comentário