Introducción
En este artículo se explica cómo identificar cuándo los módulos precompilados del núcleo necesarios para el sistema de archivos y la supervisión de red del conector de Cisco Secure Endpoint Linux no están disponibles para el núcleo del sistema que se está ejecutando actualmente, y el procedimiento para compilar manualmente los módulos del núcleo de modo que el sistema de archivos y la supervisión de red estén operativos.
Para el propósito de este artículo, un "núcleo no soportado" es una versión del núcleo que es soportada por el conector Linux, pero los módulos precompilados específicos del núcleo requeridos para la versión del núcleo no están incluidos en el paquete de instalación del conector y por lo tanto tienen que ser compilados manualmente. Este puede ser el caso de una versión de un conector Linux dado que se ejecuta en un sistema operativo que utiliza una actualización de versión sucesiva, como Amazon Linux 2.
No todas las distribuciones Linux y la versión del núcleo admiten la ejecución de módulos compilados del núcleo. Este artículo le ayudará a identificar cuándo se pueden utilizar los módulos del núcleo compilados manualmente.
Prerequisites
Requirements
- Para los sistemas basados en RHEL, se instalará un gcc suministrado por la distribución; kernel-devel instalado para el kernel que se está ejecutando actualmente.
- Para sistemas que utilizan un núcleo empresarial irrompible (UEK), se ha instalado un gcc proporcionado por distribución; kernel-uek-devel instalado para el kernel que se está ejecutando actualmente.
Aplicabilidad
Sistema operativo
- RHEL/CentOS 7
- Núcleo compatible con Oracle Linux 7 Red Hat (RHCK)
- Oracle Linux 7 UEK 5 y anteriores
- Amazon Linux 2
Versiones del núcleo
- El módulo kernel de monitoreo de red se puede compilar para las versiones de kernel 2.6 a 4.14 inclusive.
- El módulo kernel de monitoreo del sistema de archivos se puede compilar para las versiones 3.10 a 4.14 del núcleo inclusive.
NOTAS:
- En las versiones del núcleo 2.6 hasta 3.10, el conector utiliza redirfs (un módulo de núcleo fuera de árbol) para la supervisión del sistema de archivos, que no es aplicable para la compilación personalizada.
- Las versiones del núcleo entre 4.14 y 4.19 no son compatibles con el conector y tampoco son aplicables para la compilación personalizada.
- Para las versiones del núcleo 4.19 y posteriores, el conector utiliza módulos eBPF para monitorear el sistema de archivos y la red. Consulte el artículo Linux Kernel-Devel Fault para obtener detalles sobre cómo resolver este error en esas versiones del núcleo.
Versiones del conector
- 1.16.0 y posterior
- 1.18.0 y posterior para crear módulos de kernel UEK personalizados
Diagnóstico de un núcleo no admitido
Cuando el conector se está ejecutando en un equipo con un núcleo no compatible, se generará el error 8 (el monitor del sistema de archivos en tiempo real no pudo iniciarse) y el error 9 (el monitor de red en tiempo real no pudo iniciarse) y el conector se ejecutará en un estado degradado sin supervisión del sistema de archivos o de la red.
Los siguientes pasos se pueden realizar desde una ventana de terminal para identificar si el conector se está ejecutando en un núcleo no compatible:
- Verifique que el conector tenga el fallo 8 y/o el fallo 9 elevado:
$ /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 que el núcleo que se está ejecutando actualmente esté entre 2.6 y 4.14, inclusive, y que no coincida con ninguna de las versiones precompiladas del módulo del núcleo.
El siguiente comando muestra la versión actual del núcleo en ejecución:
$ uname -r
4.14.97-90.72.amzn2.x86_64
Las versiones del módulo del núcleo precompiladas disponibles empaquetadas con el conector se enumeran mediante el siguiente 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
En el ejemplo anterior, la versión 4.14.97-90.72.amzn2.x86_64 del núcleo no está incluida en la lista de módulos disponibles del núcleo.
El conector de Linux es adecuado para compilar módulos de kernel personalizados si todas las siguientes afirmaciones son verdaderas:
- El conector tiene los fallos 8 y/o 9 elevados.
- La versión actual del núcleo está entre 2.6 y 4.14, inclusive.
- La versión actual del núcleo no está incluida en la lista de módulos precompilados del núcleo
/opt/cisco/amp/bin/modules
Resolución
Si un conector Linux se está ejecutando en un núcleo no compatible, se puede utilizar el siguiente procedimiento para compilar módulos de núcleo personalizados para el sistema:
- Instalar las dependencias del sistema necesarias:
$ yum install gcc
se requiere gcc
para compilar los módulos del núcleo con opciones específicas.
- En los sistemas que utilizan un núcleo basado en RHEL, utilice el siguiente comando para instalar el paquete de núcleo requerido:
$ yum install kernel-devel-$(uname -r)
-
En los sistemas que utilizan UEK, utilice el siguiente comando para instalar el paquete del núcleo requerido:
$ yum install kernel-uek-devel-$(uname -r)
Dependiendo de su sistema,kernel-devel-$(uname -r) orkernel-uek-devel-$(uname -r)
es necesario para compilar los módulos del núcleo para el núcleo que se está ejecutando actualmente.
-
Ejecute el script compile_kmods.sh con privilegios de root:
$ sudo /opt/cisco/amp/bin/compile_kmods.sh
El script compile_kmods.sh intentará compilar los módulos de kernel de sistema de archivos y monitoreo de red para la versión actual del kernel en ejecución. Los módulos de kernel personalizados se crearán en el directorio /opt/cisco/amp/extras/modules
. Al final de la ejecución, la secuencia de comandos reiniciará el conector automáticamente para que los módulos recién compilados del núcleo puedan cargarse en el sistema.
- Confirme que se han borrado los errores 8 y 9:
$ /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
Más comandos
El ejecutable compile_kmods.sh está disponible en las versiones 1.16.0 y posteriores del conector Secure Endpoint Linux, y se instala automáticamente en las distribuciones compatibles del sistema operativo. El ejecutable compile_kmods.sh se mejoró en el conector Secure Endpoint Linux versión 1.18.0 y posterior para soportar la compilación personalizada de UEKs.
La compilación personalizada de módulos de kernel para monitoreo de red es soportada en las versiones de kernel 2.6 a 4.14, mientras que la compilación personalizada de módulos de kernel para monitoreo de sistema de archivos es soportada en las versiones de kernel 3.10 a 4.14.
Comandos disponibles
NOTE: el ejecutable compile_kmods.sh debe ejecutarse con privilegios de root.
Resolución de problemas
Si los fallos 8 y/o 9 se siguen planteando después de seguir los pasos de la Resolución, se pueden realizar los siguientes pasos para investigar más a fondo el problema: