1991 fanden zwei unabhängige Ereignisse statt, von denen jedes zwei sehr unterschiedliche Freiheiten ankündigte: das Ende des Kalten Krieges und die Geburt von Linux.
Die Möglichkeit, den Kernel in Echtzeit zu patchen, kam 2008, als Linux noch ein Teenager war. Jetzt, da der Linux-Kernel kurz vor 30 steht, ist auch das Echtzeit-Patching reif und bereit, seinen Ruf als optionales Add-On zu schmälern, das einfach "schön in der Box zu haben" ist.
Dafür gibt es zwei Gründe. Erstens ist die Dominanz von Linux als Plattform der Wahl für wirtschaftliches und vielseitiges Webhosting: mehr als die HälfteAlle bekannten Websites laufen derzeit unter Linux. Zweitens ist die Erkenntnis, dass das Patchen in Echtzeit mehr als eine Annehmlichkeit ist; Dies ist auch eine effektive und kostengünstige Möglichkeit, die Sicherheit Ihres Linux-Systems zu verbessern.
Ksplice, die erste Echtzeit-Linux-Kernel-Patch-Lösung, stieg nach dem Start mühelos in einen lukrativen Status auf und stärkte seine Führungsposition erst, als der Technologieriese Oracle sie 2011 kaufte. Heute ist es das bekannteste von fünf Unternehmen, die automatisierte Sicherheitspatching-Dienste für Linux anbieten. In alphabetischer Reihenfolge sind dies:
- Canonical Livepatch Service für Ubuntu.
- KernelCare für Ubuntu, Red Hat Enterprise Linux, Oracle Linux, Amazon Linux und mehr.
- Kpatch für Red Hat Enterprise Linux.
- Ksplice für Oracle Linux.
- SUSE Linux Enterprise Live-Patching für SUSE Linux Enterprise.
Jedes Unternehmen bewirbt seine Dienstleistungen mit denselben Schlüsselwörtern, denselben Standardphrasen, die endlos wiederholt werden. Ich werde Ihnen die beliebtesten geben und wie Sie sie verstehen sollten.
- Neustartlos : Aktualisiert den Linux-Kernel ohne Neustart.
- Automatisiert: Überprüft und installiert Kernel-Sicherheitsupdates ohne Beobachter.
- Einfache Installation: Installation und Einrichtung sind sehr einfach oder unnötig.
- Voll unterstützt: Sie müssen keine Patches selbst schreiben. ( Lesen Sie das Handbuch zum Schreiben von Patches auf Kpatch, um zu verstehen, warum dies wichtig ist.)
Wenn Sie diese verblüffend offensichtlichen Verkaufsargumente ignorieren, werden Sie andere zu berücksichtigende Funktionen finden, andere Faktoren, mit denen Sie einen Service mit einem anderen vergleichen können. In diesem Artikel werden einige von ihnen untersucht, die leicht mit Bestätigung und Erbauung gewürzt sind. Aber lassen Sie uns zunächst daran erinnern, was Live-Patching ist.
Was ist Echtzeit-Linux-Kernel-Patching?
Der Linux-Kernel enthält über 20 Millionen Codezeilen, die größtenteils (vermutlich) von menschlichen Programmierern geschrieben wurden. Wie bei jeder Software gibt es Fehler. In Zeiten zunehmender Konzentration auf Cybersicherheit implizieren Fehler Schwachstellen . Um dieses Problem zu lösen, versuchen Linux-Anbieter, Updates für ihre Kernel so schnell wie möglich zu veröffentlichen. Linux-Systemadministratoren versuchen auch, schnell zu reagieren, indem sie diese Updates installieren, was die Planung erschwert. Dies liegt daran, dass es kein Muster zum Erkennen von Schwachstellen gibt. Hier sind einige Gründe warum:
- Es werden zu einem bestimmten Zeitpunkt viele verschiedene Versionen des Linux-Kernels verwendet. Einige müssen repariert werden; manche nicht.
- , .
- Linux , .
- Linux . , , — .
Es gibt noch eine Sache, die selten erwähnt wird: Es ist der instinktive Ekel des Systemadministrators, den Computer anzuhalten, was zu körperlichen Beschwerden führt, wenn er sagen muss: "Der Server ist wegen Wartungsarbeiten ausgefallen."
Warum den Server stoppen? Weil das Kernel-Update erst nach dem Neustart wirksam wird. Wenn Sie nicht neu starten - wenn Sie es in den Hintergrund rücken oder vergessen -, befinden Sie sich in einem Dilemma, da ein Server ohne die neuesten Patches unsicher ist . Wir werden später ausführlicher über dieses Mantra sprechen, aber sein Kern ist folgendes:
Wenn Schwachstellen öffentlich werden, geschieht dasselbe mit ihren Exploits.
Mit anderen Worten, Sie haben eine Sicherheitslücke, von der Sie vorher nichts wussten, aber jetzt tun Sie es. Und alle anderen auch.
Der Retter in diesem Szenario ist das Live-Patching . Dies ist eine Möglichkeit, nicht den gesamten Linux-Kernel zu aktualisieren, sondern nur seinen problematischen Teil. Dies geschieht, ohne Prozesse anzuhalten oder die Arbeit der Benutzer zu unterbrechen.
Es gibt jedoch Einschränkungen. Echtzeit-Kernel-Patches können nicht alle Arten von Fehlern beheben. Aufgrund der überwältigenden Komplexität des Kernel-Codes und der technischen Herausforderungen beim spontanen Ändern von Code wird diese Technik nur zur Behebung kritischer Probleme verwendet, die normalerweise sicherheitsrelevant sind.
Trotzdem ist ein System mit Echtzeit-Patching-Funktionen sicherer als ein System ohne diese. Bei der Suche nach einer Echtzeit-Patch-Lösung sind folgende Fragen zu stellen:
1. Was ist in dem Patch enthalten (und wer steckt dahinter)?
Wenn Sie sich für einen Live-Patching-Dienst anmelden, zahlen Sie mehr als nur die Software selbst. Dies wird deutlich, wenn Sie anfangen, die Linux-Kernelquelle zu durchsuchen und erkennen, wie ein schlecht geschriebener Patch einem gesamten Linux-System schaden kann.
Ich habe bereits erwähnt, dass der Kernel ein riesiges Werk ist, das sich sowohl in seiner Aktivität als auch in seinem Volumen zu erweitern scheint . Beachten Sie die Zunahme der Anzahl der Codezeilen im Hauptzweig des Linux-Kernel-Repositorys. (Zählt ab dem 1. Januar eines jeden Jahres. Es werden nur C / C ++ - Dateien und -Header, Python- und Perl-Dateien gezählt.)
Bei so viel Code ist das Schreiben von Patches für den Linux-Kernel keine leichte Aufgabe. Ein tiefes Verständnis der Kernelarchitektur und der Datenstrukturen ist erforderlich. Erfahrung mit Linux-Community-Codierungskonventionen und Qualitätsstandards. Und es bedarf eines besonderen Talents, um Lösungen zu erfinden, die Funktionalität, Leistung und Stabilität nicht beeinträchtigen.
Es gibt zwei entgegengesetzte Methoden, mit denen Patch-Anbieter Kernel-Patches entwickeln und bereitstellen. Ich nenne sie inkrementell und monolithisch .
Inkrementelle Pflaster werden wie ein Kaugummiball übereinander gestapelt, wodurch sich das Verhalten des vorherigen ändert. Als Kunde müssen Sie nachverfolgen, welche Patches Sie installieren und welche nicht und in welcher Reihenfolge sie installiert werden. Wenn Sie diese Probleme nicht beachten, kann dies zu unvorhersehbaren Änderungen im Verhalten Ihres Systems führen. Mit dieser Patch-Methode können Anbieter schnell kleine, zielgerichtete Patches veröffentlichen. Im Laufe der Zeit kann das System jedoch so instabil werden, dass nur ein vollständiges Kernel-Update es wiederherstellen kann.
Ein monolithischer Patch ist ein Patch, der alle vorherigen Patches enthält. Grundsätzlich gibt es nur einen Master-Patch, der den aktiven ersetzt, anstatt ihm hinzugefügt zu werden. Dieser Ansatz macht die Plattform stabiler und erhöht die Server-Verfügbarkeit erheblich, was häufig in Tausenden von Tagen gemessen wird.
2. Wie lange muss bis zum nächsten Patch gewartet werden?
Es gibt unvermeidlich eine Verzögerung zwischen der Meldung einer Sicherheitsanfälligkeit und ihrer Behebung. Es braucht Zeit, um Kernelfehler zu analysieren und ihre Auswirkungen zu bewerten. Es erfordert Einfallsreichtum und Geschick, um eine Lösung zu finden, und unzählige Tests, um sicherzustellen, dass sie funktioniert. Es unterliegt dann einer obligatorischen Überprüfung und Genehmigung im Rahmen des Linux-Entwicklungsprozesses.
Vermeidbare Verzögerungen treten auf, wenn der Linux-Anbieter die Bewertung des Community-Schweregrads durch eine eigene ersetzt. Dies bedeutet, dass ein Anbieter mehrere Schwachstellen mit weniger Patches beheben kann. Aus diesem Grund wartet der Kunde durchschnittlich länger, um bestimmte Probleme zu beheben.
Linux-Administratoren, die die Gründe für die Unregelmäßigkeit von Patch-Releases verstehen, profitieren nicht viel mehr als diejenigen, die dies nicht tun. Keiner von ihnen findet Trost in dem Wissen, dass ihre Systeme, während sie auf Patches warten, noch anfälliger für einen Exploit sind als vor seiner Entdeckung.
Hier ist der Grund: Mitglieder der Cybersecurity-Forschungsgemeinschaft melden gerne Schwachstellen zusammen mit einem visuellen Anwendungsfall an. Sie bestehen normalerweise aus einem Proof of Concept, einer detaillierten technischen Beschreibung, wie ein Fehler reproduziert oder ein Exploit verwendet werden kann. Diese Beschreibungen sind in gutem Glauben, um Kernel-Entwicklern dabei zu helfen, das Loch zu finden und zu patchen. Sie sparen Hackern aber auch viel Zeit und Mühe, indem sie ihnen eine Abkürzung zu einem wörtlichen Rezept für eine Katastrophe in ihrem Wettlauf geben, um die Verwundbarkeit als Waffe auszunutzen.
3. Wie schwerwiegend sollte der Fehler sein?
Fast allen neu entdeckten Schwachstellen wird eine CVE-Kennung zugewiesen. Später, bei näherer Betrachtung durch Sicherheitsforscher, wird eine Sicherheitsanfälligkeit als Schweregrad eingestuft, dh als Maß für ihre Auswirkungen.
Ein wichtiges Bewertungsschema ist ein allgemeines System zur Bewertung der Sicherheitsanfälligkeit (CVSS - Common Vulnerability Scoring System) . Es stellt eine Sicherheitsanfälligkeit als eine Reihe von Zahlen dar, von denen jede eine Bewertung für ein Merkmal darstellt, zum Beispiel:
- Wie einfach ist es zu reproduzieren (verwenden).
- Wie schwierig es ist, das Problem zu beheben.
- Das Ausmaß der Auswirkungen auf die Verfügbarkeit von Servern und Diensten.
- Bedeutung oder Vertraulichkeit offener Daten.
Der komplette Satz enthält viele weitere ähnliche Bewertungen. Der Algorithmus kombiniert diese zu einem Basiswert , wobei eine saubere Zahl den Schweregrad der Sicherheitsanfälligkeit darstellt und zwischen 0 (niedrig) und 10 (hoch) liegt. CVSS der zweiten Version unterteilt die Bereiche dieser Zahlen in die Schlüsselwörter LOW, MEDIUM und HIGH. Die neue Version von CVSS 3 fügt zwei weitere hinzu: NONE und CRITICAL.
Daher variiert die Anzahl der Sicherheitslücken nicht nur nach Monaten und Jahren, sondern auch nach Schweregrad.
Mithilfe von Schwachstellenbewertungsschemata wie CVSS können Linux-Anbieter beurteilen, wie sie auf eine bestimmte Kernel-Schwachstelle reagieren sollen. Beispielsweise möchten sie möglicherweise Patches für Schwachstellen mit einer kumulativen Punktzahl von 7 oder höher schreiben. Dies bedeutet in CVSS v2 HIGH, in CVSS v3 HIGH oder CRITICAL. Ein Anbieter, der behauptet, auf kritische Schwachstellen abzuzielen, kann sich bei Verwendung von CVSS v3 nur auf Schwachstellen mit den Schweregraden 9 und 10 beziehen.
4. Kann ich einen Patch zurücksetzen?
Das automatische Installieren von Patches ohne Aufsicht ist für viele Systemadministratoren eine schreckliche Idee. Sie wissen, dass selbst gut getestete Korrekturen das Verhalten eines Systems ändern und dessen Leistung oder Funktionalität auf subtile und nicht ganz offensichtliche Weise beeinträchtigen können. Wenn sich der Server nach der Installation des Patches merkwürdig verhält, können Sie dies am schnellsten beheben, indem Sie den Patch entfernen.
Einige Echtzeit-Patchdienste können Patches entfernen. Auf diese Weise können Sie leichter feststellen, ob ein kürzlich durchgeführtes Update eine Änderung des Systemverhaltens verursacht.
5. Kann ich meinen eigenen Patch-Server hosten?
Der Patching-Software-Agent sucht in Echtzeit nach verfügbaren Patches auf Remote-Ptach-Servern. Dies geschieht in regelmäßigen, konfigurierbaren Intervallen, normalerweise mit der Möglichkeit, benutzerdefinierte Überprüfungen durchzuführen. Wenn ein Patch verfügbar ist, wird er von der Agentensoftware heruntergeladen und installiert. Wenn der Patch-Agent jedoch nicht mit dem Patch-Server kommunizieren kann, auf dem der Patch-Service des Anbieters Patches speichert, wird kein Live-Patch durchgeführt.
Um dieses Problem zu lösen, müssen Sie Ihren eigenen Patch-Server erstellen. Ein solcher lokaler Server sendet Patches an alle Computer in Ihrem Unternehmen unter Ihrer Firewall. Copy Safe lädt den Patch herunter und verteilt ihn nach Überprüfung der Integrität der Patch-Dateien über die Firewall. Sie können diesen Prozess nach Belieben verwalten und prüfen, indem Sie den Vorstand Ihres Unternehmens etwas entspannter gestalten.
Es gibt noch andere Vorteile:
- Sie haben eine bessere Kontrolle darüber, welche Patches Ihre Server wann erhalten.
- Sie können eine große Anzahl von Servern für bekannte Patch-Level blockieren.
- Es ist einfacher, Servercluster für Entwicklung, Test, Staging und Produktion zu trennen.
Für das dynamische Patchen sind ein lokaler Agent und ein Remote-Patch-Server erforderlich. Die Steuerung beider ist für Unternehmensbereitstellungen von entscheidender Bedeutung.
Fazit
Bevor Sie aufwachen, sollten Sie einem potenziellen Anbieter von Patching-Lösungen drei weitere Fragen stellen:
- Kann ich die automatische Verlängerung abbrechen? Es gibt Zeiten, in denen Sie Kernel nicht automatisch aktualisieren möchten.
- Auf welchen Plattformen funktioniert es? Während Ihre Serverumgebung jegliche Flexibilität bei der Auswahl einer Echtzeit-Patch-Lösung ausschließt, ist es am besten, wenn Ihr Abonnement für den Dienst nicht einschränkt, welche Linux-Variante Sie verwenden müssen.
- ? , Linux. . , .
Die Tatsache, dass sie beim Patchen von Produktbeschreibungen von Anbietern weniger wichtig sind, macht die in diesem Artikel beschriebenen Funktionen nicht weniger wichtig. All dies kann Ihre Entscheidung beeinflussen, einen bestimmten Lieferanten zu kontaktieren. Jedes dieser Elemente kann sich direkt auf die Effektivität und Relevanz der Lösung für Ihre Umgebung auswirken. Da die Gebühren für Serverabonnements zwischen einigen zehn pro Monat und Tausenden von US-Dollar pro Jahr liegen, ist es hilfreich, bei der Auswahl einer Linux-Kernel-Patch-Lösung vorsichtig zu sein.
Weiterlesen:
Installieren und Konfigurieren von AlienVault SIEM (OSSIM)
10 Best Practices zum Sichern von Docker-Images. Teil 1
10 Best Practices zum Sichern von Docker-Images. Teil 2