Firmar modulos de virtualbox en secure boot

9 envíos / 0 nuevos
Último envío
#1 Mié, 15/05/2019 - 19:02
Bonteruel
Imagen de Bonteruel
Desconectado/a
se unió: 02/07/17

Firmar modulos de virtualbox en secure boot

Saludos a todos.Como músico de profesión, he encontrado difícil solucionar un problema. En este enlace https://stegard.net/2016/10/virtualbox-secure-boot-ubuntu-fail/   explican como habilitar el uso de virtualbox en secure boot con una serie de pasos. Dice que es para debian y ubuntu, pero si llegué aquí es porque el script del paso 5 no se adapta bien a Debian. El comando modprobe virtualbox busca el modulo en /lib/modules/4.19.0-4-amd64, cuando este es firmado por el script en /lib/modules/4.19.0-4-amd64/updates/dkms/
Me da la impresión que el script debe ser editado, para que corresponda con Debian Testing. Si alguien puede echarme una mano...

Y el enlace que explica como habilitar secure boot y que el sistema pueda arrancar en Debian Testing/Buster, es este https://wiki.debian.org/SecureBoot/Testing

Mié, 15/05/2019 - 22:54
Panko
Imagen de Panko
Desconectado/a
moderador
se unió: 18/02/16

no creo que modprobe busque un modulo donde no está, si  observamos una parte del código del script y su resultado, comparándolo con el resultado correspondiente a otro módulo:

~$ dirname $(modinfo -n vboxdrv)
/lib/modules/4.19.0-5-amd64/updates/dkms

~$ dirname $(modinfo -n nouveau)
/lib/modules/4.19.0-5-amd64/kernel/drivers/gpu/drm/nouveau

se puede ver que la ruta es la correcta para debian siendo ésta la ruta donde se encuentra el módulo en todos los casos, y la salida será  la correcta en cualquier sistema donde se ejecute el comando.

Para poder ayudarte, necesitamos ver el error  que te sale en el momento de ejecutar dicho script.

El comando modprobe "no entiende de rutas", usa las que le dice el sistema que contienen los archivos de los módulos, y debian sabe que el módulo vboxdrv está en la ruta de dkms, por lo que es imposible que lo busque en otra ruta. Si el caso fuera como  dices, nunca podrías utilizar por tí mismo el  comando modprobe MODULO.

  No hay bar que por bien no venga....
Jue, 16/05/2019 - 13:28
Bonteruel
Imagen de Bonteruel
Desconectado/a
se unió: 02/07/17

Al ejecutar el script parece no haber problema,
# ./signing-vbox-modules

Signing /lib/modules/4.19.0-4-amd64/updates/dkms/vboxdrv.ko
Signing /lib/modules/4.19.0-4-amd64/updates/dkms/vboxnetadp.ko
Signing /lib/modules/4.19.0-4-amd64/updates/dkms/vboxnetflt.ko
Signing /lib/modules/4.19.0-4-amd64/updates/dkms/vboxpci.ko

Jue, 16/05/2019 - 13:38
caliban
Imagen de caliban
Desconectado/a
moderador
se unió: 14/01/16

Modinfo ejecutalo como root 

Ejecuta el script como root , o dale permisos a tu usuario para ejecutar modinfo( y por lo tanto podra completar el script)

 

Jue, 16/05/2019 - 14:11 (Responder a #4)
Bonteruel
Imagen de Bonteruel
Desconectado/a
se unió: 02/07/17

El script lo he ejecutado como root(creo que lo hice así desde el principio) y según el enlace, le di permisos, # chmod 700

Y sí, el problema con modinfo era que no lo estaba ejecutando como root.

Aún así, sigue dando problemas. Al ejecutar el script, da lo que posteé en el mensaje anterior,

 # ./sign-vbox-modules

El problema es al cargar los módulos. Me dice que la llave no está disponible, pero ya la creé en los pasos anteriores y la agregué al sistema.

# modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Required key not available

Jue, 16/05/2019 - 16:14
Panko
Imagen de Panko
Desconectado/a
moderador
se unió: 18/02/16

Por el error, el problema no lo tienes donde decías, si no que no encuentra la clave requerida. Alguno de los pasos anteriores a la firma de los módulos no se ha relalizado correctamente.

  No hay bar que por bien no venga....
Jue, 16/05/2019 - 16:29 (Responder a #6)
Bonteruel
Imagen de Bonteruel
Desconectado/a
se unió: 02/07/17

Hasta el paso #4 de stegard no lanza error, logro "enrollar" la llave, excepto que

# dmesg | grep "cert"

Me da esta salida:

[    1.733349] Loading compiled-in X.509 certificates
[    1.785910] Loaded X.509 cert 'Debian Secure Boot CA: 6ccece7e4c6c0d1f6149f3dd27dfcc5cbb419ea1'
[    1.785932] Loaded X.509 cert 'Debian Secure Boot Signer: 00a7468def'

supondría que una de ellas es la llave de vboxdrv, porque al cargar mok en el arranque no arroja error.

# tail $(modinfo -n vboxdrv) | grep "Module signature appended"

Coincidencia en el fichero binario (entrada estándar)

Jue, 16/05/2019 - 21:31
Panko
Imagen de Panko
Desconectado/a
moderador
se unió: 18/02/16

"Supondría" es mucho suponer. ¿Has comprobado el proceso de reinicio y de "enrolamiento" de tu clave ha sido correcto? Las claves de firmado que aparecen en el log, ¿coinciden con la tuya o son otras? (desconozco como funciona esto ahora mismo, pero imagino que son de debian y falta la tuya, y no puedo probarlo en mi sistema ya que es una instalación vieja y no puedo adaptarla para usar SecureBoot sin  tener que copiar, reparticionar, reinstalar, etc).

No puedo hacer mucho más, pero para mí que en el paso 3, que es cuando ya has creado tu clave y tienes que reiniciar el sistema para que MOK la encuentre y enrole con las que SecureBoot reconoce como válidas, algo falla, o algo se te ha escapado y todo el proceso ha funcionado excepto el enrolamiento de dicha clave.

  No hay bar que por bien no venga....
Sáb, 18/05/2019 - 15:47 (Responder a #8)
Bonteruel
Imagen de Bonteruel
Desconectado/a
se unió: 02/07/17

Ejecuto este comando,

# mokutil --import /root/module-signing/MOK.der

y

SKIP: /root/module-signing/MOK.der is already enrolled

es lo que arroja la terminal