Introdução
Este documento descreve como identificar, resolver e verificar a falha 11 no conector Secure Endpoint Linux.
Informações de Apoio
O conector apresenta a falha 11 sempre que não consegue carregar o módulo eBPF necessário para monitorar a atividade e os eventos do sistema.
Começando com o conector Linux versão 1.25, o conector prioriza o eBPF CO-RE (Compile Once - Run Everywhere) para monitorar eventos do sistema em kernels que suportam BTF, sem exigir que os cabeçalhos do kernel sejam instalados. Este método de observação do sistema é mais eficiente e é a opção preferida.
O conector volta para o método de carregamento eBPF herdado que requer que os cabeçalhos do kernel sejam instalados ao usar as versões do conector Linux anteriores a 1.25 ou em execução em um kernel que não oferece suporte a BTF. Esses cabeçalhos geralmente não são incluídos nas instalações de distribuição padrão e precisam ser instalados separadamente.
A falha 11 é acionada se o conector falhar ao carregar o módulo eBPF usando qualquer uma das abordagens, indicando que o sistema está em um estado desprotegido. Este documento detalha as etapas necessárias para resolver esse problema.
Determine o suporte BTF
O conector exige que um destes seja verdadeiro para carregar o módulo eBPF necessário para monitorar o sistema de arquivos e a atividade da rede:
1. O kernel atual tem CONFIG_DEBUG_INFO_BTF
habilitado. (Esta é a opção preferida.)
2. Os cabeçalhos do kernel da versão do kernel atualmente em execução são instalados no sistema.
Para verificar se o kernel em execução tem CONFIG_DEBUG_INFO_BTF
habilitado, execute o comando:
cat /boot/config-$(uname -r) | grep CONFIG_DEBUG_INFO_BTF
Se você vir CONFIG_DEBUG_INFO_BTF=y
, seu kernel suporta BTF e o conector pode monitorar o sistema de arquivos e os eventos de rede usando eBPF.
BTF não suportado
Se estiver executando a versão 1.25 ou mais recente do conector, considere atualizar o kernel para uma versão que suporte BTF. Uma lista de distribuições que têm BTF habilitado por padrão pode ser encontrada mais adiante neste documento.
Se o seu kernel atual não suporta BTF, o conector requer que os arquivos de cabeçalho do kernel sejam instalados. A falha 11 é gerada se o conector não puder localizar esses arquivos necessários. Use as etapas descritas em Install the missing kernel header para resolver esse problema.
Distribuições suportadas BTF
Essas distribuições têm CONFIG_DEBUG_INFO_BTF
habilitado por padrão na versão mais recente do kernel:
- Centos/RHEL 8.2 e posterior
- Ubuntu 20.04 e posterior
- Oracle Linux 8.5 e posterior
- Debian 11 e mais recente
- Alma Linux 8.3 e posterior
- Rocky Linux 8.3 e posterior
- SUSE Enterprise 15 SP4 / openSUSE Leap 15.4 e posterior
Atualizar para um kernel suportado por BTF
Se você estiver em uma distribuição que suporte BTF em uma versão de kernel posterior, é preferível que você atualize seu kernel para resolver a falha 11.
Antes de continuar a atualizar seu kernel, atualize primeiro seu conector Linux para a versão 1.25.0 ou mais recente para garantir que seu conector suporte BTF.
Distribuições baseadas em RPM
Esta seção é aplicável a:
- Linux Alma
- Linux da Amazon
- CentOS Linux
- Kernel compatível com o Oracle Linux Red Hat (RHCK)
- Red Hat Enterprise Linux
- Linux rochoso
Para atualizar para a versão mais recente do kernel:
- Verifique se há atualizações disponíveis para o kernel:
yum check-update
Se você vir kernel.x86_64
na saída, então há uma atualização de kernel disponível.
- Atualize o pacote do kernel:
sudo yum update kernel
- Reinicialize o sistema:
sudo reboot
- Verifique se o novo kernel suporta BTF e se a falha 11 é eliminada pelo conector.
Kernel Corporativo Inquebrável do Oracle Linux (UEK)
Para atualizar para a versão mais recente do kernel:
- Verifique se há atualizações disponíveis para o kernel:
yum check-update
Se você vir kernel-uek.x86_64
na saída, então há uma atualização de kernel disponível.
- Atualize o pacote do kernel:
sudo yum update kernel-uek
- Reinicialize o sistema:
sudo reboot
- Verifique se o novo kernel suporta BTF e se a falha 11 é eliminada pelo conector.
SUSE Linux Enterprise e openSUSE Leap
Para atualizar para a versão mais recente do kernel:
- Verifique sua versão atual do kernel:
uname -r
- Liste os pacotes
kernel-default
disponíveis: zypper search -s --match-exact kernel-default
A saída é exibida como:
| kernel-default | package |
|
|
Localize uma versão
que seja superior à sua versão atual do kernel, determinada na etapa 1.
- Instale as novas versões do
kernel-default
com o comando: sudo zypper install kernel-default=
- Reinicialize o sistema:
sudo reboot
- Verifique se o novo kernel suporta BTF e se a falha 11 é eliminada pelo conector.
Distribuições baseadas em Debian
Para atualizar para a versão mais recente do kernel:
- Recupere as listas de pacotes mais recentes:
sudo apt update
- Instale os pacotes mais recentes:
sudo apt upgrade
- Reinicialize o sistema:
sudo reboot
- Verifique se o novo kernel suporta BTF e se a falha 11 é eliminada pelo conector.
Instalar Cabeçalho de Kernel Ausente
Antes de instalar um cabeçalho de kernel ausente, tente atualizar seu sistema para uma versão BTF suportada. Se isso não resolver a falha 11, ou se a sua distribuição ainda não suporta BTF na versão mais recente, continue a instalar o cabeçalho do kernel ausente.
Distribuições baseadas em RPM
Esta seção é aplicável a:
- Linux Alma
- Linux da Amazon
- CentOS Linux
- Kernel compatível com o Oracle Linux Red Hat (RHCK)
- Red Hat Enterprise Linux
- Linux rochoso
Verificar
As distribuições baseadas em RPM exigem que um pacote kernel-devel
esteja instalado para o kernel atualmente em execução. Para verificar se um pacote kernel-devel
está instalado para o kernel em execução no momento, execute:
rpm -qa | grep kernel-devel-$(uname -r)
Se não houver resultados, o pacote kernel-devel
necessário está ausente e precisa ser instalado.
Se o pacote kernel-
developer correto estiver instalado e o conector ainda estiver apresentando a falha 11, alguns dos arquivos necessários podem ter sido adulterados. Este comando verifica se algum arquivo foi modificado ou está ausente:
rpm --verify --nomtime --noghost kernel-default-devel
Se algum arquivo estiver faltando ou for modificado, então o kernel-
developer package precisa ser desinstalado e reinstalado para garantir que os arquivos necessários estejam disponíveis. Este comando não fornece saída se todos os arquivos do pacote estiverem intactos e sem modificações.
Resolução
Para instalar o pacote kernel-devel
necessário, execute o comando:
sudo dnf install -y kernel-devel-$(uname -r)
Verificar novamente. A falha 11 é eliminada pelo conector após cerca de um minuto.
Kernel Corporativo Inquebrável do Oracle Linux (UEK)
Verificar
O Oracle Linux UEK requer que um pacote kernel-uek-devel
esteja instalado para o kernel em execução no momento. Para verificar se um pacote kernel-uek-devel
está instalado para o kernel em execução no momento, execute:
rpm -qa | grep kernel-uek-devel-$(uname -r)
Se não houver resultados, o pacote kernel-uek-devel
necessário está ausente e precisa ser instalado.
Resolução
Para instalar o pacote kernel-uek-devel
necessário, execute o comando:
sudo dnf install -y kernel-uek-devel-$(uname -r)
Verificar novamente. A falha 11 será eliminada pelo conector após cerca de um minuto.
SUSE Linux Enterprise e openSUSE Leap
Verificar
O SUSE e o openSUSE exigem que o pacote kernel-default-devel
esteja instalado para o kernel atualmente em execução. Para verificar se o pacote kernel-default-devel
está instalado para o kernel em execução no momento, execute:
zypper search -si kernel-default-devel | grep $(uname -r | sed "s/-default//")
Se não houver resultados, o pacote kernel-default-devel
necessário está ausente e precisa ser instalado.
Resolução
Instalar cabeçalhos do kernel
- Para determinar se o pacote
kernel-default-devel
correto para sua versão do kernel está disponível para instalação, execute o comando: zypper search -s kernel-default-devel | grep $(uname -r | sed "s/-default//")
A saída inclui a sintaxe:
| kernel-default-devel |
|
|
|
Se você vir uma saída semelhante, anote a versão
especificada na saída e continue na etapa 2. Caso contrário, ignore esta seção e, em vez disso, use as etapas para atualizar o kernel e instalar cabeçalhos de kernel correspondentes.
- Instale o pacote
kernel-default-devel
usando este comando, substituindo <version>
pela versão disponível identificada na etapa anterior: sudo zypper install --oldpackage kernel-default-devel=
- Verifique se o pacote
kernel-default-devel
foi instalado. A falha 11 é eliminada pelo conector após cerca de um minuto.
Atualizar Kernel e Instalar Cabeçalhos de Kernel Correspondentes
Se o pacote kernel-default-devel
necessário não estiver disponível, atualize seu kernel para uma versão suportada e instale os cabeçalhos do kernel correspondentes.
- Liste os pacotes
kernel-default
e kernel-default-devel
disponíveis com o comando: zypper search -s --match-exact kernel-default kernel-default-devel
Procure versões correspondentes dos pacotes kernel-default
e kernel-default-devel
. Por exemplo:
| kernel-default | package |
|
|
| kernel-default-devel | package |
|
|
Anote a nova versão
especificada na saída.
Nota: se você não conseguir encontrar um kernel mais recente para o qual fazer o upgrade, você deve fazer o upgrade para uma versão de distribuição mais recente.
- Instale as novas versões de
kernel-default
e kernel-default-devel
com o comando: sudo zypper install kernel-default=
kernel-default-devel=
- Reinicialize o sistema:
sudo reboot
- Verificar novamente. A falha 11 é eliminada pelo conector.
Distribuições baseadas em Debian
Verificar
Distribuições baseadas em Debian requerem que um pacote linux-headers
esteja instalado para o kernel atualmente em execução. Para verificar se um pacote linux-headers
está instalado para o kernel em execução no momento, execute:
apt list linux-headers-$(uname -r)
Se não houver resultados, o pacote linux-headers
necessário está ausente e precisa ser instalado.
Resolução
Para instalar o pacote linux-headers
necessário, execute o comando:
sudo apt install linux-headers-$(uname -r)
Verificar novamente. A falha 11 é eliminada pelo conector após cerca de um minuto.