Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Vérification de la fonctionnalité d'initialisation sécurisée sur les instances protégées par OCI Compute
Introduction
L'initialisation sécurisée est une fonctionnalité UEFI (Unified Extensible Firmware Interface) qui empêche l'initialisation des systèmes d'exploitation et des chargeurs d'initialisation non autorisés. Avant l'initialisation, l'initialisation sécurisée vérifie que la signature du microprogramme signé est correcte afin d'empêcher tout rootkit, kit d'initialisation ou logiciel non autorisé de s'exécuter avant le chargement du système d'exploitation. Les composants d'initialisation qui ne sont pas correctement signés ne sont pas autorisés à s'exécuter, ce qui empêche l'initialisation du système. Ce tutoriel vous explique comment vérifier la fonctionnalité d'initialisation sécurisée sur les instances protégées par Oracle Cloud Infrastructure (OCI) Compute.
Objectifs
-
Vérifiez le statut de l'initialisation sécurisée sur une instance protégée OCI Compute.
-
Créez et tentez de charger un module de noyau non signé.
-
Comprenez comment l'initialisation sécurisée applique la restriction aux modules non signés.
Prérequis
-
Compte OCI avec des droits d'accès permettant de créer et de gérer des instances.
-
Connaissance de base des commandes et des modules de noyau Oracle Linux.
-
Instances protégées par OCI Compute exécutant Oracle Linux 8. Afin de créer une instance protégée et d'afficher les formes et les images de plate-forme prises en charge pour l'activation des instances protégées, reportez-vous à Instances protégées.
Tâche 1 : vérifier le statut de l'initialisation sécurisée dans l'instance protégée
Exécutez la commande suivante pour vérifier l'état d'initialisation sécurisé.
sudo mokutil --sb-state
Vous pouvez voir que l'initialisation sécurisée est activée.
SecureBoot enabled
Tâche 2 : configuration de l'environnement dans l'instance protégée
-
Créez un répertoire pour le module de noyau.
mkdir ~/secureboot cd ~/secureboot
-
Créez le fichier source du module de noyau nommé
unauthorised_module.c
avec le contenu suivant.#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");
-
Créez un fichier Makefile nommé
Makefile
avec le contenu suivant.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
Remarque : assurez-vous que les lignes sous
all:
etclean:
sont en retrait avec un onglet et non des espaces.
Tâche 3 : création du module de noyau
Exécutez la commande suivante pour installer l'ensemble d'outils GCC.
make
Cette opération compile le fichier unauthorised_module.c
et génère unauthorised_module.ko
.
(Facultatif) Gérer les problèmes de compatibilité du compilateur :
Si vous rencontrez des erreurs de non-concordance de version du jeu d'outils GCC, procédez comme suit pour résoudre le problème.
-
Installez l'ensemble d'outils GCC.
sudo yum install gcc-toolset-11
-
Activez l'ensemble d'outils GCC.
scl enable gcc-toolset-11 bash
Tâche 4 : chargement du module de noyau non signé
-
Exécutez la commande suivante pour charger le module de noyau.
sudo insmod unauthorised_module.ko
Si l'initialisation sécurisée est activée et fonctionne correctement, vous devriez voir l'erreur suivante.
insmod: ERROR: could not insert module test_module.ko: Key was rejected by service
-
Vérifiez les messages du noyau pour l'application sécurisée de l'initialisation.
(dmesg -T | grep -i "secure boot"; dmesg -T | tail -5) | less
Recherchez les messages indiquant que l'initialisation sécurisée a empêché le chargement du module.
[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
Etapes suivantes
Dans ce tutoriel, nous avons vérifié avec succès les fonctionnalités de l'initialisation sécurisée sur votre instance protégée Oracle Linux en essayant de charger un module de noyau non signé et en observant la réponse du système. Cela confirme que l'initialisation sécurisée est active et fonctionne comme prévu, améliorant ainsi la sécurité de votre environnement cloud. L'avantage de l'initialisation sécurisée est qu'elle garantit que seuls les logiciels sécurisés et signés sont chargés pendant le processus d'initialisation, protégeant ainsi votre instance du code malveillant ou non autorisé et préservant ainsi l'intégrité de votre système.
Dans le prochain tutoriel de cette série, nous explorerons d'autres fonctionnalités de sécurité et méthodes de test pour les instances OCI.
Remerciements
- Auteur - Vishak Chittuvalapil (ingénieur cloud senior)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Verify Secure Boot Feature on OCI Compute Shielded Instances
G12342-01
August 2024