11 Live-Kernel-Patching mit KLP #
In diesem Dokument werden die Grundlagen der Kernel Live Patching-Technologie (KLP) erläutert und Sie finden hier Richtlinien für den SLE Live Patching-Dienst.
Mit KLP können die neuesten Sicherheitsaktualisierungen ohne Neustart auf Linux-Kernel angewendet werden. So erzielen Sie die maximale Betriebszeit und Verfügbarkeit des Systems, was insbesondere bei unternehmenswichtigen Systemen von Bedeutung ist.
Die Angaben in diesem Dokument gelten für die AMD64/Intel 64-, POWER- und IBM Z-Architekturen.
11.1 Vorteile des Kernel Live Patching #
KLP bietet mehrere Vorteile.
Wenn Unternehmen bestimmte Compliance-Zertifizierungen beantragen oder beibehalten möchten, sind sie darauf angewiesen, eine große Anzahl an Servern automatisch auf dem neuesten Stand zu halten. KLP kann dazu beitragen, die Compliance zu erzielen und gleichzeitig den Bedarf an kostspieligen Wartungsfenstern zu senken.
Unternehmen, die mit Verträgen zur Vereinbarung zum Servicelevel arbeiten, müssen für Ihr System ein bestimmtes Maß an Verfügbarkeit und Betriebszeit garantieren. Mit Live Patching ist es möglich, Systeme ohne Ausfallzeiten zu patchen.
KLP ist Teil des standardmäßigen Systemaktualisierungsmechanismus, sodass keine besondere Schulung oder Einführung komplizierter Wartungsroutinen anfällt.
11.2 Überblick über Kernel Live Patching #
Kernel-Live-Patches werden in Form von Paketen mit modifiziertem Code bereitgestellt, die vom Kernel-Hauptpaket getrennt sind. Die Live-Patches sind kumulativ; der jeweils neueste Patch enthält also alle Fehlerbehebungen aus den vorhergehenden Patches für das Kernel-Paket. Jedes Kernel-Live-Paket ist an die genaue Kernel-Version gebunden, für die es ausgegeben wird. Die Versionsnummer des Live-Patch-Pakets erhöht sich bei jedem Hinzufügen von Fehlerbehebungen.
Um den Kernel-Patching-Status zu bestimmen, verwenden Sie den Befehl klp -v
patches
. Die Ausgabe des Befehls uname
ändert sich für gepatchte Kernel nicht.
Live-Patches enthalten nur wichtige Korrekturen und ersetzen keine regulären Kernel-Updates, die einen Neustart erfordern. Betrachten Sie Live-Patches als vorübergehende Maßnahmen, die den Kernel schützen, bis ein ordnungsgemäßes Kernel-Update und ein Neustart vorgenommen werden.
Das folgende Diagramm veranschaulicht die allgemeine Beziehung zwischen Live-Patches und Kernel-Updates. Die Liste der CVEs (Common Vulnerabilities and Exposures) und Fehlerberichte, die vom derzeit aktiven Live-Patch behoben wurden, kann mit dem Befehl klp -v
patches
angezeigt werden.
Es ist möglich, mehrere Versionen des Kernel-Pakets zusammen mit den jeweiligen Live-Patches zu installieren. Diese Pakete lösen keine Konflikte aus. Sie können aktualisierte Kernel-Paket zusammen mit Live-Patches für den ausgeführten Kernel installieren. In diesem Fall werden Sie möglicherweise aufgefordert, das System neu zu starten. Benutzer mit SLE Live Patching-Abonnements haben Anspruch auf technischen Support, solange Live-Patch-Aktualisierungen für den ausgeführten Kernel vorliegen (siehe Abschnitt 11.5.1, „Prüfen des Ablaufdatums des Live-Patches“).
Wenn KLP aktiviert ist, umfasst jede Kernel-Aktualisierung auch ein Live-Patch-Paket. Dieser Live-Patch enthält keine Korrekturen und dient als Seed für zukünftige Live-Patches für den entsprechenden Kernel. Diese leeren, grundlegenden Patches werden als initial patches
bezeichnet.
11.2.1 Umfang des Kernel Live Patching #
Das Live-Patching von SLE umfasst Korrekturen für Schwachstellen und Fehlerbehebungen des SUSE Common Vulnerability Scoring System (CVSS; SUSE CVSS basiert auf dem CVSS v3.0-System) Level 7+ in Verbindung mit Systemstabilität oder Datenbeschädigungen. Es ist jedoch nicht in jedem Fall technisch praktikabel, Live-Patches für alle Fehlerbehebungen in den angegebenen Kategorien zu erstellen. SUSE behält sich daher das Recht vor, Fehlerbehebungen in Situationen zu überspringen, in denen ein Kernel-Live-Patch aus technischen Gründen nicht möglich ist. Derzeit werden mehr als 95 % der geeigneten Fehlerbehebungen als Live-Patches bereitgestellt. Weitere Informationen zum CVSS (der Grundlage für die SUSE-CVSS-Einstufung) finden Sie unter Common Vulnerability Scoring System SIG.
11.2.2 Einschränkungen des Kernel Live Patching #
Kernel Live Patching (KLP) umfasst das Ersetzen von Funktionen und das ordnungsgemäße Verarbeiten des Austauschs von voneinander abhängigen Funktionssätzen. Hierbei werden Aufrufe von älterem Code an aktualisierten Code weitergeleitet, der sich an einem anderen Speicherort befindet. Änderungen in den Datenstrukturen erschweren die Situation, da die Daten beibehalten werden und nicht erweitert oder neu interpretiert werden können. Es gibt zwar einige Methoden für die indirekte Veränderung von Datenstrukturen, doch bestimmte Fehlerbehebungen können nicht in Live-Patches konvertiert werden. In dieser Situation ist ein Neustart des Systems die einzige Möglichkeit, die Fehlerbehebungen anzuwenden.
11.3 Aktivieren von Kernel Live Patching mit YaST #
Um KLP auf Ihrem System zu aktivieren, benötigen Sie aktive Live-Patching-Abonnements für SLES und SLE. Besuchen Sie das SUSE Customer Center, um den Status Ihrer Abonnements zu überprüfen und einen Registrierungscode für das SLE-Live-Patching-Abonnement zu erhalten.
So aktivieren Sie Kernel Live Patching auf dem System:
Führen Sie den Befehl
yast2 registration
aus und klicken Sie auf .Wählen Sie in der Liste der verfügbaren Erweiterungen den Eintrag
und klicken Sie auf .Bestätigen Sie die Lizenzvereinbarung und klicken Sie auf
.Geben Sie Ihren Registrierungscode für SLE Live Patching ein und klicken Sie auf
.Prüfen Sie die
und die ausgewählten . Die SchemataLive Patching
undSLE Live Patching Lifecycle Data
sollten automatisch für die Installation zusammen mit zusätzlichen Paketen ausgewählt werden, um Abhängigkeiten gerecht zu werden.Schließen Sie die Installation mit
ab. Dadurch werden die Basiskomponenten von Kernel Live Patching auf Ihrem System installiert sowie der ursprüngliche Live-Patch und die erforderlichen Abhängigkeiten.
11.4 Aktivieren von Kernel Live Patching über die Befehlszeile #
Um Kernel Live Patching zu aktivieren, benötigen Sie aktive Live-Patching-Abonnements für SLES und SLES. Besuchen Sie das SUSE Customer Center, um den Status Ihrer Abonnements zu überprüfen und einen Registrierungscode für das SLES-Live-Patching-Abonnement zu erhalten.
Führen Sie
sudo SUSEConnect --list-extensions
. Beachten Sie den genauen Aktivierungsbefehl für SLES Live Patching. Beispielausgabe des Befehls (gekürzt):$ SUSEConnect --list-extensions ... SUSE Linux Enterprise Live Patching 15 SP6 x86_64 Activate with: SUSEConnect -p sle-module-live-patching/15.6/x86_64 \ -r ADDITIONAL REGCODE
Aktivieren Sie SLES Live Patching mit dem erhaltenen Befehl, gefolgt von
-r LIVE_PATCHING_REGISTRATION_CODE
, beispielsweise:SUSEConnect -p sle-module-live-patching/15.6/x86_64 \ -r LIVE_PATCHING_REGISTRATION_CODE
Installieren Sie die erforderlichen Pakete und Abhängigkeiten mit dem Befehl
zypper install -t pattern lp_sles
.
Zu diesem Zeitpunkt sind die Live-Patches für das System bereits angewendet.
So funktioniert der Prozess hinter den Kulissen: Wenn das Paketinstallationssystem erkennt, dass ein installierter Kernel vorhanden ist, der live gepatcht werden kann, und dass ein Live-Patch dafür im Software-Kanal vorhanden ist, wählt das System den Live-Patch für die Installation aus. Der Kernel erhält dann die Live-Patch-Fehlerbehebungen als Teil der Paketinstallation. Der Live-Patch für den Kernel wird noch vor Abschluss der Produktinstallation durchgeführt.
11.5 Durchführen von Kernel Live Patching #
Kernel-Live-Patches werden im Rahmen von regulären Systemaktualisierungen installiert. Es sind jedoch einige Dinge zu beachten.
Der Kernel ist live-gepatcht, wenn ein kernel-livepatch-*-Paket für den aktuellen Kernel installiert wurde. Mit dem Befehl
zypper se --details kernel-livepatch-*
können Sie prüfen, welche Kernel-Live-Patch-Pakete auf Ihrem System installiert sind.Wenn das Paket kernel-default installiert ist, fordert der Update-Manager Sie auf, das System neu zu starten. Damit diese Meldung nicht angezeigt wird, können Sie Kernel-Aktualisierungen aus dem Patching-Vorgang herausfiltern. Hierzu können Sie Paketsperren mit Zypper hinzufügen. SUSE Manager ermöglicht auch das Filtern von Kanalinhalten (siehe Live Patching with SUSE Manager).
Sie können den Patching-Status mit dem Befehl
klp status
prüfen. Zur Untersuchung installierter Patches führen Sie den Befehlklp -v patches
aus.Denken Sie daran: Es können zwar mehrere Kernel-Pakete auf dem System installiert sein, doch es kann immer nur eines dieser Pakete ausgeführt werden, nicht mehrere Pakete gleichzeitig. Ebenso können mehrere Live-Patch-Pakete installiert sein, doch es wird immer nur ein Live-Patch in den Kernel geladen.
Der aktive Live-Patch ist in der
initrd
enthalten. Bei einem unvorhergesehenen Neustart fährt das System also mit den angewendeten Live-Patches hoch, sodass Sie das Patching nicht wiederholen müssen.
11.5.1 Prüfen des Ablaufdatums des Live-Patches #
Stellen Sie sicher, dass das lifecycle-data-sle-module-live-patching installiert ist, und führen Sie dann den Befehl zypper lifecycle
aus. Im Abschnitt Package end of support if
different from product
der Ausgabe sehen Sie das Ablaufdatum für den jeweiligen Live-Patch.
Jeder Live-Patch wird ein Jahr ab Veröffentlichung des zugrunde liegenden Kernel-Pakets aktualisiert. Auf der Seite Maintained kernels, patch updates and lifecycle können Sie das Ablaufdatum anhand der ausgeführten Kernel-Version prüfen, ohne die Produkterweiterung zu installieren.
11.6 Fehlerbehebung bei Kernel Live Patching-Problemen #
11.6.1 Manuelles Patch-Downgrade #
Wenn der neueste Live-Patch Probleme verursacht, können Sie ein Downgrade des aktuell installierten Live-Patches auf die vorhergehende Version durchführen. Es wird empfohlen, das Patch-Downgrade vorzunehmen, bevor das System erste Probleme zeigt. Denken Sie daran, dass ein System mit Kernel-Warnungen oder Kernel-Fehlerspuren im Systemprotokoll unter Umständen nicht für das Patch-Downgrade-Verfahren geeignet ist. Wenn Sie nicht sicher sind, ob das System die Anforderungen für ein Patch-Downgrade erfüllt, fragen Sie den technischen Support von SUSE.
Ermitteln Sie den automatischen Live-Patch mit dem Befehl
klp -v patches
. Der aktuell ausgeführte Patch befindet sich in der Zeile, die mitRPM:
beginnt. Beispiel:RPM: kernel-livepatch-6_4_0-150600_9-default-1-150600.2.36.x86_64
6_4_0-150600_9-default
im Beispiel oben bezeichnet die genaue ausgeführte Kernel-Version.Verwenden Sie den Befehl
zypper search -s kernel-livepatch-RUNNING_KERNEL_VERSION-default
, um nach früheren Patch-Versionen zu suchen. Der Befehl gibt eine Liste der verfügbaren Paketversionen zurück. Denken Sie daran, dass die Versionsnummer bei jeder Veröffentlichung eines neuen Live-Patch-Pakets um eins erhöht wird. Wählen Sie die Versionsnummer aus, die um eine Veröffentlichung niedriger ist als die aktuelle Version.Installieren Sie die gewünschte Version mit dem Befehl
zypper in --oldpackage kernel-livepatch-RUNNING_KERNEL_VERSION-default=DESIRED_VERSION
.