Pular para o conteúdo

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.
Aline de Freitas alinef
Hits: 51.891 Categoria: Linux Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar

Parte 4: 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>


   1. Introdução
   2. Preparativos iniciais
   3. Preparando as partições root e swap a criptografar
   4. Criando a imagem initramfs
   5. Últimos passos
Nenhum artigo encontrado.

Travando qualquer máquina Linux

Protegendo o ESB: Conceitos e técnicas de segurança para empresas de serviços web críticos

Vírus em Linux?

Instalando e configurando Nagios no Linux Fedora 8

CouchDB - For Fun and Profit

#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.
#11 Comentário enviado por fabrasileiro em 09/05/2023 - 23:31h

Muuto bom.

Contribuir com comentário

Entre na sua conta para comentar.