Introduzione
In questo documento viene descritto come identificare, risolvere e verificare l'errore 11 nel connettore Secure Endpoint Linux.
Premesse
Il connettore genera un errore 11 ogni volta che non è in grado di caricare il modulo eBPF necessario per monitorare l'attività e gli eventi del sistema.
A partire dal connettore Linux versione 1.25, il connettore dà la priorità a eBPF CO-RE (Compile Once - Run Everywhere) per monitorare gli eventi di sistema sui kernel che supportano BTF, senza richiedere l'installazione delle intestazioni del kernel. Questo metodo di osservabilità del sistema è più efficiente ed è l'opzione preferita.
Il connettore torna al metodo di caricamento eBPF legacy che richiede l'installazione delle intestazioni del kernel quando si utilizzano versioni del connettore Linux precedenti alla 1.25 o in esecuzione su un kernel che non supporta BTF. Queste intestazioni non sono in genere incluse nelle installazioni di distribuzione standard e devono essere installate separatamente.
L'errore 11 viene generato se il connettore non riesce a caricare il modulo eBPF utilizzando uno dei due approcci, indicando che il sistema è in uno stato non protetto. In questo documento vengono illustrati in dettaglio i passaggi necessari per risolvere il problema.
Determinazione del supporto BTF
Il connettore richiede uno dei seguenti requisiti per caricare il modulo eBPF necessario per il monitoraggio del file system e dell'attività di rete:
1. Per il kernel corrente è abilitato CONFIG_DEBUG_INFO_BTF
. Questa è l'opzione preferita.
2. Le intestazioni del kernel per la versione corrente del kernel sono installate nel sistema.
Per verificare se nel kernel in esecuzione è abilitato CONFIG_DEBUG_INFO_BTF
, eseguire il comando:
cat /boot/config-$(uname -r) | grep CONFIG_DEBUG_INFO_BTF
Se viene visualizzato CONFIG_DEBUG_INFO_BTF=y
, il kernel supporta BTF e il connettore può monitorare gli eventi del file system e di rete utilizzando eBPF.
BTF non supportato
Se si esegue il connettore versione 1.25 o successiva, valutare l'opportunità di aggiornare il kernel a una versione che supporti BTF. L'elenco delle distribuzioni per le quali BTF è abilitato per impostazione predefinita è disponibile più avanti in questo documento.
Se il kernel corrente non supporta BTF, il connettore richiede l'installazione dei file di intestazione del kernel. L'errore 11 viene generato se il connettore non è in grado di individuare i file necessari. Per risolvere il problema, attenersi alla procedura descritta in Installazione dell'intestazione del kernel mancante.
Distribuzioni supportate da BTF
Per impostazione predefinita, in queste distribuzioni CONFIG_DEBUG_INFO_BTF
è abilitato nella versione più recente del kernel:
- Centos/RHEL 8.2 e versioni successive
- Ubuntu 20.04 e versioni successive
- Oracle Linux 8.5 e versioni successive
- Debian 11 e versioni successive
- Alma Linux 8.3 e versioni successive
- Rocky Linux 8.3 e versioni successive
- SUSE Enterprise 15 SP4 / openSUSE Leap 15.4 e versioni successive
Aggiorna a un kernel supportato da BTF
Se ci si trova in una distribuzione che supporta BTF in una versione del kernel successiva, è preferibile aggiornare il kernel per risolvere l'errore 11.
Prima di procedere all'aggiornamento del kernel, aggiornare il connettore Linux alla versione 1.25.0 o successiva per assicurarsi che il connettore supporti BTF.
Distribuzioni basate su RPM
La presente sezione si applica a:
- Alma Linux
- Amazon Linux
- CentOS Linux
- Kernel compatibile con Oracle Linux Red Hat (RHCK)
- Red Hat Enterprise Linux
- Rocky Linux
Per eseguire l'aggiornamento all'ultima versione del kernel:
- Verificare se sono disponibili aggiornamenti per il kernel:
yum check-update
Se nell'output viene visualizzato kernel.x86_64
, è disponibile un aggiornamento del kernel.
- Aggiorna il pacchetto kernel:
sudo yum update kernel
- Riavviare il sistema:
sudo reboot
- Verificare che il nuovo kernel supporti BTF e che l'errore 11 venga cancellato dal connettore.
UEK (Unbreakable Enterprise Kernel) di Oracle Linux
Per eseguire l'aggiornamento all'ultima versione del kernel:
- Verificare se sono disponibili aggiornamenti per il kernel:
yum check-update
Se nell'output viene visualizzato kernel-uek.x86_64
, è disponibile un aggiornamento del kernel.
- Aggiorna il pacchetto kernel:
sudo yum update kernel-uek
- Riavviare il sistema:
sudo reboot
- Verificare che il nuovo kernel supporti BTF e che l'errore 11 venga cancellato dal connettore.
SUSE Linux Enterprise e openSUSE Leap
Per eseguire l'aggiornamento all'ultima versione del kernel:
- Controllare la versione corrente del kernel:
uname -r
- Elenca i pacchetti
kernel predefiniti
disponibili: zypper search -s --match-exact kernel-default
L'output viene visualizzato come:
| kernel-default | package |
|
|
Trovare una versione
maggiore di quella corrente del kernel, determinata nel passaggio 1.
- Installare le nuove versioni di
kernel-default
con il comando: sudo zypper install kernel-default=
- Riavviare il sistema:
sudo reboot
- Verificare che il nuovo kernel supporti BTF e che l'errore 11 venga cancellato dal connettore.
Distribuzioni basate su Debian
Per eseguire l'aggiornamento all'ultima versione del kernel:
- Recupera gli elenchi di pacchetti più recenti:
sudo apt update
- Installa i pacchetti più recenti:
sudo apt upgrade
- Riavviare il sistema:
sudo reboot
- Verificare che il nuovo kernel supporti BTF e che l'errore 11 venga cancellato dal connettore.
Installa intestazione kernel mancante
Prima di installare un'intestazione del kernel mancante, provare ad aggiornare il sistema a una versione supportata da BTF. Se l'errore 11 non viene risolto o se la distribuzione non supporta ancora BTF nell'ultima versione, continuare l'installazione dell'intestazione del kernel mancante.
Distribuzioni basate su RPM
La presente sezione si applica a:
- Alma Linux
- Amazon Linux
- CentOS Linux
- Kernel compatibile con Oracle Linux Red Hat (RHCK)
- Red Hat Enterprise Linux
- Rocky Linux
Verifica
Le distribuzioni basate su RPM richiedono l'installazione di un pacchetto di sviluppo del kernel
per il kernel attualmente in esecuzione. Per verificare se è installato un pacchetto di sviluppo del kernel
per il kernel corrente in esecuzione, eseguire:
rpm -qa | grep kernel-devel-$(uname -r)
Se non ci sono risultati, manca il pacchetto di sviluppo del kernel
richiesto che deve essere installato.
Se il pacchetto kernel-
develpackage corretto è installato e il connettore sta ancora sollevando il guasto 11, alcuni dei file richiesti potrebbero essere stati manomessi. Questo comando verifica se alcuni file sono stati modificati o risultano mancanti:
rpm --verify --nomtime --noghost kernel-default-devel
Se alcuni file sono mancanti o modificati, il kernel-
develpackage deve essere disinstallato e reinstallato per garantire che i file necessari siano disponibili. Questo comando non fornisce alcun output se tutti i file del pacchetto sono intatti e non modificati.
Risoluzione
Per installare il pacchetto di sviluppo del kernel
richiesto, eseguire il comando:
sudo dnf install -y kernel-devel-$(uname -r)
Riverificate. L'errore 11 viene cancellato dal connettore dopo circa un minuto.
UEK (Unbreakable Enterprise Kernel) di Oracle Linux
Verifica
Oracle Linux UEK richiede l'installazione di un pacchetto kernel-uek-devel
per il kernel attualmente in esecuzione. Per verificare se è installato un pacchetto kernel-ek-devel
per il kernel corrente in esecuzione, eseguire:
rpm -qa | grep kernel-uek-devel-$(uname -r)
Se non ci sono risultati, manca il pacchetto kernel-ek-devel
richiesto che deve essere installato.
Risoluzione
Per installare il pacchetto kernel-ek-devel
richiesto, eseguire il comando:
sudo dnf install -y kernel-uek-devel-$(uname -r)
Riverificate. L'errore 11 viene cancellato dal connettore dopo circa un minuto.
SUSE Linux Enterprise e openSUSE Leap
Verifica
SUSE e openSUSE richiedono che il pacchetto kernel-default-devel
sia installato per il kernel attualmente in esecuzione. Per verificare se il pacchetto kernel-default-devel
è installato per il kernel corrente in esecuzione, eseguire:
zypper search -si kernel-default-devel | grep $(uname -r | sed "s/-default//")
Se non ci sono risultati, manca il pacchetto kernel-default-devel
richiesto che deve essere installato.
Risoluzione
Installa intestazioni kernel
- Per determinare se il pacchetto
kernel-default-devel
corretto per la versione del kernel è disponibile per l'installazione, eseguire il comando: zypper search -s kernel-default-devel | grep $(uname -r | sed "s/-default//")
L'output include la sintassi seguente:
| kernel-default-devel |
|
|
|
Se viene visualizzato un output simile, prendere nota della versione
specificata nell'output e continuare con il passaggio 2. In caso contrario, saltare questa sezione e utilizzare i passaggi per aggiornare il kernel e installare le intestazioni del kernel corrispondenti.
- Installare il pacchetto
kernel-default-devel
utilizzando questo comando, sostituendo <version>
con la versione disponibile identificata nel passaggio precedente: sudo zypper install --oldpackage kernel-default-devel=
- Verificare che il pacchetto
kernel-default-devel
sia stato installato. L'errore 11 viene cancellato dal connettore dopo circa un minuto.
Aggiornamento del kernel e installazione delle intestazioni del kernel corrispondenti
Se il pacchetto kernel-default-devel
richiesto non è disponibile, aggiornare il kernel a una versione supportata e installare le intestazioni del kernel corrispondenti.
- Elencare i pacchetti
kernel-default
e kernel-default-devel
disponibili con il comando: zypper search -s --match-exact kernel-default kernel-default-devel
Cercare le versioni corrispondenti dei pacchetti kernel-default
e kernel-default-devel
. Ad esempio:
| kernel-default | package |
|
|
| kernel-default-devel | package |
|
|
Prendere nota della nuova versione
specificata nell'output.
Nota: se non è possibile trovare un kernel più recente a cui eseguire l'aggiornamento, è necessario eseguire l'aggiornamento a una versione di release più recente della distribuzione.
- Installare le nuove versioni di
kernel-default
e kernel-default-devel
con il comando: sudo zypper install kernel-default=
kernel-default-devel=
- Riavviare il sistema:
sudo reboot
- Riverificate. L'errore 11 viene cancellato dal connettore.
Distribuzioni basate su Debian
Verifica
Le distribuzioni basate su Debian richiedono l'installazione di un pacchetto linux-headers
per il kernel attualmente in esecuzione. Per verificare se un pacchetto linux-headers
è installato per il kernel corrente in esecuzione, eseguire:
apt list linux-headers-$(uname -r)
Se non si ottiene alcun risultato, il pacchetto linux-headers
richiesto risulta mancante e deve essere installato.
Risoluzione
Per installare il pacchetto linux-headers
richiesto, eseguire il comando:
sudo apt install linux-headers-$(uname -r)
Riverificate. L'errore 11 viene cancellato dal connettore dopo circa un minuto.