Como posso proteger o initrd e o grub.cfg usando boot seguro?

6

Estou usando a abordagem ubuntu padrão com shim e grub2, combinada com a minha própria chave de plataforma (shin auto-assinado com sbsign) e uma partição raiz criptografada, para garantir a inicialização da instalação do meu Ubuntu. Mas isso verifica apenas o grubx64.efi e o kernel, mas não protege os arquivos initrd.img e grub.cfg na partição de boot não criptografada contra modificações maliciosas.

Então, como posso verificar o initrd e a configuração do grub, possivelmente usando um hash sha256, antes de usá-los para inicializar? Essa verificação pode acontecer no shim, no grub ou em alguma outra ferramenta que eu possa usar além ou em vez de shim e / ou grub.

O objetivo desta questão é impedir a execução do kernel com um ambiente modificado (linha de comando do kernel e initrd) para evitar vazamento da senha de criptografia da partição raiz para qualquer lugar.

Não encontrou nenhum método para verificar a configuração de inicialização apesar de vários dias de leitura de tutoriais / blogs sobre inicialização segura, incluindo o Ubuntu e PreLoader.efi da Linux Foundation, todos explicando como a verificação de executáveis incluindo módulos do kernel, mas nenhum deles menciona o grub.cfg e (scripts de shell e arquivos de configuração dentro do initrd), então parece que eu sou o primeiro a pedir uma verificação de não-binários no processo de inicialização. As melhores fontes que encontrei são as de Rod Smith .

O que eu ainda não tentei é modificar o código fonte do shim ou do grub, criando um fork ou contribuindo diretamente para eles. Seria esse o único caminho a percorrer?

    
por Juergen 07.02.2016 / 10:00

2 respostas

2

Eu encontrei um ótimo artigo que descreve essa configuração: link

tl; dr: Assina o grub config e o initrd com o GPG, gera o binário do grub que reforçará as verificações e assinará com chaves secureboot.

Pacote para o Ubuntu que implementa uma ideia semelhante: link

    
por 05.05.2017 / 14:03
0

O Grub parece suportar a verificação de assinaturas usando assinaturas desanexadas. Eu suspeito que essa seja sua resposta.

    
por 29.04.2016 / 19:31