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 SLA-Verträgen arbeiten, müssen eine definierte 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.
Live-Patches enthalten lediglich kritische Fehlerbehebungen und ersetzen nicht die regulären Kernel-Aktualisierungen, für die ein Neustart erforderlich ist. Live-Patches sind quasi vorübergehende Maßnahmen zum Schutz des Kernels, bis eine ordnungsgemäße Kernel-Aktualisierung und ein Neustart durchgeführt werden.
Das nachfolgende Diagramm zeigt die Beziehungen zwischen Live-Patches und Kernel-Aktualisierungen. Die Liste der CVEs und Fehlerberichte, die im derzeit aktiven Live-Patch behandelt werden, wird mit dem Kommando klp -v
patches
abgerufen.
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 Fehlerbehebungen, sondern dient als Grundlage für kü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 #
SLE Live Patching umfasst Fehlerbehebungen für Sicherheitsrisiken ab Stufe 7 des SUSE Common Vulnerability Scoring-Systems (CVSS; SUSE CVSS beruht auf dem CVSS-3.1-System) sowie Fehlerkorrekturen im Hinblick auf die Systemstabilität oder auf beschädigte Daten. 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 #
Das KLP umfasst den Austausch von Funktionen und die behutsame Ersetzung von Funktionssätzen, die voneinander abhängig sind. Hierbei werden Aufrufe von älterem Code an aktualisierten Code weitergeleitet, der sich an einem anderen Speicherort befindet. Veränderungen in den Datenstrukturen erschweren die Situation, da die Daten am bisherigen Ort verbleiben 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 #
Für die Aktivierung von Kernel Live Patching benötigen Sie aktive Abonnements für SLES und SLE Live Patching. Prüfen Sie im SUSE Customer Center den Status Ihrer Abonnements und rufen Sie einen Registrierungscode für das SLE Live Patching-Abonnement ab.
So aktivieren Sie Kernel Live Patching auf dem System:
Führen Sie das Kommando
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 zur Installation ausgewählt werden, ebenso wie weitere Pakete, die Abhängigkeiten berücksichtigen.Schließen Sie die Installation mit
ab. Dadurch werden auf Ihrem System die Basiskomponenten von Kernel Live Patching sowie der ursprüngliche Live-Patch und die erforderlichen Abhängigkeiten installiert.
11.4 Aktivieren von Kernel Live Patching über die Kommandozeile #
Für die Aktivierung von Kernel Live Patching benötigen Sie aktive Abonnements für SLES und SLES Live Patching. Prüfen Sie im SUSE Customer Center den Status Ihrer Abonnements und rufen Sie einen Registrierungscode für das SLES Live Patching-Abonnement ab.
Führen Sie
sudo SUSEConnect --list-extensions
. Beachten Sie das genaue Aktivierungskommando für SLES Live Patching. Beispielausgabe des Kommandos (gekürzt):$ SUSEConnect --list-extensions ... SUSE Linux Enterprise Live Patching 15 SP5 x86_64 Activate with: SUSEConnect -p sle-module-live-patching/15.5/x86_64 \ -r ADDITIONAL REGCODE
Aktivieren Sie SLES Live Patching mit dem erhaltenen Kommando, gefolgt von
-r LIVE_PATCHING_REGISTRATION_CODE
, beispielsweise:SUSEConnect -p sle-module-live-patching/15.5/x86_64 \ -r LIVE_PATCHING_REGISTRATION_CODE
Installieren Sie die erforderlichen Pakete und Abhängigkeiten mit dem Kommando
zypper install -t pattern lp_sles
Zu diesem Zeitpunkt sind die Live-Patches für das System bereits angewendet.
So läuft der Prozess hinter den Kulissen ab: Wenn das Paketinstallationssystem erkennt, dass ein Live-Patch für einen installierten Kernel angewendet werden kann und dass ein Live-Patch für diesen Kernel im Software-Kanal vorliegt, wählt das System den Live-Patch zur 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 Kommando
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 Kommando
klp status
prüfen. Zur Untersuchung installierter Patches führen Sie das Kommandoklp -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 #
Vergewissern Sie sich, dasslifecycle-data-sle-module-live-patching installiert ist, und führen Sie das Kommando 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 Kommando
klp -v patches
. Der aktuell ausgeführte Patch befindet sich in der Zeile, die mitRPM:
beginnt. Beispiel:RPM: kernel-livepatch-5_3_18-24_29-default-2-2.1.x86_64
5_3_18-24_29-default
im Beispiel oben bezeichnet die genaue ausgeführte Kernel-Version.Verwenden Sie das Kommando
zypper search -s kernel-livepatch-RUNNING_KERNEL_VERSION-default
, um nach früheren Patch-Versionen zu suchen. Das Kommando 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 Kommando
zypper in --oldpackage kernel-livepatch-RUNNING_KERNEL_VERSION-default=DESIRED_VERSION
.