Introducción
Este documento describe cómo identificar, resolver y verificar el fallo 11 en el conector Secure Endpoint Linux.
Antecedentes
El conector genera falla 11 cuando no puede cargar el módulo eBPF necesario para monitorear la actividad y los eventos del sistema.
A partir de la versión 1.25 del conector Linux, el conector da prioridad a eBPF CO-RE (Compile Once - Run Everywhere) para monitorear los eventos del sistema en los núcleos que soportan BTF, sin requerir que se instalen los encabezados del núcleo. Este método de observabilidad del sistema es más eficiente y es la opción preferida.
El conector recurre al método de carga eBPF heredado que requiere que se instalen los encabezados del núcleo cuando se usan versiones del conector Linux anteriores a 1.25 o se ejecutan en un núcleo que no soporta BTF. Estos encabezados normalmente no se incluyen en las instalaciones de distribución estándar y deben instalarse por separado.
La falla 11 se genera si el conector no puede cargar el módulo eBPF utilizando cualquiera de los enfoques, lo que indica que el sistema está en un estado desprotegido. Este documento detalla los pasos necesarios para resolver este problema.
Determinar compatibilidad con BTF
El conector requiere que una de estas afirmaciones sea verdadera para cargar el módulo eBPF necesario para monitorear el sistema de archivos y la actividad de la red:
1. El núcleo actual tiene habilitado CONFIG_DEBUG_INFO_BTF
. (Esta es la opción preferida.)
2. Los encabezados del kernel para la versión del kernel que se está ejecutando actualmente están instalados en el sistema.
Para verificar si su núcleo actualmente en ejecución tiene CONFIG_DEBUG_INFO_BTF
habilitado, ejecute el comando:
cat /boot/config-$(uname -r) | grep CONFIG_DEBUG_INFO_BTF
Si ve CONFIG_DEBUG_INFO_BTF=Y
, su kernel soporta BTF y el conector puede monitorear el sistema de archivos y los eventos de red usando eBPF.
BTF no compatible
Si ejecuta el conector versión 1.25 o posterior, considere actualizar el núcleo a una versión que admita BTF. Más adelante en este documento encontrará una lista de las distribuciones que tienen BTF habilitado de forma predeterminada.
Si su núcleo actual no soporta BTF, el conector requiere que se instalen los archivos de encabezado del núcleo. Se genera el error 11 si el conector no puede localizar estos archivos requeridos. Utilice los pasos descritos en Instalar el encabezado del núcleo que falta para resolver este problema.
Distribuciones admitidas por BTF
Estas distribuciones tienen CONFIG_DEBUG_INFO_BTF
habilitado de forma predeterminada en la última versión del kernel:
- Centos/RHEL 8.2 y posteriores
- Ubuntu 20.04 y posterior
- Oracle Linux 8.5 y versiones posteriores
- Debian 11 y posteriores
- Alma Linux 8.3 y posterior
- Rocky Linux 8.3 y versiones posteriores
- SUSE Enterprise 15 SP4/openSUSE Leap 15.4 y versiones posteriores
Actualización a un núcleo compatible con BTF
Si está en una distribución que soporta BTF en una versión posterior del núcleo, es preferible que actualice su núcleo para resolver el fallo 11.
Antes de proceder a actualizar el núcleo, actualice primero el conector de Linux a la versión 1.25.0 o posterior para asegurarse de que el conector admite BTF.
Distribuciones basadas en RPM
Esta sección se aplica a:
- Linux Alma
- Linux de Amazon
- Linux CentOS
- Núcleo compatible con Oracle Linux Red Hat (RHCK)
- Red Hat Enterprise Linux
- Linux Rocky
Para actualizar a la última versión del núcleo:
- Verifique si hay actualizaciones disponibles para el kernel:
yum check-update
Si ve kernel.x86_64
en el resultado, hay una actualización de kernel disponible.
- Actualice el paquete del núcleo:
sudo yum update kernel
- Reinicie el sistema:
sudo reboot
- Verifique que el nuevo núcleo admita BTF y que el conector elimine el error 11.
Oracle Linux Unbreakable Enterprise Kernel (UEK)
Para actualizar a la última versión del núcleo:
- Verifique si hay actualizaciones disponibles para el kernel:
yum check-update
Si ve kernel-uek.x86_64
en el resultado, entonces hay una actualización del núcleo disponible.
- Actualice el paquete del núcleo:
sudo yum update kernel-uek
- Reinicie el sistema:
sudo reboot
- Verifique que el nuevo núcleo admita BTF y que el conector elimine el error 11.
SUSE Linux Enterprise y openSUSE Leap
Para actualizar a la última versión del núcleo:
- Compruebe la versión actual del núcleo:
uname -r
- Enumere los paquetes
kernel-default
disponibles: zypper search -s --match-exact kernel-default
El resultado aparece como:
| kernel-default | package |
|
|
Busque una versión
mayor que la versión actual del núcleo, determinada en el paso 1.
- Instale las nuevas versiones de
kernel-default
con el comando: sudo zypper install kernel-default=
- Reinicie el sistema:
sudo reboot
- Verifique que el nuevo núcleo admita BTF y que el conector elimine el error 11.
Distribuciones basadas en Debian
Para actualizar a la última versión del núcleo:
- Recuperar las listas de paquetes más recientes:
sudo apt update
- Instale los paquetes más recientes:
sudo apt upgrade
- Reinicie el sistema:
sudo reboot
- Verifique que el nuevo núcleo admita BTF y que el conector elimine el error 11.
Instalar encabezado de núcleo faltante
Antes de instalar un encabezado de kernel que falta, intente actualizar su sistema a una versión compatible con BTF. Si esto no resuelve el fallo 11, o si su distribución aún no soporta BTF en la última versión, entonces continúe instalando el encabezado del núcleo que falta.
Distribuciones basadas en RPM
Esta sección se aplica a:
- Linux Alma
- Linux de Amazon
- Linux CentOS
- Núcleo compatible con Oracle Linux Red Hat (RHCK)
- Red Hat Enterprise Linux
- Linux Rocky
Verificación
Las distribuciones basadas en RPM requieren que se instale un paquete kernel-devel
para el núcleo que se está ejecutando actualmente. Para verificar si un paquete kernel-devel
está instalado para el núcleo que se está ejecutando actualmente, ejecute:
rpm -qa | grep kernel-devel-$(uname -r)
Si no hay resultados, entonces el paquete kernel-devel
requerido falta y necesita ser instalado.
Si se instala el paquete kernel-
developer correcto y el conector sigue generando el error 11, algunos de los archivos requeridos podrían haber sido manipulados. Este comando comprueba si se ha modificado algún archivo o si falta alguno:
rpm --verify --nomtime --noghost kernel-default-devel
Si falta algún archivo o se modifica, es necesario desinstalar y volver a instalar el paquete
de desarrollo del núcleo
para garantizar que los archivos necesarios están disponibles. Este comando no proporciona resultados si todos los archivos de paquete están intactos y sin modificar.
Resolución
Para instalar el paquete kernel-devel
requerido, ejecute el comando:
sudo dnf install -y kernel-devel-$(uname -r)
Reverificar. El fallo 11 lo borra el conector después de aproximadamente un minuto.
Oracle Linux Unbreakable Enterprise Kernel (UEK)
Verificación
Oracle Linux UEK requiere que un paquete kernel-uek-devel
esté instalado para el kernel que se está ejecutando actualmente. Para verificar si un paquete kernel-uek-devel
está instalado para el núcleo en ejecución actual, ejecute:
rpm -qa | grep kernel-uek-devel-$(uname -r)
Si no hay resultados, entonces el paquete kernel-uek-devel
requerido falta y necesita ser instalado.
Resolución
Para instalar el paquete kernel-uek-devel
necesario, ejecute el comando:
sudo dnf install -y kernel-uek-devel-$(uname -r)
Reverificar. El fallo 11 lo borra el conector después de aproximadamente un minuto.
SUSE Linux Enterprise y openSUSE Leap
Verificación
SUSE y openSUSE requieren que el paquete kernel-default-devel
esté instalado para el núcleo que se está ejecutando actualmente. Para verificar si el paquete kernel-default-devel
está instalado para el núcleo en ejecución actual, ejecute:
zypper search -si kernel-default-devel | grep $(uname -r | sed "s/-default//")
Si no hay resultados, entonces el paquete kernel-default-devel
necesario falta y necesita ser instalado.
Resolución
Instalar encabezados de kernel
- Para determinar si el paquete
kernel-default-devel
correcto para su versión del núcleo está disponible para la instalación, ejecute el comando: zypper search -s kernel-default-devel | grep $(uname -r | sed "s/-default//")
El resultado incluye la sintaxis:
| kernel-default-devel |
|
|
|
Si ve un resultado similar, tome nota de la versión
especificada en el resultado y continúe con el paso 2. De lo contrario, omita esta sección y en su lugar use los pasos para actualizar el núcleo e instalar los encabezados de núcleo coincidentes.
- Instale el paquete
kernel-default-devel
usando este comando, reemplazando <version>
por la versión disponible identificada en el paso anterior: sudo zypper install --oldpackage kernel-default-devel=
- Verifique que se haya instalado el paquete
kernel-default-devel
. El fallo 11 lo borra el conector después de aproximadamente un minuto.
Actualizar kernel e instalar encabezados de kernel coincidentes
Si el paquete kernel-default-devel
requerido no está disponible, actualice su kernel a una versión compatible e instale los encabezados de kernel que coincidan.
- Enumere los paquetes
kernel-default
y kernel-default-devel
disponibles con el comando: zypper search -s --match-exact kernel-default kernel-default-devel
Busque versiones coincidentes de los paquetes kernel-default
y kernel-default-devel
. Por ejemplo:
| kernel-default | package |
|
|
| kernel-default-devel | package |
|
|
Tome nota de la nueva versión
especificada en el resultado.
Nota: si no puede encontrar un núcleo más reciente al que actualizar, debe actualizar a una versión de distribución más reciente.
- Instale las nuevas versiones de
kernel-default
y kernel-default-devel
con el comando: sudo zypper install kernel-default=
kernel-default-devel=
- Reinicie el sistema:
sudo reboot
- Reverificar. El fallo 11 se borra mediante el conector.
Distribuciones basadas en Debian
Verificación
Las distribuciones basadas en Debian requieren que se instale un paquete linux-encabezados
para el núcleo que se está ejecutando actualmente. Para verificar si un paquete linux-encabezados
está instalado para el núcleo en ejecución actual, ejecute:
apt list linux-headers-$(uname -r)
Si no hay resultados, entonces falta el paquete linux-encabezados
necesario y debe ser instalado.
Resolución
Para instalar el paquete linux-encabezados
necesario, ejecute el comando:
sudo apt install linux-headers-$(uname -r)
Reverificar. El fallo 11 lo borra el conector después de aproximadamente un minuto.