Procedimiento Firma Módulos en Linux
Procedimiento Firma Módulos en Linux
Procedimiento Firma Módulos en Linux
A veces VMWare o VirtualBox no arrancan porque algún módulo asociado no está firmado con una
pareja de claves públicas/privadas (por lo visto es un problema que sale en las últimas versiones de
kernels). Y cuando actualizas vuelves a tener el problema.
Vemos que en este caso, fallan el Virtual machine monitor (vmmon) y el Virtual eternet (vmnet).
Es decir, se requiere una pareja de claves públicas privadas para firmar ese módulo.
Ya solo queda firmarlo, utilizando una pareja de claves que previamente se haya generado.
Para generar una pareja de claves pública/privada siguiendo el estándar X.509:
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der
-nodes -days 36500 -subj "/CN=Akrog/"
Donde se puede reemplazar MOK por el nombre que se le quiera dar al archivo que almacena tanto
la clave privada (.priv) como la clave pública (.der) y donde pone Akrog poner el nombre de la
empresa real, por ejemplo. También se pueden modificar los valores de número de bits, algoritmo
de encriptación y demás.
En el comando anterior el script de firma se encuentra en ese directorio para las versiones de
Ubuntu por encima de la 16 (en versiones anteriores hay que buscarlo en otro directorio). Y también
supone que en el directorio actual (.) se hayan dos claves: chtulu.priv (privada) y cthulu.der
(pública) generadas con el comando de más arriba.
Para firmar cualquier otro módulo, repetiríamos el proceso. Por ejemplo, para el vmnet:
modinfo vmnet
filename: /lib/modules/4.8.0-58-generic/misc/vmnet.ko
supported: external
license: GPL v2
description: VMware Virtual Networking Driver.
author: VMware, Inc.
srcversion: A861CE611E742C9FFC7007A
depends:
vermagic: 4.8.0-58-generic SMP mod_unload modversions
parm: vnet_max_qlen:Maximum queue length of the vmnet, default is 1024, maximum is
1024 (uint)
Después de eso, todos los módulos están correctos y arrancará sin problema.
Hay un problema cada vez que se cierra la sesión con Linux: Los controladores vmnet en /dev se
quedan sin permisos de lectura y escritura para usuarios que no sean el root, lo que evita que esas
interfaces de red virtuales se puedan poner en modo promiscuo. Para evitarlo, cada vez que se
reinicie la sesión, es necesario conferirle permisos de lectura y escritura a todos los usuarios:
(OJO: Si no están estos controladores, tendré que entrar en Virtual Network Editor de VMWare para
que los genere automáticamente).