Wie man Sicherheits-Patches für den Linux-Kernel anwendet: 3 verschiedene Wege (2023)
Linux-Kernel-Updates sind eine Tatsache des Lebens. Sie sind so langweilig wie Steuern und machen ungefähr so viel Spaß wie ein Besuch beim Zahnarzt. Aber Systemadministratoren müssen ständig Patches bereitstellen: Neu entdeckte Sicherheitslücken im Linux-Kernel scheinen mit monotoner Regelmäßigkeit aufzutauchen. In den meisten, aber nicht allen Fällen folgen die Patches, die zur Behebung dieser Schwachstellen erforderlich sind, sehr schnell.
Die Installation der neuesten Sicherheits-Patches für den Linux-Kernel ist mit viel Arbeit verbunden, und die praktischen Gegebenheiten können dazu führen, dass sich die Patches verzögern. Aber wenn Sie zu lange warten, geben Sie Bedrohungsakteuren die Möglichkeit, eine ungepatchte Sicherheitslücke auszunutzen.
Deshalb ist es so wichtig, den besten Weg zu finden, um so schnell wie möglich zu flicken.
Die Beliebtheit von Linux als Plattform für Webhosting-Dienste, eigenständige Webserver und Webanwendungen macht es zu einem bevorzugten Ziel. Hacker nutzen Techniken wie Remote Code Execution (RCE), Cross-Site Scripting (XSS) und Denial-of-Service-Angriffe (DoS).
Linux-Instanzen mit den neuesten Patches für das Betriebssystem und die Anwendungssoftware auf dem neuesten Stand zu halten, ist eine der effektivsten Methoden, um die Systemsicherheit zu stärken und sich gegen diese Art von Cyber-Bedrohungen zu schützen.
Dies ist jedoch eine störende und zeitraubende Aufgabe, da die meisten Kernel-Upgrades und Sicherheits-Patches für Linux einen Neustart des Systems erfordern. In diesem Artikel wird erklärt, wie Sie Linux-Kernel ohne Neustart aktualisieren können. Ich gehe auf drei verschiedene Methoden für einige der beliebtesten Linux-Kernel ein. Diese Methoden sind:
- über die Befehlszeile;
- mit kexec;
- mit rebootlosen Live-Kernel-Patching-Tools: Oracle Ksplice Uptrack, Canonical Livepatch, Red Hats Kpatch, SUSE Kgraft (SLE Live Patching) und KernelCare Enterprise.
-
Befehlszeile
Dies ist die Standardmethode, um eine Kernel-Aktualisierung über das Repository des Linux-Distributors durchzuführen. Diese Methode finden Sie am ehesten in der Dokumentation des Herstellers.
- Unter Ubuntu können Sie diese Befehle in einem Terminal verwenden:
sudo apt-get upgrade linux-image-generic sudo neu starten
- Unter Debian verwenden Sie:
sudo apt-get upgrade kernel sudo neu starten
- Für jede RPM-basierte Distribution, einschließlich CentOS und Red Hat Enterprise Linux (RHEL), verwenden Sie dies:
sudo yum Kernel aktualisieren sudo neu starten
So weit, so einfach. Aber es gibt einen Haken: Der Kernel-Patch wird erst nach einem Neustart wirksam.
Neustart? Ja. Sie müssen Ihre Benutzer abmelden, Ihre Dateien speichern und Prozesse schließen - auch auf die Gefahr hin, dass Sie damit viele Leute sehr unglücklich machen. Zum Beispiel jemand, der gerade einen Kauf auf Ihrer Website tätigt. Anschließend müssen Sie warten, bis Ihr Linux-Server wieder hochgefahren ist und seinen vorherigen Zustand wiederhergestellt hat.
Wie lange dauert es, bis Ihre Server wieder einsatzbereit sind? Werden Kunden und andere Beteiligte das bemerken? Selbst wenn das Risiko gering ist, dass sie es bemerken, müssen Sie sie informieren, bevor Sie den Kernel-Patch installieren.
Dies ist ein Grund, warum viele Systemadministratoren die Installation von Patches aufschieben, um Ausfallzeiten zu vermeiden, aber die Systemsicherheit zu gefährden.
PRO: Keine Installation.
CONS: Nicht automatisiert. Neustart erforderlich.
-
kexec: Schnellere Reboots
Sie können den Schritt des Neustarts beschleunigen, indem Sie kexec. Mit diesem Systemaufruf des Linux-Kernels können Sie direkt in einen neuen Kernel booten, den Bootloader und die Hardware-Initialisierung überspringen und so die Zeit für den Neustart erheblich verkürzen.
Um es zu verwenden, müssen Sie zunächst die kexec-Werkzeuge.
- Unter Ubuntu/Debian:
sudo apt-get install kexec-tools
Es wird ein Konfigurationsfenster angezeigt, das in etwa so aussieht:
- Unter CentOS/RHEL:
sudo yum install kexec-tools
Als nächstes installieren Sie den neuen Kernel. Listen Sie die Kernel auf und wählen Sie dann den gewünschten Kernel aus:
sudo yum update kernel
oder
sudo rpm -qa kernel
Die Ausgabe sollte in etwa so aussehen.
kernel-3.10.0-514.26.1.el7.x86_64 kernel-3.10.0-862.3.2.el7.x86_64
Booten Sie nun mit der von Ihnen gewählten Kernel-Version:
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
Wenn Sie keine Geduld haben, können Sie den nächsten Befehl verwenden (aber beachten Sie vorher die Warnung unten):
sudo kexec -e
WARNUNG! Die Verwendung des obigen Befehls kommt einem Stromausfall Ihres Servers gleich, ohne dem Befehl reboot Zeit zu geben, Ihre Prozesse ordnungsgemäß zu beenden, Ihre Dateicaches zu synchronisieren und Ihre Dateisysteme auszuhängen. Die Verwendung dieses Befehls kann zu Datenverlust oder -beschädigung führen.
Schnellerer Start. Einmalige Installation.
Mehr Fingerarbeit (und höhere Fehleranfälligkeit, wenn man es nicht gut schreibt).
-
Aktualisieren Sie Ihren Kernel ohne Neustart
Ja, Sie haben richtig gelesen. Dort ist eine Möglichkeit, den Linux-Kernel ohne Neustart zu aktualisieren.
Es gibt Zeiten, in denen Sicherheits-Patches äußerst wichtig sind und Sie sie einfach erledigen müssen. Gleichzeitig sind die Prozesse, die beim Neustart angehalten werden müssen, ebenso kritisch. Wenn Sie ein "immer eingeschaltetes" oder "hochverfügbares" System betreiben, werden Sie mit diesem Dilemma vertraut sein.
Eine Kernel-Aktualisierung ohne Neustart bedeutet, dass Sie "Ihren Kuchen haben und ihn (auch) essen können". Rebootlose Aktualisierungen, auch bekannt als Live-Kernel-Patchingbekannt, sind kein Ersatz für vollständige Kernel-Upgrades, da sie nur Patches für Sicherheitslücken oder kritische Fehlerbehebungen anwenden.
Updates ohne Neustart sind jedoch wie eine Wunderwaffe zur Behebung von Sicherheitslücken. Wenn man die wirklich dringenden Dinge betrachtet, dann sind Updates für Sicherheitslücken und Fehlerbehebungen wirklich alles, was man braucht. Mit Live-Patching-Methoden ist es möglich, einen Server jahrelang vor Bedrohungen zu schützen, ohne ihn jemals neu zu starten.
Viele führende Linux-Anbieter bieten ein Tool an, mit dem sich Kernel-Updates ohne Neustart durchführen lassen. Welches Tool Sie wählen, hängt zum Teil von der Distribution ab, die Sie einsetzen, und davon, ob Sie bereits einen Supportvertrag mit dem Anbieter abgeschlossen haben. Im weiteren Verlauf dieses Artikels werden wir uns mit den folgenden Produkten befassen:
- Ksplice von Oracle (für Oracle Linux-Updates, Ksplice Uptrack für Unternehmensanwender)
- kPatch von Red Hat (für RHEL-Kernel-Aktualisierungen und CentOS-Aktualisierungen)
- Livepatch von Canonical (für Ubuntu-Kernel-Aktualisierungen)
- kGFloß von SUSE (nur für SUSE-Updates)
- KernelCare Unternehmen (für alle gängigen Linux-Distributionen)
Oracle Ksplice
Ksplice war die erste kommerziell erhältliche Implementierung von Kernel-Updates ohne Neustart. Ksplice Inc. wurde schließlich von Oracle übernommen und ist jetzt (wenig überraschend) nur noch für Oracle Linux und RedHat Enterprise Linux Distributionen verfügbar. Der Einsatz von Ksplice erfordert eine Lizenz von Oracle, die teuer werden kann.
Führen Sie es aus, um es einzusetzen:
sudo wget -N https://ksplice.oracle.com/uptrack/install-uptrack-oc
sudo sh install-uptrack-oc -autoinstall
Sie werden feststellen, dass es keinen Neustart-Befehl gibt und dass Sie das Installationsskript nur einmal während der Lebensdauer des Servers ausführen müssen. Danach wird das Uptrack Dienst automatisch neue Kernel-Updates erkennen und die Aktualisierungen verteilen. Es gibt nichts mehr zu tun: keine Zeitplanung und keine Ausfallzeiten.
Kein Neustart erforderlich. Automatische Updates.
Nur für Oracle-Distributionen. Erfordert eine Support-Lizenz.
Kanonischer Livepatch-Dienst
Livepatch ist die Technologie von Canonical für (raten Sie mal?) Live-Patches von Kerneln. (Canonical ist das Unternehmen, das hinter der beliebten Linux-Distribution Ubuntu steht.) Mit dem Tool können Sie auch Ihre eigenen Patches erstellen, aber das ist eine schwierige und zeitaufwändige Arbeit. (Einige Anbieter erstellen gegen eine Gebühr einen Ubuntu-Upgrade-Kernel für Sie.)
Der Livepatch-Dienst ist für Ubuntu 16.04 und höher sowie für RHEL 7.x (Beta) verfügbar. Livepatch wird wie folgt bereitgestellt:
sudo snap install canonical-livepatch
sudo canonical-livepatch enable [TOKEN]
Anmerkung: Der Canonical Livepatch-Service ist für die persönliche Nutzung auf bis zu 3 Rechnern kostenlos, wenn Sie Ubuntu One-Mitglied sind. Für die kommerzielle Nutzung ist ein Ubuntu Pro-Abonnement erforderlich.
Kein Neustart erforderlich. Automatische Kernel-Updates.
Nicht-triviale benutzerdefinierte Kernel-Patches. Beschränkung der Anzahl der aktualisierbaren Hosts. Zusätzliche Hosts und kommerzielle Nutzung sind kostenpflichtig.
Red Hat kpatch
kpatch ist das eigene Kernel-Patching-Tool von Red Hat. Es wurde 2014 angekündigt und wurde portiert auf andere Distributionen der gleichen Familie (Fedora, CentOS) sowie auf einige Debian-basierte Systeme (Ubuntu, Gentoo) portiert.
Hier ist ein Beispiel für die Bereitstellung unter RHEL 7:
sudo yum install kpatch
sudo yum install kpatch-patch-X.X.X.el7.x86_64.rpm
Im Gegensatz zum Livepatch-Dienst von Ubuntu oder zu Ksplice von Oracle handelt es sich nicht um einen automatischen Live-Patching-Dienst. Sie müssen manuell nach neuen Patches suchen und jeden Kernel-Patch installieren, sobald er verfügbar ist.
Kein Neustart erforderlich.
Nicht automatisiert. Funktioniert mit einer begrenzten Anzahl von Distributionen.
SUSE kGraft
Bei kGraft handelt es sich um das Live-Patching-Angebot von SUSE (bekannt als SUSE Linux Enterprise Live Patching), das fast zeitgleich mit der Lösung von Red Hat entwickelt und angekündigt wurde. Es funktioniert nur mit dem SUSE-eigenen Linux Enterprise Server 12 und wird vorinstalliert geliefert, sodass Sie nichts weiter tun müssen, als dafür zu bezahlen. Es funktioniert nach einem anderen Prinzip als die meisten anderen Ansätze, hat aber einen mit kpatch vergleichbaren Funktionsumfang.
Keine Installation erforderlich. Kein Neustart erforderlich.
Unterstützung einer einzigen Plattform. Kommerziell (aber es gibt eine kostenlose 60-Tage-Testversion).
KernelCare
Der ebenfalls 2020 eingeführte Linux-Kernel-Live-Patching-Service von TuxCare, KernelCare, hebt sich aus zwei Gründen von den bisher vorgestellten Kernel-Patching-Lösungen ab. Erstens deckt KernelCare eine breite Palette von Linux-Distributionen ab, darunter CentOS, RHEL (bereits ab RHEL 6), Oracle Linux, Debian, Ubuntu und viele mehr. Zweitens ist KernelCare im Vergleich zum Abschluss eines herstellerspezifischen Supportvertrags, wie er oben aufgeführt ist, günstiger.
Hier erfahren Sie, wie Sie KernelCare installieren:
wget -qq -O -- https://kernelcare.com/installer | bash sudo /usr/bin/kcarectl --register <your key>
KernelCare ist eine "Installieren und vergessen"-Lösung. Nach der Installation lädt KernelCare automatisch neue Kernel-Sicherheitspatches herunter und wendet sie an, ohne dass der Server neu gestartet werden muss.
Im Gegensatz zu seinen engsten Konkurrenten kann KernelCare jedoch viele der komplexeren Patches verarbeiten, die für Sicherheitslücken wie die berühmte Meltdown (CVE-2017-5754) und Spectre (CVE-2017-5753 & CVE-2017-5715) Sicherheitslücken.
KernelCare deckt auch neuere komplexe Sicherheitslücken ab, darunter die Dirty Pipes Sicherheitslücke (CVE-2022-0847).
Sie profitieren auch von einem umfangreichen Funktionsumfang, da KernelCare benutzerdefinierte Patch-Konfigurationen, Patches mit festem Datum, verzögerte Patches und Rollbacks ohne Neustart unterstützt, mit denen Sie einen Patch ohne Neustart entfernen können.
Wie die anderen hier betrachteten Anbieter hat auch KernelCare einen starken Linux-Stammbaum: KernelCare wurde entwickelt von CloudLinuxentwickelt, dem führenden Anbieter eines Linux-Betriebssystems für das Webhosting.
Einfache Installation. Kein Neustart erforderlich. Breite Betriebssystemabdeckung (einschließlich einer der beliebtesten Linux-Varianten, Ubuntu). Unterstützt benutzerdefinierte und datumsabhängige Patches. Guter Support und Branchenkenntnis von TuxCare.
Kommerziell (aber es gibt eine kostenlose Testversion). Außerdem gibt es eine kostenlose KernelCare-Lizenz für gemeinnützige Organisationen.
Holen Sie sich eine KOSTENLOSE Testversion von KernelCare Enterprise
Schlussfolgerung
Die Aktualisierung des Kernels ist mit den Standard-Befehlszeilen-Tools relativ einfach, aber nur, wenn Ihr Server nicht kritisch ist und Ihre Benutzer es ertragen können, dass er eine Zeit lang offline ist.
Wenn Sie ein System betreiben, das ständig eingeschaltet ist, oder wenn Sie nicht neu starten können oder wollen, müssen Sie Live-Kernel-Patching-Lösungen in Betracht ziehen. Davon gibt es drei Arten:
- Verwaltet: Sie lösen das Rebootless-Patching selbst aus. Z.B. kpatchen, kGraft
- Vollständig automatisch: Rebootless Patching erfolgt automatisch. z.B.. Livepatch, Ksplice
- Vollautomatisch, fortschrittlich und plattformübergreifend: Es erledigt das für Sie, bewältigt auch fortgeschrittene Bedrohungen und funktioniert auf allen gängigen Linux-Distributionen. Z.B.. KernelCare Enterprise
In vielen Fällen, insbesondere wenn Sie auf verschiedene Linux-Distributionen angewiesen sind und keinen Support-Vertrag mit einem Hersteller haben, ist KernelCare Enterprise einen Blick wert sein.
Wenn Sie mehr über die Live-Patching-Technologie erfahren möchten und darüber, wie sie die Sicherheit Ihrer Infrastruktur erhöht, können Sie einige unserer beliebtesten Blogbeiträge lesen:
- Was ist Linux Kernel Live Patching?
- KernelCare behebt Meltdown und Spectre ohne Neustart!
- Die vielen Gesichter des Patchings
- Warum Live-Patching ein spielveränderndes Tool für die Cybersicherheit ist
- Benutzerdefiniertes Kernel-Patching mit Rebootless Updates
