Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
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
-
Verifique el estado del inicio seguro en una instancia blindada de OCI Compute.
-
Crear e intentar cargar un módulo de núcleo sin firmar.
-
Descubra cómo el inicio seguro aplica la restricción a los módulos sin firmar.
Requisitos
-
Una cuenta de OCI con permisos para crear y gestionar instancias.
-
Conocimientos básicos de los comandos de Oracle Linux y los módulos de núcleo.
-
Instancias blindadas de OCI Compute que ejecutan Oracle Linux 8. Para crear una instancia blindada y ver las unidades e imágenes de plataforma soportadas para activar las instancias blindadas, consulte Instancias blindadas.
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
-
Cree un directorio para el módulo de núcleo.
mkdir ~/secureboot cd ~/secureboot
-
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");
-
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:
yclean:
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.
-
Instale el conjunto de herramientas de GCC.
sudo yum install gcc-toolset-11
-
Active el juego de herramientas de GCC.
scl enable gcc-toolset-11 bash
Tarea 4: Carga del módulo de núcleo sin firmar
-
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
-
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
- Autor: Vishak Chittuvalapil (ingeniero sénior de nube)
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.
Verify Secure Boot Feature on OCI Compute Shielded Instances
G12340-01
August 2024