Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Verificar Recurso de Inicialização Segura em Instâncias Blindadas do OCI Compute
Introdução
A inicialização segura é um recurso da Interface de Firmware Extensível Unificada (UEFI) que impede que carregadores de inicialização e sistemas operacionais não autorizados sejam inicializados. A Inicialização segura valida se a assinatura do firmware assinado está correta antes da inicialização para evitar que rootkits, bootkits e software não autorizado sejam executados antes do sistema operacional ser carregado. Os componentes de inicialização que não estão assinados corretamente não podem ser executados, o que impede a inicialização do sistema. Este tutorial o guiará pelas tarefas para verificar o recurso de inicialização segura nas instâncias blindadas do Oracle Cloud Infrastructure (OCI) Compute.
Objetivos
-
Verifique o status da inicialização segura em uma instância blindada do OCI Compute.
-
Crie e tente carregar um módulo kernel não assinado.
-
Entender como a inicialização segura impõe a restrição em módulos não assinados.
Pré-requisitos
-
Uma conta do OCI com permissões para criar e gerenciar instâncias.
-
Conhecimento básico de comandos e módulos de kernel do Oracle Linux.
-
Instâncias blindadas do OCI Compute que executam o Oracle Linux 8. Para criar uma instância blindada e exibir as formas e imagens de plataforma suportadas para ativar instâncias blindadas, consulte Instâncias Blindadas.
Tarefa 1: Verificar Status de Inicialização Segura na Instância Blindada
Execute o comando a seguir para verificar o status da inicialização segura.
sudo mokutil --sb-state
É possível ver que a inicialização segura está ativada.
SecureBoot enabled
Tarefa 2: Configurar o Ambiente na Instância Blindada
-
Crie um diretório para o módulo kernel.
mkdir ~/secureboot cd ~/secureboot
-
Crie o arquivo de origem do módulo kernel chamado
unauthorised_module.c
com o conteúdo a seguir.#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");
-
Crie um Makefile chamado
Makefile
com o conteúdo a seguir.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
Observação: Certifique-se de que as linhas em
all:
eclean:
estejam recuadas com uma tabulação e não com espaços.
Tarefa 3: Criar o Módulo Kernel
Execute o comando a seguir para instalar o conjunto de ferramentas GCC.
make
Isso compilará o arquivo unauthorised_module.c
e produzirá unauthorised_module.ko
.
(Opcional) Tratar Problemas de Compatibilidade do Compilador:
Se você encontrar erros de incompatibilidade de versão do Conjunto de Ferramentas GCC, use as etapas a seguir para resolver.
-
Instale o Conjunto de Ferramentas do GCC.
sudo yum install gcc-toolset-11
-
Ativar o Conjunto de Ferramentas do GCC.
scl enable gcc-toolset-11 bash
Tarefa 4: Carregar o Módulo do Kernel Não Assinado
-
Execute o comando a seguir para carregar o módulo kernel.
sudo insmod unauthorised_module.ko
Se a inicialização segura estiver ativada e funcionando corretamente, o erro a seguir deverá ser exibido.
insmod: ERROR: could not insert module test_module.ko: Key was rejected by service
-
Verifique as mensagens do kernel para obter a imposição segura da inicialização.
(dmesg -T | grep -i "secure boot"; dmesg -T | tail -5) | less
Procure mensagens indicando que a inicialização segura impediu o carregamento do 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
Próximas Etapas
Neste tutorial, verificamos com sucesso a funcionalidade de inicialização segura em sua instância blindada do Oracle Linux ao tentar carregar um módulo kernel não assinado e observar a resposta do sistema. Isso confirma que a inicialização segura está ativa e funcionando conforme esperado, aprimorando a segurança do seu ambiente de nuvem. A vantagem da inicialização segura é que ela garante que somente softwares confiáveis e assinados sejam carregados durante o processo de inicialização, protegendo sua instância contra códigos maliciosos ou não autorizados e, assim, mantendo a integridade do sistema.
No próximo tutorial desta série, exploraremos recursos de segurança adicionais e métodos de teste para instâncias da OCI.
Confirmações
- Autor - Vishak Chittuvalapil (Engenheiro Sênior de Nuvem)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Verify Secure Boot Feature on OCI Compute Shielded Instances
G12346-01
August 2024