Note:

Verificación de la función de inicio seguro en instancias blindadas de OCI Compute

Introducción

El inicio seguro es una función Unified Extensible Firmware Interface (UEFI) que impide el inicio de cargadores de inicio no autorizados y de sistemas operativos. El inicio seguro valida que la firma del firmware firmado sea correcta antes del inicio para evitar que se ejecuten rootkits, bootkits y software no autorizado antes de que se cargue el sistema operativo. Los componentes de inicio que no están firmados correctamente no se pueden ejecutar, lo que impide que el sistema se inicie. Este tutorial le guiará a través de las tareas para verificar la función de inicio seguro en las instancias blindadas de Oracle Cloud Infrastructure (OCI) Compute.

Objetivos

Requisitos

Tarea 1: Verificación del estado de inicio seguro en la instancia blindada

Ejecute el siguiente comando para comprobar el estado de inicio seguro.

sudo mokutil --sb-state

Puede ver que el inicio seguro está activado.

SecureBoot enabled

Tarea 2: Configuración del entorno en la instancia blindada

  1. Cree un directorio para el módulo de núcleo.

    mkdir ~/secureboot
    cd ~/secureboot
    
  2. Cree el archivo de origen del módulo de núcleo denominado unauthorised_module.c con el siguiente contenido.

    #include <linux/module.h>
    #include <linux/kernel.h>
    
    static int __init unauthorised_module_init(void) {
        printk(KERN_INFO "Unauthorised module loaded\n");
        return 0;
    }
    
    static void __exit unauthorised_module_exit(void) {
        printk(KERN_INFO "Unauthorised module unloaded\n");
    }
    
    module_init(unauthorised_module_init);
    module_exit(unauthorised_module_exit);
    
    MODULE_LICENSE("GPL");
    MODULE_DESCRIPTION("Unauthorised module");
    MODULE_AUTHOR("Vishak");
    
  3. Cree un archivo Makefile denominado Makefile con el siguiente contenido.

    obj-m += unauthorised_module.o
    
    all:
            make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
    
    clean:
            make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
    

    Nota: Asegúrese de que las líneas de all: y clean: tengan sangría con un separador y no espacios.

Tarea 3: Creación del módulo de núcleo

Ejecute el siguiente comando para instalar el conjunto de herramientas de GCC.

make

Esto compilará el archivo unauthorised_module.c y producirá unauthorised_module.ko.

(Opcional) Maneje los problemas de compatibilidad del compilador:

Si encuentra errores de discrepancia en la versión del conjunto de herramientas de GCC, utilice los siguientes pasos para resolverlos.

  1. Instale el conjunto de herramientas de GCC.

    sudo yum install gcc-toolset-11
    
  2. Active el juego de herramientas de GCC.

    scl enable gcc-toolset-11 bash
    

Tarea 4: Carga del módulo de núcleo sin firmar

  1. Ejecute el siguiente comando para cargar el módulo de núcleo.

    sudo insmod unauthorised_module.ko
    

    Si el inicio seguro está activado y funciona correctamente, debería ver el siguiente error.

    insmod: ERROR: could not insert module test_module.ko: Key was rejected by service
    
  2. Compruebe los mensajes del núcleo para la aplicación de inicio seguro.

    (dmesg -T | grep -i "secure boot"; dmesg -T | tail -5) | less
    

    Busque mensajes que indiquen que el inicio seguro impidió la carga del módulo.

    [Wed Jul 10 14:00:41 2024] secureboot: Secure boot enabled
    [Wed Jul 10 14:00:41 2024] Kernel is locked down from EFI Secure Boot mode; see man kernel_lockdown.7
    [Wed Jul 24 14:34:51 2024] Loading of unsigned module is rejected
    

Pasos Siguientes

En este tutorial, hemos verificado correctamente la funcionalidad de inicio seguro en la instancia blindada de Oracle Linux intentando cargar un módulo de núcleo sin firmar y observando la respuesta del sistema. Esto confirma que el inicio seguro está activo y funciona según lo esperado, lo que mejora la seguridad de su entorno en la nube. La ventaja de un inicio seguro es que garantiza que solo se cargue software de confianza y firmado durante el proceso de inicio, protegiendo su instancia de código malicioso o no autorizado y, por lo tanto, manteniendo la integridad del sistema.

En el siguiente tutorial de esta serie, exploraremos funciones de seguridad adicionales y métodos de prueba para instancias de OCI.

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visita education.oracle.com/learning-explorer para convertirte en un Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.