Ir para o conteúdoIr para navegação de página: página anterior [tecla de acesso p]/próxima página [tecla de acesso n]
documentation.suse.com / Documentação do SUSE Linux Enterprise Desktop / Guia de Administração / Tarefas comuns / Kernel Live Patching com KLP
Aplica-se a SUSE Linux Enterprise Desktop 15 SP6

11 Kernel Live Patching com KLP

Este documento descreve os princípios básicos da tecnologia Kernel Live Patching (KLP) e apresenta as diretrizes de uso para o serviço SLE Live Patching.

O KLP possibilita a aplicação das atualizações de segurança mais recentes aos kernels do Linux sem reinicialização. Esse procedimento maximiza o tempo de atividade e a disponibilidade do sistema, o que é especificamente crucial para sistemas de extrema importância.

As informações contidas neste documento são relacionadas às arquiteturas AMD64/Intel 64, POWER e IBM Z.

11.1 Vantagens do Kernel Live Patching

O KLP oferece vários benefícios.

  • Manter um grande número de servidores automaticamente atualizados é essencial para que as organizações obtenham ou mantenham determinadas certificações de conformidade. O KLP pode ajudar a atingir a conformidade e reduzir a necessidade de janelas de manutenção dispendiosas.

  • As empresas que trabalham com contratos de nível de serviço devem garantir um nível específico de acessibilidade e tempo de atividade do sistema. O Live Patching possibilita a aplicação de patches aos sistemas sem causar tempo de espera.

  • Como o KLP faz parte do mecanismo de atualização do sistema padrão, não há necessidade de treinamento especializado nem de introdução de rotinas de manutenção complicadas.

11.2 Visão geral do Kernel Live Patching

Os patches dinâmicos do kernel são oferecidos como pacotes com código modificado, separados do pacote do kernel principal. Os patches dinâmicos são cumulativos, portanto, o patch mais recente contém todas as correções dos anteriores no pacote do kernel. Cada pacote ativo do kernel está vinculado à revisão exata do kernel para a qual ele foi gerado. O número da versão do pacote ativo do kernel aumenta a cada adição de correções.

Nota
Nota: Patches dinâmicos e kernel em execução

Para determinar o status da aplicação de patch do kernel, use o comando klp -v patches. A saída do comando uname não muda para kernels com patch aplicado.

Importante
Importante: Patches dinâmicos comparados com as atualizações do kernel

Os patches dinâmicos contêm apenas correções críticas e não substituem as atualizações regulares do kernel que exigem uma reinicialização. Considere os patches dinâmicos como medidas temporárias que protegem o kernel até que uma atualização apropriada do kernel e uma reinicialização sejam executadas.

O diagrama abaixo ilustra o relacionamento geral entre os patches dinâmicos e as atualizações do kernel. É possível ver a lista de CVEs e os relatórios de defeitos abordados pelo patch dinâmico ativo no momento usando o comando klp -v patches.

Image

É possível ter várias versões do pacote do kernel instaladas junto com os patches dinâmicos. Esses pacotes não entram em conflito. Você pode instalar os pacotes do kernel atualizados junto com os patches dinâmicos do kernel em execução. Nesse caso, talvez seja solicitado para você reinicializar o sistema. Os usuários com assinaturas do SLE Live Patching estão qualificados para suporte técnico, desde que haja atualizações de patch ativas para o kernel em execução (consulte a Seção 11.5.1, “Verificando a data de vencimento do patch dinâmico”).

Com o KLP ativado, todas as atualizações de kernel vêm com um pacote de patch dinâmico. Esse patch dinâmico não contém nenhuma correção e funciona como uma propagação para patches dinâmicos futuros do kernel correspondente. Esses patches de propagação vazios são chamados de initial patches.

11.2.1 Escopo do Kernel Live Patching

O escopo do SLE Live Patching inclui correções de vulnerabilidades de nível 7 ou superior do SUSE Common Vulnerability Scoring System (CVSS; o SUSE CVSS é baseado no sistema CVSS v3.0) e correções de bugs relacionadas à estabilidade do sistema ou corrupção de dados. No entanto, talvez não seja tecnicamente viável criar patches dinâmicos para todas as correções que se enquadram nas categorias especificadas. Portanto, a SUSE reserva o direito de ignorar as correções em situações em que a criação de um patch dinâmico do kernel não seja possível por motivos técnicos. Atualmente, mais de 95% das correções qualificadas são lançadas como patches dinâmicos. Para obter mais informações sobre o CVSS (a base para a classificação SUSE CVSS), consulte Common Vulnerability Scoring System SIG.

11.2.2 Limitações do Kernel Live Patching

O KLP envolve a substituição de funções e o processamento adequado da substituição de conjuntos de funções interdependentes. Isso é feito redirecionando as chamadas do código antigo para o código atualizado em um local de memória diferente. As mudanças feitas nas estruturas de dados complicam ainda mais a situação, pois os dados permanecem no local e não podem ser estendidos ou reinterpretados. Existem técnicas que permitem a alteração indireta das estruturas de dados, mas determinadas correções não podem ser convertidas em patches dinâmicos. Nessa situação, a reinicialização do sistema é a única maneira de aplicar as correções.

11.3 Ativando o Kernel Live Patching por meio do YaST

Para ativar o KLP no sistema, você precisa ter assinaturas ativas do SLES e do SLE Live Patching. Visite SUSE Customer Center para verificar o status de suas assinaturas e obter um código de registro para a assinatura do SLE Live Patching.

Para ativar o Kernel Live Patching no sistema, siga estas etapas:

  1. Execute o comando yast2 registration e clique em Selecionar extensões.

  2. Selecione SUSE Linux Enterprise Live Patching 15 na lista de extensões disponíveis e clique em Próximo.

  3. Confirme os termos da licença e clique em Próximo.

  4. Digite o código de registro do SLE Live Patching e clique em Próximo.

  5. Confira o Resumo da Instalação e os Padrões selecionados. Os padrões Live Patching e SLE Live Patching Lifecycle Data devem ser selecionados automaticamente para instalação junto com pacotes adicionais para atender às dependências.

  6. Clique em Aceitar para concluir a instalação. Esse procedimento instala os componentes base do Kernel Live Patching no sistema, o patch dinâmico inicial e as dependências necessárias.

11.4 Ativando o Kernel Live Patching pela linha de comando

Para ativar o Kernel Live Patching, você precisa ter assinaturas ativas do SLES e do SLES Live Patching. Visite SUSE Customer Center para verificar o status de suas assinaturas e obter um código de registro para a assinatura do SLES Live Patching.

  1. Executar sudo SUSEConnect --list-extensions. Observe o comando de ativação exato do SLES Live Patching. Exemplo de saída de comando (abreviado):

    $ SUSEConnect --list-extensions
    ...
    SUSE Linux Enterprise Live Patching 15 SP6 x86_64
    Activate with: SUSEConnect -p sle-module-live-patching/15.6/x86_64 \
      -r ADDITIONAL REGCODE
  2. Ative o SLES Live Patching usando o comando obtido seguido de -r LIVE_PATCHING_REGISTRATION_CODE, por exemplo:

    SUSEConnect -p sle-module-live-patching/15.6/x86_64 \
      -r LIVE_PATCHING_REGISTRATION_CODE
  3. Instale os pacotes e as dependências necessários usando o comando zypper install -t pattern lp_sles

Neste ponto, o patch dinâmico já foi aplicado ao sistema.

Veja como funciona o processo nos bastidores: quando o sistema de instalação de pacotes detecta que há um kernel instalado que precisa de patch dinâmico e que existe um patch dinâmico para ele no canal de software, o sistema seleciona esse patch para instalação. Em seguida, o kernel recebe as correções de patch dinâmico como parte da instalação do pacote. O kernel recebe o patch dinâmico mesmo antes da conclusão da instalação do produto.

11.5 Executando o Kernel Live Patching

Os patches dinâmicos do kernel são instalados como parte das atualizações regulares do sistema. No entanto, há várias informações que você deve saber.

  • O kernel recebe patches dinâmicos se um pacote kernel-livepatch-* foi instalado para o kernel em execução. Você pode usar o comando zypper se --details kernel-livepatch-* para verificar se os pacotes de patch dinâmico do kernel estão instalados no seu sistema.

  • Quando o pacote kernel-default está instalado, o gerenciador de atualizações solicita para você reinicializar o sistema. Para evitar que essa mensagem apareça, você pode remover essas atualizações do kernel da operação de aplicação de patches. Para fazer isso, você pode adicionar bloqueios de pacote com o Zypper. O SUSE Manager também possibilita filtrar o conteúdo do canal (consulte Live Patching with SUSE Manager).

  • Você pode verificar o status da aplicação de patches usando o comando klp status. Para examinar os patches instalados, execute o comando klp -v patches.

  • Mesmo que haja vários pacotes de kernel instalados no sistema, lembre-se de que apenas um deles estará em execução em um determinado momento. Da mesma forma, pode haver vários pacotes de patches dinâmicos instalados, mas apenas um patch dinâmico será carregado no kernel.

  • O patch dinâmico está incluído no initrd. Isso significa que, no caso de uma reinicialização inesperada, o sistema já vem com as correções de patch dinâmico aplicadas, portanto, não há necessidade de executar a aplicação de patches novamente.

11.5.1 Verificando a data de vencimento do patch dinâmico

Verifique se o lifecycle-data-sle-module-live-patching está instalado e execute o comando zypper lifecycle. Você deve ver as datas de vencimento dos patches dinâmicos na seção Package end of support if different from product (Fim do suporte do pacote se diferente do produto) da saída.

Cada patch dinâmico recebe atualizações por um ano a partir do lançamento do pacote de kernel subjacente. A página Maintained kernels, patch updates and lifecycle (Kernels mantidos, atualizações de patch e ciclo de vida) permite verificar as datas de vencimento com base na versão do kernel em execução sem instalar a extensão do produto.

11.6 Solucionando problemas do Kernel Live Patching

11.6.1 Downgrade manual do patch

Se o patch dinâmico mais recente for problemático, você poderá fazer downgrade do patch dinâmico instalado no momento para a versão anterior. Recomendamos fazer o downgrade do patch antes que o sistema comece a apresentar problemas. Lembre-se de que um sistema com avisos de kernel ou rastreamentos de erro de kernel no registro do sistema pode não ser adequado para o procedimento de downgrade de patch. Se você não tiver certeza se o sistema atende aos requisitos para um downgrade de patch, contate o Suporte Técnico da SUSE para obter ajuda.

Procedimento 11.1: Downgrade manual do patch
  1. Identifique o patch dinâmico em execução usando o comando klp -v patches. Você pode ver o patch que está em execução na linha que começa com RPM:. Por exemplo:

    RPM: kernel-livepatch-6_4_0-150600_9-default-1-150600.2.36.x86_64

    O 6_4_0-150600_9-default no exemplo acima indica a versão exata do kernel em execução.

  2. Use o comando zypper search -s kernel-livepatch-RUNNING_KERNEL_VERSION-default para pesquisar versões anteriores do patch. O comando retorna uma lista de versões de pacote disponíveis. Para cada novo lançamento de pacote de patch dinâmico, lembre-se de que o número da versão aumenta em um. Escolha a versão com um número abaixo da versão atual.

  3. Instale a versão desejada com o comando zypper in --oldpackage kernel-livepatch-RUNNING_KERNEL_VERSION-default=DESIRED_VERSION.