Introdução
Este artigo explica como identificar quando os módulos de kernel pré-compilados necessários para o sistema de arquivos e o monitoramento de rede do conector Cisco Secure Endpoint Linux não estão disponíveis para o kernel do sistema em execução no momento, e o procedimento para compilar manualmente os módulos de kernel para que o monitoramento de rede e do sistema de arquivos esteja operacional.
Para os fins deste artigo, um "kernel não suportado" é uma versão do kernel que é suportada pelo conector Linux, mas os módulos específicos do kernel pré-compilados necessários para a versão do kernel não estão incluídos no pacote de instalação do conector e, portanto, precisam ser compilados manualmente. Esse pode ser o caso de uma determinada versão do conector Linux sendo executada em um sistema operacional que usa uma atualização de versão móvel, como o Amazon Linux 2.
Nem todas as distribuições Linux e versões de kernel suportam a execução de módulos de kernel compilados. Este artigo ajudará a identificar quando os módulos de kernel de compilação manual podem ser usados.
Pré-requisitos
Requisitos
- Para sistemas baseados em RHEL, gcc fornecido pela distribuição instalado; kernel-devel instalado para o kernel atualmente em execução.
- Para sistemas que usam um Unbreakable Enterprise Kernel (UEK), gcc fornecido pela distribuição instalado; kernel-uek-devel instalado para o kernel atualmente em execução.
Aplicabilidade
Sistema operacional
- RHEL/CentOS 7
- Kernel compatível com Red Hat (RHCK) para Oracle Linux 7
- Oracle Linux 7 UEK 5 e anterior
- Amazon Linux 2
Versões do kernel
- O módulo do kernel de monitoramento de rede pode ser compilado para as versões 2.6 a 4.14 inclusive.
- O módulo de monitoração do kernel do sistema de arquivos pode ser compilado para as versões de kernel 3.10 a 4.14 inclusive.
NOTAS:
- Nas versões de kernel 2.6 até 3.10, o conector usa rerfs (um módulo de kernel fora de árvore) para o monitoramento do sistema de arquivos, que não é aplicável para compilação personalizada.
- As versões do kernel entre 4.14 e 4.19 não são compatíveis com o conector e também não são aplicáveis para compilação personalizada.
- Para as versões de kernel 4.19 e mais recentes, o conector usa módulos eBPF para o sistema de arquivos e monitoramento de rede. Consulte o artigo Linux Kernel-Devel Fault para obter detalhes sobre como resolver essa falha nas versões do kernel.
Versões do Conector
- 1.16.0 e mais recente
- 1.18.0 e mais recente para criar módulos de kernel UEK personalizados
Diagnosticando um Kernel Não Suportado
Quando o conector estiver sendo executado em um computador com um kernel não suportado, a falha 8 (Falha ao iniciar o monitor do sistema de arquivos em tempo real) e a falha 9 (Falha ao iniciar o monitor da rede em tempo real) será elevada e o conector será executado em um estado degradado sem monitoramento do sistema de arquivos ou da rede.
As seguintes etapas podem ser executadas a partir de uma janela de terminal para identificar se o conector está sendo executado em um kernel não suportado:
- Verifique se o conector tem a falha 8 e/ou a falha 9 elevada:
$ /opt/cisco/amp/bin/ampcli status
[logger] Set minimum reported log level to notice
Trying to connect...
Connected.
Status: Connected
Mode: Degraded
Scan: Ready for scan
Last Scan: none
Policy: unsupported kernel example (#7607)
Command-line: Enabled
Faults: 2 Critical
Fault IDs: 8, 9
ID 8 - Critical: Realtime filesystem monitor failed to start.
ID 9 - Critical: Realtime network monitor failed to start.
- Verifique se o kernel em execução está entre 2.6 e 4.14, inclusive, e se ele não corresponde a nenhuma das versões pré-compiladas do módulo do kernel.
O comando a seguir exibe a versão do kernel atualmente em execução:
$ uname -r
4.14.97-90.72.amzn2.x86_64
As versões de módulo de kernel pré-compiladas disponíveis empacotadas com o conector são listadas usando o seguinte comando:
$ ls /opt/cisco/amp/bin/modules/
4.14.186-146.268.amzn2.x86_64 4.14.198-152.320.amzn2.x86_64 4.14.209-160.335.amzn2.x86_64 4.14.219-161.340.amzn2.x86_64 4.14.225-169.362.amzn2.x86_64
4.14.192-147.314.amzn2.x86_64 4.14.200-155.322.amzn2.x86_64 4.14.209-160.339.amzn2.x86_64 4.14.219-164.354.amzn2.x86_64 4.14.231-173.360.amzn2.x86_64
4.14.193-149.317.amzn2.x86_64 4.14.203-156.332.amzn2.x86_64 4.14.214-160.339.amzn2.x86_64 4.14.225-168.357.amzn2.x86_64 4.14.231-173.361.amzn2.x86_64
No exemplo acima, a versão do kernel 4.14.97-90.72.amzn2.x86_64 não está incluída na lista de módulos do kernel disponíveis.
O conector Linux é adequado para compilar módulos de kernel personalizados se todas as seguintes condições forem verdadeiras:
- O conector apresenta falha(s) 8 e/ou 9 elevada(s).
- A versão atual do kernel está entre 2.6 e 4.14, inclusive.
- A versão atual do kernel não está incluída na lista de módulos pré-compilados do kernel
/opt/cisco/amp/bin/modules
Resolução
Se um conector Linux estiver sendo executado em um kernel não suportado, o procedimento a seguir pode ser usado para compilar módulos de kernel personalizados para o sistema:
- Instalar as dependências de sistema necessárias:
$ yum install gcc
o gcc
é necessário para compilar os módulos do kernel com opções específicas.
- Em sistemas que usam um kernel baseado em RHEL, use o seguinte comando para instalar o pacote de kernel necessário:
$ yum install kernel-devel-$(uname -r)
-
Em sistemas que usam UEK, use o seguinte comando para instalar o pacote de kernel necessário:
$ yum install kernel-uek-devel-$(uname -r)
Dependendo do seu sistema,kernel-devel-$(uname -r) ou kernel-uek-devel-$(uname -r)
é necessário para compilar os módulos do kernel para o kernel em execução no momento.
-
Execute o script compile_kmods.sh com privilégios de root:
$ sudo /opt/cisco/amp/bin/compile_kmods.sh
O script compile_kmods.sh tentará compilar os módulos do kernel de monitoramento do sistema de arquivos e da rede para a versão do kernel em execução no momento. Os módulos de kernel personalizados serão criados no diretório /opt/cisco/amp/extras/modules
. Ao final da execução, o script reiniciará o conector automaticamente para que os módulos do kernel recém-compilados possam ser carregados no sistema.
- Confirme se as falhas 8 e 9 foram eliminadas:
$ /opt/cisco/amp/bin/ampcli status
[logger] Set minimum reported log level to notice
Trying to connect...
Connected.
Status: Connected
Mode: Normal
Scan: Ready for scan
Last Scan: 2021-06-14 05:53 PM
Policy: unsupported kernel example (#7607)
Command-line: Enabled
Faults: None
Mais comandos
O executável compile_kmods.sh está disponível nas versões 1.16.0 e mais recentes do conector Secure Endpoint Linux e é instalado automaticamente em distribuições de SO compatíveis. O executável compile_kmods.sh foi melhorado no conector Secure Endpoint Linux versão 1.18.0 e mais recente para suportar a compilação personalizada de UEKs.
Módulos de kernel de compilação personalizada para monitoramento de rede são suportados nas versões de kernel 2.6 a 4.14, enquanto módulos de kernel de compilação personalizada para monitoramento de sistema de arquivos são suportados nas versões de kernel 3.10 a 4.14.
Comandos disponíveis
NOTE: o executável compile_kmods.sh deve ser executado com privilégios de root.
Troubleshooting
Se a(s) falha(s) 8 e/ou 9 ainda for(em) levantada(s) depois que as etapas de Resolução forem seguidas, as seguintes etapas poderão ser executadas para investigar ainda mais o problema: