AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 751517
Accepted
TSG
TSG
Asked: 2023-07-15 04:09:36 +0800 CST2023-07-15 04:09:36 +0800 CST 2023-07-15 04:09:36 +0800 CST

Insmod faz com que a chave seja rejeitada pelo serviço

  • 772

Estou executando o AlmaLinux 9 (clone do RedHat 9) e compilei um novo módulo do kernel. Estou executando em uma VM com UEFI e inicialização segura habilitada. Quando insiro o módulo recebo o seguinte erro:

insmod: ERROR: could not insert module npreal2.mod: Key was rejected by service

De outras postagens, concluí que estava relacionado ao UEFI/inicialização segura. Então, desativei a inicialização segura e, em seguida, os relatórios do insmod:

insmod: ERROR: could not insert module npreal2.mod: Invalid module format

Tentei recompilar com o modo seguro desativado e o insmod funcionou, mas tive que deixar a inicialização segura desativada. Como posso fazer este módulo funcionar com inicialização segura?

Há uma postagem no github sobre como criar suas próprias chaves MOK, mas isso parece ser específico do DKMS.

kernel-modules
  • 1 1 respostas
  • 30 Views

1 respostas

  • Voted
  1. Best Answer
    telcoM
    2023-07-16T03:34:33+08:002023-07-16T03:34:33+08:00

    Agora (depois de uma discussão nos comentários) que você tem um npreal2.komódulo de kernel funcional, mas não assinado, podemos tentar abordar o Secure Boot.

    Primeiro, você precisa criar um par de chaves X.509 (uma chave pública e uma chave secreta correspondente) para usar como um MOK. Para fazer isso, primeiro crie um arquivo de configuração OpenSSL mínimo, como por exemplo ~/x509.genkey:

    [ req ]
    default_bits = 4096
    distinguished_name = req_distinguished_name
    prompt = no
    x509_extensions = myexts
    
    [ req_distinguished_name ]
    O = ModuleType
    CN = ModuleType module signing key
    
    [ myexts ]
    basicConstraints=critical,CA:FALSE
    keyUsage=digitalSignature
    subjectKeyIdentifier=hash
    authorityKeyIdentifier=keyid
    

    A CN =linha define o nome com o qual seu MOK é identificável principalmente, então digite o que quiser lá. A O =linha seria o local para o nome da sua organização, mas você pode omitir a linha inteira se desejar.

    Agora você pode gerar seu par de chaves:

    openssl req -x509 -new -nodes -utf8 -sha256 -days 36500 \
        -batch -config x509.genkey -outform DER \
        -out signing_key.x509 \
        -keyout signing_key.priv
    

    Este comando cria um par de chaves nominalmente válido por 10 anos a partir do momento da criação; se você quiser mudar isso, mude o -daysparâmetro.

    Agora você deve ter dois arquivos:

    • signing_key.x509é a chave pública, que você registrará como seu MOK (Chave do Proprietário da Máquina)
    • signing_key.privé a chave privada correspondente, que você precisará para assinar quaisquer módulos do kernel que você mesmo construir. Esta chave privada não é protegida por senha, portanto, mantenha-a segura.

    Para se inscrever signing_key.x509como MOK, certifique-se de que o mokutilpacote foi instalado e execute:

    sudo mokutil --import signing_key.x509
    

    Este comando solicitará que você defina uma senha única para o processo de registro de chave. Depois de fazer isso, a primeira fase do registro do MOK é concluída. Para concluir o registro do MOK, você precisará reiniciar.

    Quando você reiniciar, o shimx64.efidetectará que você iniciou um processo de inscrição no MOK e exibirá uma tela azul com um menu simples baseado em texto, com opções para Enroll MOKou Continue boot.

    Selecione Enroll MOKpara iniciar a segunda fase do registro do MOK. Em seguida, você terá a chance de visualizar o hash e a CN =linha da chave que está prestes a registrar, depois uma confirmação de sim/não e, finalmente, a senha única definida na primeira fase de inscrição acima. Se a inscrição for bem-sucedida, essa senha nunca mais será necessária. Selecione "Reiniciar" no menu de tela azul para voltar ao Linux.

    (A segunda fase do processo de inscrição ocorre durante a reinicialização para garantir que apenas alguém com acesso físico equivalente ao sistema consiga concluir o processo, e a senha garante que a chave que você está registrando seja a que você selecionou no primeira fase, e não uma inserida por algum malware.)

    Para verificar se o registro da chave foi bem-sucedido, você pode executar sudo keyctl list %:.platformcomo root: ele deve exibir todas as chaves de inicialização segura que o sistema reconhece, incluindo seu MOK, a chave de distribuição incorporada no shimx64.efi, e as chaves do fabricante e da Microsoft do firmware.

    Como alternativa, você pode executar sudo mokutil -luma lista mais detalhada da chave da distribuição e seu MOK.

    Agora você está pronto para assinar seu módulo do kernel:

    /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 \
        ~/signing_key.priv \
        ~/signing_key.x509 \
        /some/where/npreal2.ko   # adjust the paths as needed
    

    Para confirmar a assinatura, execute sudo modinfo ./npreal2.ko: deve incluir uma signer:linha com o CN =nome do seu MOK e um signature:bloco longo com números hexadecimais.

    E claro, agora você deve ser capaz de carregar o módulo com sudo insmod npreal2.koo Secure Boot ativado!

    Fonte: https://www.redhat.com/sysadmin/secure-boot-systemtap

    • 2

relate perguntas

  • Por que sys_call_table é previsível?

  • Por que o Udev está carregando dois módulos de kernel para um único dispositivo USB?

  • Como resolver "sem suporte de rastreamento de conexão no kernel" em Vuurmuur?

  • Não é possível definir os parâmetros do módulo do kernel

  • Broadcom sem fio não detectado no Fedora 27

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve