Un módulo cargable del kernel es código privilegiado que puede ampliar el kernel en ejecución con un controlador, un sistema de archivos, una función de red u otro subsistema. Los módulos evitan tener que integrar todas las funciones opcionales en una sola imagen del kernel, pero cargar uno amplía la superficie de ataque de confianza del kernel.
Kernel · Lección 6
Módulos del kernel
Aprende a inspeccionar, cargar, configurar y retirar de forma segura módulos de Linux específicos de una versión del kernel.
Listar e inspeccionar módulos
Lista los módulos cargados actualmente:
$ lsmod
La salida procede del estado del kernel, como /proc/modules, e incluye el nombre del módulo, su tamaño y un contador de uso o sus dependencias. Que el contador parezca cero no demuestra por completo que retirarlo sea seguro; un controlador aún puede tener dispositivos activos a su cargo o participar en el estado de un subsistema.
Inspecciona un módulo disponible para el kernel en ejecución con:
$ modinfo MODULE_NAME
modinfo puede mostrar el nombre del archivo, los alias, los parámetros, la licencia, la descripción y la información de firma. Trata los metadatos como información descriptiva, no como prueba de que el módulo sea de confianza o compatible con la carga de trabajo.
¿Qué muestra lsmod?
Cargar con `modprobe`
Carga un módulo por su nombre:
$ sudo modprobe MODULE_NAME
modprobe consulta los índices de dependencias, los alias y la configuración del kernel en ejecución bajo /lib/modules/$(uname -r)/. Carga las dependencias necesarias y pasa los parámetros configurados. En cambio, insmod inserta directamente un único archivo de módulo indicado y no proporciona el mismo flujo de resolución de dependencias.
Antes de cargarlo, confirma la procedencia del módulo, la política de firmas, la compatibilidad con la versión del kernel, los parámetros, la asociación esperada con el hardware y el procedimiento de reversión. Secure Boot o el bloqueo del kernel pueden rechazar módulos sin firmar; forzar código incompatible puede provocar un fallo o comprometer el sistema.
¿Por qué suele preferirse modprobe frente al uso directo de insmod?
Parámetros de módulos y carga durante el arranque
La política persistente de parámetros y alias debe residir en un archivo .conf bajo /etc/modprobe.d/:
options example_module mode=careful
Esta línea afecta a la forma en que modprobe carga el módulo; por sí sola, no solicita que se cargue durante el arranque. Una lista sencilla de carga durante el arranque suele residir bajo /etc/modules-load.d/:
example_module
Los alias de hardware suelen provocar la carga automática sin una lista explícita. Para los módulos que se necesitan durante las primeras fases del arranque, actualiza el initramfs mediante el proceso documentado de la distribución después de cambiar la configuración.
¿Qué hace una línea options de /etc/modprobe.d/?
Listas negras y sus límites
Una configuración de modprobe puede contener:
blacklist example_module
La inclusión en una lista negra normalmente impide la carga automática mediante los alias del módulo. No descarga un módulo ya cargado, no lo elimina de un initramfs ni impide necesariamente que se cargue explícitamente por su nombre exacto o como dependencia. El refuerzo de la seguridad requiere una combinación específica para la amenaza de disponibilidad de módulos, aplicación de firmas, contenido del initramfs, parámetros de arranque y políticas.
¿Qué impide principalmente una línea básica blacklist de modprobe?
Retirar un módulo de forma segura
Solicita la retirada con:
$ sudo modprobe -r MODULE_NAME
Modprobe puede retirar las dependencias que hayan dejado de usarse cuando corresponda. El kernel rechaza la retirada cuando el seguimiento ordinario de referencias indica que el módulo está ocupado, pero no confíes en ello como única comprobación de seguridad. Detén los servicios, desmonta los sistemas de archivos, desconecta los dispositivos, deja inactiva la red y confirma que haya otro controlador o una vía de recuperación antes de retirar código que preste servicio a hardware activo.
Nunca fuerces la descarga de un módulo en un sistema que necesites conservar. Los errores durante la retirada o la actividad pendiente pueden bloquear el kernel o dañar datos.
¿Qué comando solicita la retirada por nombre de un módulo teniendo en cuenta las dependencias?
Utiliza Gestionar módulos del kernel en Linux para practicar con módulos que el laboratorio haya designado como seguros.
Lección completada
Has completado Módulos del kernel
Ahora puedes gestionar módulos teniendo en cuenta el riesgo que implican en el nivel del kernel.
Usa
lsmodpara consultar el estado activo ymodinfopara los metadatos disponibles.Usa
modprobepara cargar teniendo en cuenta los alias y las dependencias.Distingue los parámetros de modprobe de las solicitudes de carga durante el arranque.
Trata las listas negras como una política limitada, no como un bloqueo absoluto.
Deja inactivos todos los consumidores antes de ejecutar
modprobe -r.
Guarda tu progreso
Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.
Crear una cuenta gratuita