Aktualisierung der Produktion Ubuntu legt die Vor- und Nachteile fest


25

Von Zeit zu Zeit melde ich mich bei Production Web / DB / Tools Boxes an und sehe die typische Meldung:

30 Pakete können aktualisiert werden. 16 Updates sind Sicherheitsupdates.

Meine Frage ist, wie geht ihr alle mit Updates eurer Ubuntu-Produktionsboxen um? Automatisieren Sie diese Updates? Stellen Sie Ausfallzeiten für sie ein? Das Problem ist, dass Sie nie wissen, wann ein Update etwas beschädigen wird, z. B. eine vorhandene Konfigurationsdatei usw.

Der andere Teil dieses Problems ist, dass es "gut" ist, mit Patches Schritt zu halten, aber Patches werden fast täglich veröffentlicht. Wie viele geplante Ausfälle muss man machen, wenn jeden Tag ein neuer Sicherheitspatch verfügbar ist?

Ich denke, ein Thread mit Antworten darauf, wie Sie Ihre Updates verwalten, wäre sehr nützlich.

Antworten:


13

Es ist nichts Besonderes daran, Ubuntu gegen Windows, RHEL, CentOS, SuSE, Debian usw. zu patchen.

Der Grundzustand des Geistes , müssen Sie sein , wenn Sie das Pflaster Verfahren der Gestaltung ist , etwas zu übernehmen wird brechen.

Einige der grundlegenden Richtlinien, die ich beim Entwerfen eines Patch-Setups verwende, sind:

  • Verwenden Sie immer ein lokales System, um die Zentralisierung in Ihrem Netzwerk vorzunehmen, in dem die Patches installiert werden

Dies kann die Verwendung von WSUS oder die Spiegelung <your_os_here>eines internen Patch-Verwaltungscomputers einschließen . Bevorzugtes Tool, mit dem Sie den Status der auf Ihren einzelnen Computern installierten Patches zentral abfragen und anzeigen können.

  • Bereiten Sie die Installationen - wenn möglich - auf den Maschinen vor.

Wenn es möglich ist, müssen Patches vom zentralen Server auf die einzelnen Computer kopiert werden. Dies ist wirklich nur eine Zeitersparnis, sodass Sie nicht darauf warten müssen, dass sie heruntergeladen UND installiert werden, sondern lediglich die Installation während Ihres Patch-Fensters starten müssen.

  • Wenn Sie ein Ausfallfenster zum Installieren der Patches erhalten, müssen Sie möglicherweise einen Neustart durchführen, und wahrscheinlich wird etwas kaputt gehen. Stellen Sie sicher, dass die Beteiligten für diese Systeme wissen, dass Patches bereitgestellt werden. Seien Sie bereit für die "das" funktioniert nicht Anrufe.

Stellen Sie in Übereinstimmung mit meiner grundlegenden Theorie, dass Patches Probleme verursachen, sicher, dass Sie ein Ausfallfenster haben, in dem Patches lange genug angewendet werden können, um kritische Probleme zu beheben, und setzen Sie den Patch möglicherweise zurück. Es ist nicht unbedingt erforderlich, dass nach den Patches Leute dort sitzen und testen. Persönlich verlasse ich mich stark auf meine Überwachungssysteme, um zu wissen, dass alles auf dem Mindestniveau funktioniert, mit dem wir durchkommen können. Seien Sie aber auch darauf vorbereitet, dass während des Arbeitseinsatzes kleine Nörgeleien hinzugezogen werden. Sie sollten immer jemanden vor Ort haben, der bereit ist, das Telefon zu beantworten - am besten nicht den, der bis 3 Uhr morgens die Kisten flickt.

  • automatisieren Sie so viel wie möglich

Wie alles in der IT, Skript, Skript, dann Skript mehr. Script den Paketdownload, den Installationsstart, den Mirror. Grundsätzlich möchten Sie Patch-Fenster in einen Babysitting-Auftrag verwandeln, der nur einen Menschen benötigt, falls etwas kaputt geht.

  • Haben Sie mehrere Fenster pro Monat

Dies gibt Ihnen die Möglichkeit, einige Server nicht zu patchen, wenn sie aus irgendeinem Grund nicht in "der festgelegten Nacht" gepatcht werden können. Wenn Sie sie in der ersten Nacht nicht ausführen können, müssen sie in der zweiten Nacht frei sein. Außerdem können Sie die Anzahl der gleichzeitig gepatchten Server auf einem vernünftigen Niveau halten.

Am wichtigsten ist, dass Sie mit den Patches Schritt halten! Wenn Sie dies nicht tun, werden Sie feststellen, dass Sie mehr als 10 Stunden lang sehr große Patch-Fenster ausführen müssen, um zu dem Punkt zurückzukehren, an dem Sie gefangen sind. Wir führen noch mehr Punkte ein, an denen etwas schief gehen könnte, und erschweren die Suche nach dem Patch, der das Problem verursacht hat.


Der andere Teil dieses Problems ist, dass es "gut" ist, mit Patches Schritt zu halten, aber Patches werden fast täglich veröffentlicht. Wie viele geplante Ausfälle muss man machen, wenn jeden Tag ein neuer Sicherheitspatch verfügbar ist?

Das Patchen eines Servers einmal im Monat oder alle zwei Monate ist - IMHO - ein sehr erreichbares und akzeptables Ziel. Mehr als das, und nun, Sie werden ständig Server patchen, viel weniger, und Sie werden in Situationen geraten, in denen Sie Hunderte von Patches haben, die pro Server angewendet werden müssen.

Wie viele Fenster brauchen Sie im Monat? Das hängt von Ihrer Umgebung ab. Wie viele Server haben Sie? Was ist die benötigte Zeit für Ihre Server?

In kleineren Umgebungen mit einer Größe von 9 x 5 kann es wahrscheinlich zu einem Patch-Fenster pro Monat kommen. Große Geschäfte, die rund um die Uhr geöffnet sind, benötigen möglicherweise zwei. Bei sehr großen Servern, die rund um die Uhr und 365 Tage die Woche geöffnet sind, muss möglicherweise wöchentlich ein fortlaufendes Fenster geöffnet werden, damit jede Woche ein anderer Satz von Servern gepatcht wird.

Suchen Sie eine Frequenz, die für Sie und Ihre Umgebung geeignet ist.

Eine Sache, die Sie beachten sollten, ist, dass eine 100% ige Aktualisierung ein unmögliches Ziel ist - lassen Sie sich von Ihrer Sicherheitsabteilung nichts anderes mitteilen. Gib dein Bestes, falle nicht zu weit zurück.


Sie sagen, Sie automatisieren den Installationsstart, obwohl dies im Widerspruch zur ursprünglichen Annahme der Meldung steht, dass ein Ausfallfenster angezeigt werden soll. Können Sie den Teil "Automatisieren des Installationsstarts" in Ihrer Antwort näher erläutern?
einfallsreiche

Sie automatisieren den Start der Installation, wenn Ihr Ausfall beginnt - Sie müssen sich nicht mehr in jedes Feld einloggen, um die Installation zu starten ... Ich werde versuchen, eine bessere Formulierung zu finden
Zypher

6

Dinge die zu tun sind:

  1. Erstellen Sie eine Sicherungskopie
  2. Stellen Sie sicher, dass es sich um ein wiederherstellbares Backup handelt (obwohl dies zwei allgemeine Punkte sind)
  3. Versuchen Sie, den Datenverkehr während des Upgrades von der Produktionsbox wegzuleiten.
  4. Versuchen Sie, eine Out-of-Band-Zugriffsmethode zu verwenden, falls alles schief geht: KVM, serielle Konsole, lokaler Zugriff oder Remote-Hands.
  5. Testen Sie auf einem Server und vergewissern Sie sich, dass alles funktioniert, bevor Sie Updates auf mehreren Servern bereitstellen
  6. Verwenden Sie puppet, wenn Sie sicherstellen können, dass die Versionsnummern auf mehreren Servern gleich sind. (Sie können damit auch Upgrades erzwingen)
  7. Vergleichen Sie auf einem Testserver die Versionen der Konfigurationsdateien mit den neuen (installierten) Versionen, und stellen Sie sicher, dass nichts ernsthafte Probleme verursacht. Ich erinnere mich an dpkg und frage, bevor ich neue Versionen installiere, die sich von den derzeit installierten unterscheiden.

Dinge zu vermeiden:

  1. Aktualisierungen mittags oder montags um 09:00 Uhr oder freitags um 17:00 Uhr durchführen! (danke @ 3influence!)
  2. Upgrade von MySQL auf sehr großen Datenbankservern (Neustart kann lange dauern)
  3. Alle Server gleichzeitig ausführen (insbesondere Kernel)
  4. Alles tun, was / etc / networks verändern könnte (weil Sie die Konnektivität verlieren könnten)
  5. Automatisierte Updates, die die oben genannten Aufgaben ausführen können, ohne dass Sie alles überprüfen müssen, sind in Ordnung.

4
du hast vergessen ... mach sie niemals an einem Freitag am Ende eines Tages, es sei denn, du
schätzt

4

Ein weiterer Punkt wert machen: Wenn Sie Windows gewohnt sind, werden Sie überrascht , dass die meisten der Linux - Updates noch nicht erfordern Ausfallzeiten oder neu zu starten. Einige tun dies, z. B. Kernel-Updates. Aktualisierungen, die einen Neustart oder eine Ausfallzeit erfordern, werden normalerweise als solche gekennzeichnet und können nach einem separaten Zeitplan behandelt werden.


Denken Sie daran, dass für die Aktualisierung eines laufenden Dienstes dieser Dienst an einem bestimmten Punkt angehalten werden muss, damit Sie den neuen erhalten. Trotzdem bekommst du nicht alle 10 Minuten die nervige Aufforderung :)
gbjbaanb

Das Dienstprogramm debian / ubuntu checkrestartist sehr nützlich, um festzustellen, welche Prozesse aktualisiert wurden, aber noch gestoppt und neu gestartet werden müssen, um den neuen Code zu erhalten.
Thomasrutter

4

Auf unseren Ubuntu-Maschinen werden alle LTS-Versionen ausgeführt.

Wir installieren einfach alle Updates automatisch - das ist sicher keine "Best Practice", aber wir sind ein relativ kleiner Laden und haben keine Test- / Entwicklungs- / Produktionsumgebung für jeden einzelnen Service. Die LTS-Updates sind im Allgemeinen ziemlich gut getestet und sowieso minimal invasiv.

Ein Upgrade auf ein neues Release ist offensichtlich etwas aufwendiger.


2

Wir behandeln Updates auf folgende Weise für Ubuntu LTS-Systeme:

  1. Führen Sie eine Reihe von Abnahmetests durch, die alle kritischen Pfade in unserer Software überprüfen
  2. Installieren Sie Sicherheitsupgrades jeden Morgen unbeaufsichtigt um 4 Uhr und führen Sie die Abnahmetests sofort durch. Wenn irgendetwas fehlschlägt, wird ein Techniker ausgelagert und hat genügend Zeit, um die Probleme zu beheben oder einen Rollback vor 9 Uhr durchzuführen. Dies ist bisher nur zweimal in fünf Jahren passiert - LTS ist gut getestet und stabil.
  3. Wir stellen jede Woche (auf digitalocean) automatisch unsere gesamte Infrastruktur mit blau / grünen Bereitstellungen neu bereit, wodurch alle Pakete auf dem neuesten Stand bleiben. Wenn eine neue Bereitstellung die Abnahmetests nicht besteht, wird die Bereitstellung angehalten, bis ein Techniker das Problem beheben kann.

Der nächste logische Schritt besteht für uns darin, Informationen zu In-Memory-Sitzungen zu entfernen, sodass wir die Infrastruktur einfach jeden Tag oder sogar mehrmals pro Tag neu bereitstellen können, ohne die Kunden zu beeinträchtigen, und Schritt (2) zu beseitigen.

Dieser Ansatz ist wartungsarm und vermeidet Wartungsfenster vollständig.


Ich arbeitete in einer Firma, die einen ähnlichen Prozess durchführte. Unsere Muttergesellschaft verfügte über ein "vollständiges und professionell entwickeltes System". Als die Sicherheitslücke "Heartbleed" angekündigt wurde, hatten wir am nächsten Morgen mehrere hundert Server gepatcht. Bei den "sicheren" Prozessen des Mutterunternehmens wurden mehrere hundert Server heruntergefahren, und die IT-Gruppe musste im Laufe einer Woche die einzelnen Computer manuell patchen. Komplexität ist der Feind von Sicherheit und Zuverlässigkeit :-)
Tom Harrison Jr.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.