Inhalt |
---|
LRZ-Update-Mechanismus
Funktionsweise
Durch einen Cronjob (/etc/cron.d/lrz-base
) wird gemäß LRZ-Standard-Policy zweimal täglich das Skript /usr/sbin/update-debian.sh
ausgeführt, welches sich um Paketupdates und das LRZ-seitige Monitoring der VM kümmert.
Für die Paketupdates wird der in Debian nativ vorhandene unattended-upgrades Mechanismus von unserem Skript ausgelöst. Um Redundanzen zu vermeiden, sind dessen eigene Automatismen deaktiviert.
Die genaue Konfiguration von unattended-upgrades lässt sich unter /etc/apt/apt.conf.d/90lrz-base-unattended-upgrades
bearbeiten. Dort wird definiert, aus welchen Repositories Updates installiert werden sollen und welche Pakete eventuell nicht angefasst werden dürfen.
Hinweis |
---|
Diese Datei sollte mit Vorsicht behandelt werden, um Fehlkonfigurationen von wichtigen Sicherheitsupdates zu vermeiden. |
Warnung |
---|
Bitte beachten: Standardmäßig werden nur jene Repositories vom LRZ-Update-Mechanismus abgedeckt, welche bei der Auslieferung der VM vorkonfiguriert sind! Dies sind die Debian-Standard-Repositories inkl. "debian-security" und "volatile", sowie das LRZ-eigene Repository, welches zusätzliche Software bereitstellt. Falls weitere externe Repositories in das System eingebunden werden, so muss man diese selbst in die Konfigurationsdatei |
Einbinden zusätzlicher Repositories in den Update-Mechanismus
Zunächst müssen ein paar Variablen für die Repositories ermittelt werden, die man dann für die Update-Konfiguration verwenden kann. Hierfür ist das Kommando apt-cache policy
hilfreich:
Codeblock | ||
---|---|---|
| ||
root@linux:~# apt-cache policy Package files: 100 /var/lib/dpkg/status release a=now 500 https://download.docker.com/linux/debian buster/stable amd64 Packages release o=Docker,a=buster,l=Docker CE,c=stable,b=amd64 origin download.docker.com 500 https://artifacts.elastic.co/packages/7.x/apt stable/main amd64 Packages release o=elastic,a=stable,n=stable,l=. stable,c=main,b=amd64 origin artifacts.elastic.co 500 http://debian.mirror.lrz.de/debian-lrz buster/non-free amd64 Packages release o=LRZ,a=stable,n=buster,c=non-free,b=amd64 origin debian.mirror.lrz.de 500 http://debian.mirror.lrz.de/debian-lrz buster/main amd64 Packages release o=LRZ,a=stable,n=buster,c=main,b=amd64 origin debian.mirror.lrz.de 500 http://debian.mirror.lrz.de/debian buster-updates/non-free amd64 Packages release o=Debian,a=stable-updates,n=buster-updates,l=Debian,c=non-free,b=amd64 origin debian.mirror.lrz.de 500 http://debian.mirror.lrz.de/debian buster-updates/main amd64 Packages release o=Debian,a=stable-updates,n=buster-updates,l=Debian,c=main,b=amd64 origin debian.mirror.lrz.de 500 http://debian.mirror.lrz.de/debian-security buster/updates/non-free amd64 Packages release v=10,o=Debian,a=stable,n=buster,l=Debian-Security,c=non-free,b=amd64 origin debian.mirror.lrz.de 500 http://debian.mirror.lrz.de/debian-security buster/updates/main amd64 Packages release v=10,o=Debian,a=stable,n=buster,l=Debian-Security,c=main,b=amd64 origin debian.mirror.lrz.de 500 http://debian.mirror.lrz.de/debian buster/contrib amd64 Packages release v=10.4,o=Debian,a=stable,n=buster,l=Debian,c=contrib,b=amd64 origin debian.mirror.lrz.de 500 http://debian.mirror.lrz.de/debian buster/non-free amd64 Packages release v=10.4,o=Debian,a=stable,n=buster,l=Debian,c=non-free,b=amd64 origin debian.mirror.lrz.de 500 http://debian.mirror.lrz.de/debian buster/main amd64 Packages release v=10.4,o=Debian,a=stable,n=buster,l=Debian,c=main,b=amd64 origin debian.mirror.lrz.de Pinned packages: |
Section | |||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
In diesem Beispiel betrachten wir die manuell hinzugefügten Docker- und Elastic-Repositories und deren Release-Schlüsselwörter genauer:
|
Mit Hilfe dieser Informationen lassen sich nun entsprechende Regeln in die Konfigurationsdatei /etc/apt/apt.conf.d/90lrz-base-unattended-upgrades
einfügen. Die zu modifizierende Sektion bzw. APT-Variable lautet Unattended-Upgrade::Origins-Pattern
. Hier befinden sich bereits die von uns vorkonfigurierten Standard-Regeln für die Updates aus den Standard-Repositories. Ein einfaches Hinzufügen einer neuen Zeile pro Repository genügt. Für das Docker- und Elastic-Repository könnte die Konfiguration z.B. so aussehen:
Codeblock | ||||
---|---|---|---|---|
| ||||
Unattended-Upgrade::Origins-Pattern { // Archive or Suite based matching: // Note that this will silently match a different release after // migration to the specified archive (e.g. testing becomes the // new stable). "origin=LRZ,codename=${distro_codename}"; // LRZ-provided packages, do not disable! "origin=Debian,codename=${distro_codename},label=Debian-Security"; // security fixes "origin=Debian,codename=${distro_codename},label=Debian"; // point releases, important but not security relevant "origin=Debian,codename=${distro_codename}-updates"; // selected ("volatile") updates outside point releases (i.e. clamav) "origin=Docker,label=Docker CE"; // Docker CE packages "origin=elastic,codename=stable"; // Elastic packages }; |
Hinweis |
---|
Bitte auf keinen Fall eine der bereits vorhandenen Regeln in irgendeiner Weise modifizieren oder gar löschen! Dies könnte die Sicherheit Ihres Systems gefährden und zur Abschaltung Ihrer VM führen! |
Durch diese Konfiguration werden nun auch alle Pakete der eingebundenen Docker- und Elastic-Repositories vom LRZ-Update-Mechanismus vollständig erfasst.
Automatischer Reboot
Falls Updates installiert werden, die einen Reboot erfordern (derzeit unter Debian nur Kernelupdates), wird ein "Flag" (/var/run/lrz-base-reboot-required
) gesetzt.
Die Existenz dieses Flags wird durch einen weiteren Cronjob (/etc/cron.d/lrz-base-automatic-reboot
) in regelmäßigen Abständen geprüft und dann der Server automatisch rebootet, falls nötig.
Info |
---|
Die Zeiten, in denen ein automatischer Reboot erfolgen darf, werden durch diesen Cronjob geregelt und können bei Bedarf angepasst werden. |
Security
Host-Firewall
Auf den Debian-VMs des LRZ wird die "Uncomplicated Firewall" (UFW) als Host-Firewall-Lösung verwendet. Diese ist im Auslieferungszustand aktiviert und lässt lediglich den SSH-Zugriff von einem oder mehrerer bei der Bestellung angegebenen Subnetze bzw. IP-Adressen zu. Alle anderen Zugriffe werden blockiert.
Eine ausführliche Anleitung zur Konfiguration der UFW finden Sie hier: https://help.ubuntu.com/community/UFW
Zugriff über SSH: Zusätzliche Systemgruppe ssh-login
Als zusätzlichen Sicherheitsmechanismus hat das LRZ ab Debian 10 (Buster) eine zusätzliche Systemgruppe mit dem Namen ssh-login
auf den Debian-Systemen eingeführt. Nur Benutzer, die dieser Gruppe angehören, können sich per SSH in das System einloggen. Dies dient als zusätzliche Sicherungsschicht gegen ungewollte Login-Versuche auf Systembenutzer oder weitere lokale Benutzer, die nicht explizit für den Remote-Login auf den Systemen vorgesehen sind.
Um z.B. einen Benutzer joe
in die Gruppe ssh-login
aufzunehmen, kann eines der beiden folgenden Kommandos verwendet werden. Diese sind gleichwertig:
Codeblock | ||
---|---|---|
| ||
root@linux:~# adduser joe ssh-login |
ODER
Codeblock | ||
---|---|---|
| ||
root@linux:~# usermod -aG ssh-login joe |