Einleitung
In diesem Artikel wird erläutert, wie Sie feststellen können, wann vorkompilierte Kernelmodule, die für das Dateisystem und die Netzwerküberwachung des Cisco Secure Endpoint Linux-Connectors erforderlich sind, für den derzeit laufenden Systemkernel nicht verfügbar sind. Außerdem wird beschrieben, wie Sie Kernelmodule manuell kompilieren, damit die Überwachung von Dateisystem und Netzwerk betriebsbereit ist.
Für den Zweck dieses Artikels ist ein "nicht unterstützter Kernel" eine Kernelversion, die vom Linux-Connector unterstützt wird, aber die spezifischen vorkompilierten Kernelmodule, die für die Kernelversion erforderlich sind, sind nicht im Connector-Installationspaket enthalten und müssen daher manuell kompiliert werden. Dies kann bei einer bestimmten Linux Connector-Version der Fall sein, die auf einem Betriebssystem ausgeführt wird, das ein fortlaufendes Release-Update verwendet, z. B. Amazon Linux 2.
Nicht alle Linux-Distributionen und Kernel-Versionen unterstützen die Ausführung kompilierter Kernel-Module. Dieser Artikel hilft bei der Identifizierung, wann Kernel-Module manuell kompiliert werden können.
Voraussetzungen
Anforderungen
- Für RHEL-basierte Systeme wurde verteilungsbereitgestelltes gcc installiert. kernel-devel installiert für den aktuell laufenden Kernel.
- Bei Systemen, die einen Unbreakable Enterprise Kernel (UEK) verwenden, wurde der von der Distribution bereitgestellte gcc installiert. kernel-uek-devel installiert für den aktuell laufenden Kernel.
Geltungsbereich
Betriebssystem
- RHEL/CentOS 7
- Oracle Linux 7 Red Hat Compatible Kernel (RHCK)
- Oracle Linux 7 UEK 5 oder frühere Version
- Amazon Linux 2
Kernel-Versionen
- Das Kernelmodul zur Netzwerküberwachung kann für die Kernelversionen 2.6 bis 4.14 einschließlich kompiliert werden.
- Das Kernelmodul zur Dateisystemüberwachung kann für die Kernelversionen 3.10 bis 4.14 einschließlich kompiliert werden.
HINWEISE:
- Bei Kernel-Versionen 2.6 bis 3.10 verwendet der Connector redirfs (ein Out-of-Tree-Kernelmodul) zur Überwachung des Dateisystems, was für die benutzerdefinierte Kompilierung nicht anwendbar ist.
- Die Kernel-Versionen zwischen 4.14 und 4.19 sind nicht mit dem Connector kompatibel und gelten auch nicht für die benutzerdefinierte Kompilierung.
- Für die Kernel-Versionen 4.19 und höher verwendet der Connector eBPF-Module für die Dateisystem- und Netzwerküberwachung. Im Artikel Linux Kernel-Devel Fault finden Sie Details zur Behebung dieses Fehlers in diesen Kernel-Versionen.
Connector-Versionen
- 1.16.0 und höher
- 1.18.0 und neuer für die Erstellung benutzerdefinierter UEK-Kernelmodule
Diagnose eines nicht unterstützten Kernels
Wenn der Connector auf einem Computer mit einem nicht unterstützten Kernel ausgeführt wird, werden Fehler 8 (Echtzeit-Dateisystemmonitor konnte nicht gestartet werden) und Fehler 9 (Echtzeit-Netzwerkmonitor konnte nicht gestartet werden) ausgelöst, und der Connector wird in einem heruntergestuften Zustand ohne Dateisystem- oder Netzwerküberwachung ausgeführt.
Die folgenden Schritte können von einem Terminalfenster aus ausgeführt werden, um festzustellen, ob der Connector auf einem nicht unterstützten Kernel ausgeführt wird:
- Stellen Sie sicher, dass Fehler 8 und/oder Fehler 9 am Stecker ausgelöst wurde:
$ /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.
- Stellen Sie sicher, dass der aktuell laufende Kernel zwischen 2.6 und 4.14 liegt, einschließlich, und dass er keiner der vorkompilierten Versionen des Kernelmoduls entspricht.
Der folgende Befehl zeigt die aktuelle Kernel-Version an:
$ uname -r
4.14.97-90.72.amzn2.x86_64
Die verfügbaren vorkompilierten Kernelmodulversionen, die mit dem Connector verpackt sind, werden mit dem folgenden Befehl aufgelistet:
$ 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
Im obigen Beispiel ist die Kernelversion 4.14.97-90.72.amzn2.x86_64 nicht in der Liste der verfügbaren Kernelmodule enthalten.
Der Linux-Connector eignet sich zum Kompilieren benutzerdefinierter Kernelmodule, wenn alle der folgenden Bedingungen zutreffen:
- Fehler 8 und/oder 9 des Steckverbinders wurden ausgelöst.
- Die aktuelle Kernel-Version liegt zwischen 2.6 und 4.14, einschließlich.
- Die aktuelle Kernel-Version ist nicht in der Liste der vorkompilierten Kernel-Module enthalten
/opt/cisco/amp/bin/modules
Auflösung
Wenn ein Linux-Connector auf einem nicht unterstützten Kernel ausgeführt wird, kann das folgende Verfahren verwendet werden, um benutzerdefinierte Kernelmodule für das System zu kompilieren:
- Installieren der erforderlichen Systemabhängigkeiten:
$ yum install gcc
gcc
ist erforderlich, um die Kernelmodule mit spezifischen Optionen zu kompilieren.
- Auf Systemen, die einen RHEL-basierten Kernel verwenden, verwenden Sie den folgenden Befehl, um das erforderliche Kernel-Paket zu installieren:
$ yum install kernel-devel-$(uname -r)
-
Auf Systemen, die UEK verwenden, verwenden Sie den folgenden Befehl, um das erforderliche Kernel-Paket zu installieren:
$ yum install kernel-uek-devel-$(uname -r)
Abhängig von Ihrem System ist kernel-devel-$(uname -r) orkernel-uek-devel-$(uname -r)
erforderlich, um die Kernelmodule für den aktuell laufenden Kernel zu kompilieren.
-
Führen Sie das Skript compile_kmods.sh mit den Root-Berechtigungen aus:
$ sudo /opt/cisco/amp/bin/compile_kmods.sh
Das Skript compile_kmods.sh versucht, die Kernelmodule zur Überwachung des Dateisystems und des Netzwerks für die aktuelle Kernel-Version zu kompilieren. Die benutzerdefinierten Kernelmodule werden im Verzeichnis /opt/cisco/amp/extras/modules
erstellt. Am Ende der Ausführung startet das Skript den Connector automatisch neu, sodass die neu kompilierten Kernelmodule auf das System geladen werden können.
- Vergewissern Sie sich, dass die Fehler 8 und 9 behoben wurden:
$ /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
Weitere Befehle
Die ausführbare Datei compile_kmods.sh ist in Secure Endpoint Linux Connector Version 1.16.0 und höher verfügbar und wird automatisch auf kompatiblen OS-Distributionen installiert. Die ausführbare Datei compile_kmods.sh wurde in Secure Endpoint Linux Connector Version 1.18.0 und neuer verbessert, um die benutzerdefinierte Kompilierung von UEKs zu unterstützen.
Benutzerdefinierte Kompilierung von Kernelmodulen für die Netzwerküberwachung wird von den Kernelversionen 2.6 bis 4.14 unterstützt, während benutzerdefinierte Kompilierung von Kernelmodulen für die Dateisystemüberwachung von den Kernelversionen 3.10 bis 4.14 unterstützt wird.
Verfügbare Befehle
HINWEIS: Die ausführbare Datei compile_kmods.sh muss mit Root-Berechtigungen ausgeführt werden.
Fehlerbehebung
Wenn Fehler 8 und/oder 9 auch nach Befolgung der Behebungsschritte noch ausgelöst werden, können die folgenden Schritte ausgeführt werden, um das Problem weiter zu untersuchen: