Wie man Rocky Linux 9 Server sicher auf dem neuesten Stand hält
In diesem Tutorial erfahren Sie einige Best Practices, um Ihren Rocky Linux 9 Server-Stack auf dem neuesten Stand zu halten. Genau wie bei der Netzwerk-Sicherheitsverstärkung gibt es viele Schritte, die Sie unternehmen können, um sicherzustellen, dass Ihre Server auch ohne zukünftige Eingriffe sicher funktionieren.
Es gibt eine Reihe von Tools und Konfigurationen, die Sie auf die meisten Rocky Linux-Server anwenden können, zusätzlich zu den automatisch für Sie konfigurierten Einstellungen. Wenn Sie Ihre Server selbst verwalten, kann es sehr störend und fehleranfällig sein, alle Ihre Umgebungen manuell zu patchen.
In diesem Tutorial lernen Sie:
- Testen von sanften Neustarts gemäß Best Practices für das Anwendungsmanagement, um Komplikationen durch Wartungs-Updates zu minimieren
- Konfigurieren automatischer Updates für die meisten auf Ihrem Rechner ausgeführten Pakete und Bibliotheken
- Live-Kernel-Patching und andere Best Practices für Kernel-Updates
Voraussetzungen
Ein Rocky Linux 9 Server und ein nicht-root Benutzer mit sudo-Berechtigungen.
Schritt 1 – Befolgen von Best Practices für das Anwendungsmanagement
Ein grundlegender Bestandteil der Konfiguration Ihres Servers für automatische Updates besteht darin, sicherzustellen, dass alle auf dem Server ausgeführten Anwendungen nach ungeplanten Ausfällen oder Neustarts korrekt neustartbar sind. Linux-Paketmanager sind so konzipiert, dass sie störungsfrei im Hintergrund laufen, sodass notwendige Wartungsarbeiten keinen zusätzlichen Aufwand mit sich bringen. Trotzdem ist einer der häufigsten Gründe für das Fehlen einer guten Update-Strategie die Sorge, wie sich Ihr Server nach einem Neustart verhalten wird.
Wo immer möglich, sollten die Anwendungen in Ihrem Stack von Ihrem Server-Init-System verwaltet werden, das auf den meisten modernen Linux-Distributionen einschließlich Rocky Linux systemd
ist. Systemd stellt den Befehl systemctl
zur Verfügung, um mit Ihren laufenden Diensten zu interagieren und diese bei Bedarf automatisch neu zu starten. Praktisch alle Software, die über Ihren Paketmanager installiert und für den Hintergrundbetrieb entwickelt wurde, sollte automatisch eine systemd
-Dienst- und Konfigurationseinheit bereitstellen.
Wenn Sie Ihre eigene Software oder Software aus Git-Repositories betreiben, ist es keine schlechte Idee, Ihre eigenen Einheitendateien zu erstellen, um diese in systemd
zu integrieren. Als leichte Alternative können Sie ein Tool wie supervisor
verwenden. Sie können auch den Cron-Planer Ihres Systems mit der Syntax @reboot
verwenden.
Neustart
Nachdem Ihre Konfiguration eingerichtet ist, stellen Sie sicher, dass Sie sie durch Neustarts testen. Sie können einen Neustart durchführen, indem Sie folgendes ausführen:
sudo shutdown now -r
Sie können auch eine Uhrzeit im Format hh:mm oder eine Anzahl von Minuten angeben, um einen Neustart zu einem späteren Zeitpunkt zu planen. Produktionsbereitstellungen sollten im Allgemeinen nach ungeplanten Ausfällen keine Aufmerksamkeit erfordern, und alle notwendigen Dienste und Endpunkte sollten automatisch wieder hochgefahren werden.
Nachdem Sie sichergestellt haben, dass Ihre Umgebung keine Probleme hat, Wartungsneustarts zu überstehen, lernen Sie im nächsten Schritt, wie Sie automatische Updates planen können.
Schritt 2 – Konfigurieren automatischer Updates
Rockys Paketmanager dnf
bietet zwei Hauptmethoden zur Durchführung eines vollständigen System-Updates. Sie können dnf upgrade
ausführen, ohne ein Paket anzugeben, um jedes Paket auf Ihrem System zu aktualisieren. Sie können auch dnf upgrade-minimal
ausführen, um jedes Paket nur auf die neueste Fehlerbehebung oder Sicherheits-Patch-Version zu aktualisieren, wodurch notwendige Wartungsarbeiten durchgeführt werden, ohne potenzielle Breaking Changes upstream zu verursachen. Sie können weitere Informationen über dnf
-Befehle aus der dnf
-Dokumentation abrufen.
Rocky bietet auch ein einzigartiges Tool namens dnf-automatic
, um automatisch Sicherheits-Patches und andere wichtige Updates für Ihren Server abzurufen und zu installieren. Sie können es mit dnf
installieren:
sudo dnf install dnf-automatic -y
dnf-automatic
ist nach der Installation nicht automatisch aktiviert. Stattdessen bietet es mehrere verschiedene Dienste, die Sie mit Systemd registrieren können, um das Verhalten anzupassen. Diese sind:
- dnf-automatic – dieser Dienst folgt den Konfigurationsdateioptionen von
dnf-automatic
in/etc/dnf/automatic
. - dnf-automatic-notifyonly – überschreibt die Konfigurationsdatei, indem nur Benachrichtigungen über verfügbare Updates gesendet und keine installiert werden.
- dnf-automatic-download – überschreibt die Konfigurationsdatei, indem nur Pakete heruntergeladen und nicht installiert werden.
- dnf-automatic-install – überschreibt die Konfigurationsdatei, indem heruntergeladene Pakete immer installiert werden.
Für dieses Tutorial aktivieren Sie den Dienst dnf-automatic-install
. Zuerst nehmen Sie jedoch eine Änderung an der dnf-automatic
-Konfigurationsdatei vor. Öffnen Sie die Datei mit vi
oder Ihrem bevorzugten Texteditor:
sudo vi /etc/dnf/automatic
Bearbeiten Sie die Konfigurationsdatei wie folgt:
[commands]
# Welche Art von Upgrade soll durchgeführt werden:
# default = alle verfügbaren Upgrades
# security = nur Sicherheits-Upgrades
upgrade_type = security
random_sleep = 0
# Maximale Zeit in Sekunden, die gewartet wird, bis das System online ist
# und Remote-Repositories verbinden kann.
network_online_timeout = 60
# Ob Updates heruntergeladen werden sollen, wenn sie verfügbar sind.
download_updates = yes
# Ob Updates angewendet werden sollen, wenn sie verfügbar sind.
apply_updates = no
Speichern und schließen Sie die Datei. Wenn Sie vi
verwenden, können Sie speichern und beenden, indem Sie :x
eingeben.
Nun können Sie den Dienst mit systemctl
aktivieren:
sudo systemctl enable dnf-automatic-install.timer
Überprüfen Sie, ob der Dienst korrekt läuft:
sudo systemctl status dnf-automatic-install
Erwartete Ausgabe:
● dnf-automatic-install.service - dnf automatische Installation von Updates
Loaded: loaded (/usr/lib/systemd/system/dnf-automatic-install.service; static; vendor preset: disabled)
Active: inactive (dead)
Jul 14 21:01:03 droplet-name dnf-automatic[40103]: Keine Sicherheitsupdates erforderlich, aber 154 Updates verfügbar
Im Gegensatz zu einigen anderen Systemd-Diensten wird dnf-automatic
als Timer implementiert, anstatt als ein dauerhaft im Hintergrund laufender Dienst. Das bedeutet, dass der Status Active: inactive (dead)
erwartet wird, solange der Dienst geladen ist und die Protokolle erfolgreiche Läufe widerspiegeln.
Sie können die Details dieses Timers mit systemctl cat
überprüfen:
sudo systemctl cat dnf-automatic-install.timer
Ausgabe:
[Unit]
Description=dnf-automatic-install Timer
# Siehe Kommentar in dnf-makecache.service
ConditionPathExists=!/run/ostree-booted
Wants=network-online.target
[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=60m
Persistent=true
[Install]
WantedBy=timers.target
Standardmäßig ist der Dienst so konfiguriert, dass die Ausführung jeden Tag um 6:00 Uhr erfolgt. Sie sollten diesen Wert normalerweise nicht ändern müssen.
Schritt 3 – Aktualisieren und Livepatchen des Kernels
Weniger häufig als andere Pakete müssen Sie den Kernel Ihres Systems aktualisieren. Der Linux-Kernel enthält (fast) alle laufenden Hardwaretreiber und ist für die meisten Systeminteraktionen auf niedriger Ebene verantwortlich. Kernel-Updates sind normalerweise nur erforderlich, beim Beheben einer hochkarätige Sicherheitslücke, bei Nutzung einer neue Kernel-Funktion oder so alten Kernel, sodass ein höheres Risiko für angesammelte Fehler und Schwachstellen besteht, die Ihnen möglicherweise nicht bekannt sind.
Es gibt keine universelle Methode, Linux-Kernel-Updates automatisch zu planen. Dies liegt daran, dass Kernel-Updates historisch gesehen einen vollständigen Systemneustart erforderten und das Planen von Neustarts ohne Annahmen über Ihre Umgebung unmöglich ist. Viele Server sollen eine Verfügbarkeit von nahezu 24/7 bieten, und ein Neustart kann eine unbekannte Zeit in Anspruch nehmen oder eine manuelle Intervention erfordern.
Die meisten Produktionsbereitstellungen erfordern zusätzliche Komplexität rund um Neustarts wie diesen, um die Verfügbarkeit der Dienste sicherzustellen. Beispielsweise könnten Sie einen Lastenausgleich verwenden, um den Datenverkehr automatisch an Server umzuleiten, die in einer horizontal skalierten Bereitstellung identische Funktionen bieten, während diese nacheinander neu gestartet werden, um Ausfallzeiten zu vermeiden.
Live-Patching aktivieren, um Server-Ausfallzeiten während Kernel-Updates zu vermeiden
Um Ausfallzeiten während Kernel-Upgrades zu vermeiden, können Sie eine Funktion des Linux-Kernels namens Live-Patching verwenden. Mit dieser Funktion kann man Kernel-Updates ohne Neustart implementieren. Es gibt zwei Hauptanbieter für Kernel-Live-Patches im Rocky Linux-Ökosystem: Red Hat’s kpatch
, das Live-Patching für Red Hat Enterprise Linux bietet, und KernelCare, das Rocky Linux zusätzlich zu den meisten anderen großen Linux-Distributionen unterstützt. Beide erfordern eine Registrierung.
Aufgrund des Lizenzmodells von Red Hat Enterprise Linux können Sie beim Betrieb von Rocky Linux keine Live-Kernel-Patches über kpatch
erhalten — Rocky fungiert in vielerlei Hinsicht wie eine unlizenzierte Version von Red Hat, und es gibt keine Möglichkeit, sich für Live-Kernel-Patching zu registrieren, ohne eine vollständig lizenzierte Red Hat-Instanz auszuführen. Die Methode zur Aktivierung ist jedoch sowohl bei Rocky als auch bei RHEL dieselbe. Installieren Sie zunächst das Paket kpatch-dnf
:
sudo dnf install kpatch-dnf
Führen Sie dann den folgenden Befehl aus, um automatisch Live-Patching-Dienste zu abonnieren:
sudo dnf kpatch auto
Ausgabe:
Last metadata expiration check: 0:00:06 ago on Thu 14 Jul 2022 09:12:07 PM UTC.
Dependencies resolved.
Nothing to do.
Complete!
kpatch
prüft auf konfigurierte Patch-Dienste und beendet sich, wenn keine findbar sind, ohne Fehler. Unter Red Hat würde dies stattdessen eine Lizenzprüfung durchführen und sich bei den Red Hat kpatch
-Servern registrieren. Unter Rocky Linux sollten Sie KernelCare als kommerzielle Unterstützungsoption in Betracht ziehen.
Fazit
In diesem Tutorial haben Sie verschiedene Strategien kennengelernt, um Ihre Rocky Linux-Server automatisch auf dem neuesten Stand zu halten. Sie haben auch einige Nuancen von Paket-Repositories, Kernel-Updates und dem Umgang mit Server-Neustarts kennengelernt. Dies sind wichtige Grundlagen von DevOps und der Arbeit mit Servern im Allgemeinen, und nahezu alle Produktionskonfigurationen bauen auf diesen Kernkonzepten auf.