Como posso proteger o initrd e o grub.cfg usando a inicialização segura?

8

Estou usando a abordagem padrão do ubuntu com shim e grub2, combinada com minha própria chave de plataforma (calibração com assinatura própria com sbsign) e uma partição raiz criptografada, para garantir a inicialização segura da instalação do 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 inicialização não criptografada contra modificações maliciosas.

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

O objetivo desta pergunta é impedir a execução do kernel com um ambiente modificado (linha de comando do kernel e initrd) para impedir o 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 lendo tutoriais / blogs da Web sobre inicialização segura, incluindo o Ubuntu e o PreLoader.efi da Linux Foundation, todos explicando como funciona a verificação de executáveis, incluindo módulos do kernel, mas nenhum que 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 solicitar a verificação de não binários no processo de inicialização. As melhores fontes que eu já encontrei são as de Rod Smith .

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

Juergen
fonte
Sua postagem cruzada foi de ontem, um pouco mais de paciência seria apropriada e a postagem cruzada certamente não é (BTW, se você estiver acima da descida, poderá ver os motivos dos votos negativos: nenhum esforço de pesquisa / claro / não é útil)
Anthon
@Anthon, onde você acha que é o lugar apropriado para fazer esta pergunta? Não sei, então pensei que aqui é um lugar melhor do que no SuperUser. E você acha que devo excluir a pergunta anterior e esta antes de perguntar no local apropriado para evitar que o voto seja negativo devido à postagem cruzada novamente?
Juergen
A postagem cruzada nunca é boa, como você saberia se ler a ajuda. Neste site, é um motivo de fechamento (como você notou), é necessária alguma paciência, além de ser um site de perguntas e respostas, não um site de ajuda pessoal ou instantâneo. Alguns dias esperando, especialmente durante o fim de semana, seriam apropriados. E mais algumas descrições do que você tentou e do que não deu certo também seriam apropriadas. Se você deseja que isso seja reaberto aqui, exclua o Q no superusuário, indique claramente aqui (editando sua postagem) e, em seguida, ele estará na fila a ser reaberta.
Anthon
@Anthon, obrigado por seus comentários. Excluiu a pergunta no SuperUser e explicou a pergunta aqui com mais detalhes. Posso fazer melhor?
Juergen
Parece melhor, voto para reabrir, mas esteja ciente de que é preciso mais do que apenas o meu voto.
Anthon

Respostas:

0

O Grub parece oferecer suporte à verificação de assinaturas usando assinaturas desanexadas. Eu suspeito que essa é sua resposta.

Justin King-Lacroix
fonte
Isso não fornece uma resposta para a pergunta. Para criticar ou solicitar esclarecimentos a um autor, deixe um comentário abaixo da postagem. - Do comentário
Archemar 29/04
Na verdade, sim. A pergunta original era: "Então, como posso verificar a configuração do initrd e do grub, possivelmente usando um hash sha256, antes de usá-los para inicializar? Essa verificação pode ocorrer no shim, no grub ou em alguma outra ferramenta que eu possa usar além de ou em vez de calço e / ou larva ". A resposta é: "O Grub parece oferecer suporte à verificação de assinaturas usando assinaturas desanexadas". (Implicitamente: "... para que você possa assinar o initrd, gerar uma assinatura individual, e têm Grub verificá-la.")
Justin King-Lacroix
@Justin King-Lacroix, obrigado por sua resposta, mas não consigo encontrar assinaturas desanexadas em gnu.org/software/grub/manual/grub.html - isso é um recurso de um garfo grub não-oficial? O "manual do grub de assinaturas desanexadas" do Google não retornou nada específico. Você poderia me indicar esse recurso, por favor?
Juergen
Infelizmente, não tenho uma referência manual; Eu achei isso olhando através da fonte. Procure a operação "verificar".
Justin King-Lacroix