Estoy usando el enfoque predeterminado de ubuntu con shim y grub2, combinado con mi propia clave de plataforma (shim de firma automática con sbsign) y una partición raíz encriptada, para asegurar el arranque de mi instalación de ubuntu. Pero esto solo verifica el grubx64.efi y el kernel, pero no protege los archivos initrd.img y grub.cfg en la partición de arranque no cifrada de modificaciones maliciosas.
Entonces, ¿cómo puedo verificar el initrd y la configuración de grub, posiblemente usando un hash sha256, antes de usarlos para arrancar? Esa verificación podría ocurrir en shim, en grub o en alguna otra herramienta que podría usar además de o en lugar de shim y / o grub.
El propósito de esta pregunta es evitar que el núcleo se ejecute con un entorno modificado (línea de comando del núcleo e initrd) para evitar que se filtre la contraseña de cifrado de la partición raíz en cualquier lugar.
No encontré ningún método para verificar la configuración de arranque a pesar de varios días de leer tutoriales / blogs web sobre arranque seguro, incluidos Ubuntu y PreLoader.efi de Linux Foundation, todo lo cual explica cómo funciona la verificación de ejecutables, incluidos los módulos del núcleo, pero ninguno de que menciona grub.cfg y (scripts de shell y archivos de configuración dentro del) initrd, por lo que parece que soy el primero en solicitar la verificación de no binarios en el proceso de arranque. Las mejores fuentes que he encontrado son las de Rod Smith .
Lo que aún no intenté es modificar el código fuente de shim o grub, crear un tenedor o contribuir directamente a ellos. ¿Sería ese el único camino a seguir?
fuente
Respuestas:
Encontré un gran artículo que describe dicha configuración: https://ruderich.org/simon/notes/secure-boot-with-grub-and-signed-linux-and-initrd
tl; dr: Firme grub config e initrd con GPG, genere grub binary que impondrá controles y lo firmará con claves de arranque seguro.
Paquete para ubuntu que implementa una idea similar: https://github.com/JohnstonJ/ubuntu-secure-boot
fuente
Grub parece admitir la verificación de firmas utilizando firmas separadas. Sospecho que esa es tu respuesta.
fuente