Der ultimative Leitfaden für Linux-Kernel-Live-Patching-Software
Nach der Datenpanne bei Equifax, die die Folgen ungepatchter Software deutlich gemacht hat, haben Administratoren die heikle Aufgabe sicherzustellen, dass die neuesten Patches vor allem auf öffentlich zugänglichen Servern angewendet werden und gleichzeitig die Ausfallzeiten durch mögliche Abstürze und Neustarts reduziert werden. Es gibt eine Vielzahl von Open-Source-Patching-Tools, aber viele von ihnen erzwingen einen Neustart des Servers. Anstatt ressourcenintensive Open-Source-Patching-Methoden zu verwenden, ist das rebootlose Live-Patching eine bessere Wahl. Live-Patching hält das System auf dem neuesten Stand und schützt es vor den neuesten Schwachstellen, während gleichzeitig die Ausfallzeiten durch Neustarts von kritischen Produktionsservern reduziert werden.
In diesem Beitrag erfahren Sie alles Wissenswerte über das Live-Patching des Linux-Kernels und die Möglichkeiten, wie IT-Mitarbeiter dadurch Zeit sparen können. Egal, ob Sie ein Neuling oder ein Experte auf dem Gebiet des Live-Patching sind, wir stellen sicher, dass Sie ein umfassendes Verständnis der Art und Weise erlangen, wie Live-Patching Ihrem Unternehmen helfen kann, die Konformität mit den neuesten gesetzlichen Standards zu gewährleisten.
Die Geschichte des Live-Patching
Das erste Beispiel für Live-Patching stammt aus dem Jahr 2008, als Jeff Arnold vom MIT ein automatisches System zur Anwendung von Kernel-Sicherheitspatches ohne Neustart entwickelte. Er nannte das System Ksplice, das später von Oracle aufgekauft wurde. Arnold entwickelte die Lösung, nachdem er festgestellt hatte, dass es schwierig war, Linux-Server am MIT zu aktualisieren, ohne die Studenten zu beeinträchtigen. Während er darauf wartete, einen Patch zu aktualisieren, wurde einer von Arnolds Linux-Servern aufgrund eines ungepatchten Kernels mit bekannten Schwachstellen gefährdet.
Oracle schloss den Quellcode schließlich 2011, sodass Administratoren von den Live-Patching-Funktionen abgeschnitten waren. Aufgrund der Maßnahmen von Oracle waren die Linux-Entwickler gezwungen, Alternativen zu finden, von denen viele ihre eigene Live-Patching-Software entwickelten. Viele kommerzielle Anwendungen sind verfügbar, und diese Lösung ist inzwischen zu einer wichtigen Komponente der Linux-Verwaltung geworden und hat viel Zeit für viel beschäftigte IT-Mitarbeiter freigesetzt.
Was beinhaltet ein Kernel-Patch und wie wird er erstellt?
Aktualisierungen von Software, einschließlich Linux und anderer Betriebssysteme, sind lediglich Änderungen an Dateien einer Basisversion. Jede Aktualisierung wird mit einer Versionsnummer versehen. Bei großen Änderungen wird die Versionsnummer ganzzahlig hochgezählt, z. B. von 1.x auf 2.x. Bei kleinen Patches ändert sich möglicherweise nur der Dezimalwert, z. B. von 1.1 auf 1.2. Anhand dieser Versionswerte können Administratoren erkennen, ob es sich um große oder kleine Patches handelt, und sie erhalten eine allgemeine Vorstellung davon, wie lange es dauern könnte, ein System zu patchen.
Bei einem Patch einer Linux-Distribution ist ein Update eine Textdatei, die die Delta-Änderungen zwischen der aktuell installierten Version und den Dateiänderungen der neuen Version enthält. Linux verwendet das diff-Programm , um diese Änderungen zu identifizieren. Nachdem die Textdatei erstellt wurde, verwenden Sie das Patch-Programm , um die Änderungen anzuwenden und die Betriebssystemdateien zu aktualisieren.
Als Beispiel für ein einfaches Patch-Verfahren nehmen Sie an, dass Sie ein Programm mit einer Datei namens sample.c haben, das auf die neueste Version samplev20.c gepatcht werden muss. Mit dem folgenden diff-Befehl wird eine Patch-Datei mit der neuesten Version 2.0 des Programms erstellt:
diff -u beispiel.c beispielv20.c > beispielupdate.patch
Nachdem Sie die Patch-Datei erstellt haben, können Sie das Programm nun patchen. Mit dem folgenden Patch-Befehl wird das Update angewendet:
patch < sampleupdate.patch
Bei größeren Linux-Patches werden die Änderungen auf der Grundlage eines Codezweigs in einem zentralen Repository vorgenommen. Viele der Patching-Tools von Drittanbietern, die im Abschnitt "Die beste Live-Patching-Software finden" erwähnt werden, machen manuelle Patch-Befehle wie das obige Beispiel überflüssig, aber die grundlegenden Schritte sind dieselben.How to Apply Security Patches to Linux Kernel
Linux-Sicherheits-Patches gehören für Administratoren einfach zum Alltag. Sie werden etwas seltener als andere Patches eingespielt, sind aber wahrscheinlich die kritischsten aller Aktualisierungen. Administratoren müssen das Betriebssystem so schnell wie möglich patchen, da Schwachstellen für Hacker offengelegt werden, die sofort Exploits gegen ungepatchte Systeme entwickeln. Gleichzeitig ist dies ein heikles Verfahren, das fehlerfrei durchgeführt werden sollte, da sonst Fehler zu Ausfallzeiten führen.
Es gibt 3 Möglichkeiten, Ihr Linux-System zu patchen, von denen eine ohne Neustart des Systems durchgeführt werden kann. Wir haben alle drei Möglichkeiten bereits ausführlich beschrieben, aber hier ist ein kurzer Überblick über den Prozess.
Anwenden von Sicherheits-Patches auf den Linux-Kernel über die Befehlszeile
Die Verwendung der Kommandozeile ist der einfachste Weg. Die folgende Debian-Befehlssyntax aktualisiert den Kernel:
sudo apt-get upgrade kernel sudo neu starten
Der folgende Befehl aktualisiert Ubuntu:
sudo apt-get upgrade linux-image-generic sudo neu starten
Und die folgenden Befehle aktualisieren CentOS oder Red Hat Enterprise Linux (RHEL):
sudo yum Kernel aktualisieren sudo neu starten
Die Vorteile dieser Methode sind, dass es sich um einen einfachen zweizeiligen Befehl handelt, der keine Installation von Drittanbietern erfordert. Der Nachteil ist, wie Sie dem Befehl entnehmen können, dass Sie einen Neustart benötigen. Bei dieser Methode wird Ihr kritischer Linux-Server für eine gewisse Zeit ausfallen, was bedeutet, dass dies geplant werden muss und die Benutzer über die Ausfallzeit informiert werden müssen.
Überspringen des Bootloaders mit kexec
Linux ist in der Lage, den Bootloader und die Hardware-Initialisierungsphase zu überspringen, was die Zeit für einen Neustart erheblich verkürzt. Sie müssen zunächst kexec installieren und dann dieses Tool auf Ihrem Server ausführen. Mit dem folgenden Befehl wird kexec in Ubuntu und Debian installiert:
sudo apt-get install kexec-tools
Der folgende Befehl kann unter CentOS/RHEL verwendet werden:
sudo yum install kexec-tools
Nach der Installation von kexec können Sie nun das Tool zur Installation von Patches ausführen:
sudo yum update kernel oder sudo rpm -qa kernel
Das Tool kexec zeigt die neueste Version als Ausgabe an. Mit den folgenden Befehlen werden Patches installiert:
sudo kexec -l /boot/vmlinuz-3.10.0-862.3.2.el7.x86_64 -initrd=/boot/initramfs-3.10.0-862.3.2.el7.x86_64.img -reuse-cmdline sudo sync; sudo umount -a; sudo kexec -e
Nach der Installation von Patches müssen Sie trotzdem neu starten. Die Vorteile dieser Option sind eine schnellere Neustartzeit, aber kexec erfordert viel mehr Eingaben. Wie die meisten Administratoren wissen, kann ein Fehler bei einer Befehlszeilenoption stundenlange Ausfallzeiten bedeuten. Der Nachteil dieser Option besteht darin, dass die Möglichkeit menschlicher Fehler zunimmt.
Sicherheitspatches auf den Linux-Kernel anwenden Rebootless-Tools von Drittanbietern verwenden
Linux-Patching-Tools ohne Neustart beseitigen alle Nachteile der beiden vorherigen Optionen. Das einzige Problem mit vielen der Open-Source-Optionen auf dem Markt ist, dass das Patchen auf eine bestimmte Distribution beschränkt ist. Springen Sie zu diesem Abschnitt, um eine Liste der besten Live-Patching-Software mit den jeweiligen Vor- und Nachteilen zu sehen.
Was ist Live-Patching und was ist Patching-Software?
Anstatt eine Patch-Datei manuell zu erstellen, übernimmt Patching-Software den gesamten Overhead für Sie. Diese Programme verkürzen die Zeit, die für das Patchen von Software benötigt wird, und eliminieren die Tipparbeit, die zu menschlichen Fehlern führen kann. Live-Patching geht noch einen Schritt weiter und macht einen Neustart überflüssig, was für Linux-Administratoren eine häufige Herausforderung darstellt.
Für Administratoren ist es immer schwierig, den richtigen Zeitpunkt für Patches zu bestimmen. Es ist wichtig, dass Sicherheitsupdates sofort eingespielt werden, aber Produktionsupdates können nicht einfach nachlässig installiert werden. In der Regel erfordern Aktualisierungen einen Neustart des Systems. Dies bedeutet Ausfallzeiten für Kunden und Mitarbeiter, die die auf dem Server laufenden Anwendungen nutzen müssen. Bei Software-as-a-Service (SaaS) werden Cloud-Anwendungen von Benutzern auf der ganzen Welt genutzt, so dass es für viele Administratoren keine arbeitsfreien Zeiten gibt. Dieses Problem gilt für viele öffentlich zugängliche Webanwendungen.
Mit Live-Patching können Administratoren kritische Linux-Server ohne Neustart patchen, d. h. keine Ausfallzeiten mehr. Ein Beispiel für Live-Patching finden Sie in unserem Live-Patching-Tutorial für Oracle Enterprise Linux 7.
Die beste Live-Patching-Software finden
Sie könnten das Rad neu erfinden und Ihre eigene Live-Patching-Software entwickeln, aber die beste Möglichkeit, schnell zu einem rebootfreien Prozess zu gelangen, ist die Verwendung von Tools von Drittanbietern. Im Folgenden finden Sie eine Liste von Live-Patching-Software mit den Vor- und Nachteilen der einzelnen Programme.
Die folgenden Tools stehen für das rebootlose Patchen zur Verfügung:
- Ksplice von Oracle (für Oracle Linux-Updates, Ksplice Uptrack für Unternehmen)
- Kpatch von Red Hat (für RHEL-Kernel-Aktualisierungen und CentOS-Aktualisierungen)
- Livepatch von Canonical (für Ubuntu-Kernel-Aktualisierungen)
- Kgraft von SUSE (nur für SUSE-Updates)
- KernelCare Unternehmen (für alle gängigen Linux-Distributionen)
Beachten Sie, dass der letzte Punkt in der obigen Liste für alle Linux-Distributionen verfügbar ist. Er ist also die beste Option für Linux-Updates ohne Neustart in einer Umgebung, in der mehrere Distributionen in Produktion sind.
Holen Sie sich eine KOSTENLOSE Testversion von KernelCare Enterprise
Ksplice
Wie bereits erwähnt, ist Ksplice die ursprüngliche rebootlose Patching-Anwendung. Jetzt ist sie nur noch auf Oracle- und Red-Hat-Distributionen beschränkt und erfordert eine Lizenz, um sie zu nutzen. Der einzige Vorteil dieser Software ist, dass sie Linux automatisch aktualisiert. Mit den folgenden Befehlen können Sie es auf Ihrem Linux-System installieren:
sudo wget -N https://ksplice.oracle.com/uptrack/install-uptrack-oc sudo sh install-uptrack-oc -autoinstall
Kpatch
Kpatch wurde 2014 veröffentlicht und ist nur für Red Hat-Distributionen geeignet. Es wurde portiert, um auf CentOS und Fedora und einigen Debian-Systemen wie Ubuntu zu funktionieren. Der Nachteil dieser Anwendung ist, dass die Patches nicht automatisch erfolgen. Das bedeutet, dass die Patchesoftware immer noch von Administratoren ausgelöst werden muss, was sie für Unternehmenssysteme mit Dutzenden von zu verwaltenden Servern weniger wertvoll macht.
Mit dem folgenden Befehl wird Kpatch installiert:
sudo yum install kpatch sudo yum install kpatch-patch-X.X.X.el7.x86_64.rpm
Livepatch
Livepatch aktualisiert den Linux-Kernel automatisch, ohne dass ein Neustart erforderlich ist. Es ist außerdem anpassbar, sodass Administratoren ihre eigenen Patch-Anweisungen erstellen können. Der Nachteil dieser Live-Patching-Software ist, dass sie nur mit nicht komplexen Patches funktioniert und nur eine begrenzte Anzahl von Hosts unterstützt, was dieses Tool auch für Unternehmensadministratoren unattraktiv macht.
Mit dem folgenden Befehl wird Livepatch installiert:
sudo snap install canonical-livepatch sudo canonical-livepatch aktivieren [TOKEN]
Das Argument [TOKEN] erfordert einen bei der Registrierung angegebenen Wert. Sie können ein Registrierungs-Token hier erhalten.
Kgraft
SUSE Linux Enterprise Server 12 enthält die integrierte Live-Patching-Komponente Kgraft. Eine Installation ist nicht erforderlich, sodass Administratoren die Software ohne Änderungen an den Produktionsservern nutzen können. Die Software unterstützt jedoch nur SUSE Linux und ist kommerziell, d. h. nach der 60-tägigen Testphase fallen Lizenzgebühren an.
KernelCare
CloudLinux KernelCare bietet alle Vorteile, die sich Administratoren von einer Live-Patching-Anwendung wünschen, und unterstützt eine breite Palette von Linux-Distributionen. KernelCare unterstützt CentOS, Red Hat, Oracle, Debian, Ubuntu und einige andere. Das Live-Patching erfolgt automatisch und kann einfache und komplexe Aktualisierungen des Betriebssystems verarbeiten. Administratoren können ihre eigenen Patch-Updates anpassen, um bestimmte kritische Schwachstellen sofort zu beheben und weniger schwerwiegende Probleme, die keine Auswirkungen auf das Unternehmen haben, hinauszuzögern.
Einige Vorteile der Verwendung von KernelCare gegenüber anderen Lösungen sind:
- Rebootless Patching für die neuesten und komplexesten Sicherheitslücken in freier Wildbahn.
- Unterstützt unternehmensweite Server mit mehreren Hosts.
- Rollback-Optionen ohne Neustart.
- Anpassen des Patchings durch Datumsangaben und Versionierung.
- Verzögern Sie bestimmte Patches, während Sie kritische Schwachstellen sofort ausbessern.
- Entfernen Sie bestimmte Patches.
Um KernelCare zu installieren, verwenden Sie die folgenden Befehle:
wget -qq -O -- https://kernelcare.com/installer | bash sudo /usr/bin/kcarectl --register <your key>
Den Schlüssel erhalten Sie, indem Sie sich auf dem CloudLinux-Dashboard authentifizieren und die Software nach der 30-tägigen Testphase registrieren.
Schlussfolgerung
Vielbeschäftigte Linux-Administratoren, die für Dutzende von Unternehmensservern verantwortlich sind, könnten Stunden damit verbringen, sicherzustellen, dass Patches installiert sind. Das ist ein Vollzeitjob, aber das muss nicht sein. Live-Patching nimmt den Administratoren einen Großteil der Arbeit ab, die mit Linux-Updates verbunden ist, und spart somit Zeit und dem Unternehmen Geld.
Sie müssen sich nicht gleich für eine Lösung entscheiden, aber CloudLinux KernelCare hat die meisten Vorteile gegenüber anderen Lösungen. Wenn Sie mehr über Live-Patching erfahren möchten, kontaktieren Sie uns für weitere Informationen.