Debian-VM
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 LRZ-eigene Konfiguration von unattended-upgrades ist in /etc/apt/apt.conf.d/90lrz-base-unattended-upgrades
definiert. Diese Datei wird durch unser Management-Paket lrz-base
verwaltet und sollte keinesfalls modifiziert werden!
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 /etc/apt/apt.conf.d/99unattended-upgrades-custom
eintragen, damit auch hier automatische Updates stattfinden können! Anderenfalls müssen deren Pakete regelmäßig (d.h. spätestens alle 7 Tage) manuell auf den neuesten Stand gebracht werden!
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:
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:
In diesem Beispiel betrachten wir die manuell hinzugefügten Docker- und Elastic-Repositories und deren Release-Schlüsselwörter genauer:
https://download.docker.com/linux/debian | ||
---|---|---|
Schlüsselwort (Abkürzung) | Schlüsselwort (vollständiger Name) | Wert |
o | origin | Docker |
a | archive | buster |
n | codename | hier nicht gesetzt |
l | label | Docker CE |
c | component | stable |
https://artifacts.elastic.co/packages/7.x/apt | ||
---|---|---|
Schlüsselwort (Abkürzung) | Schlüsselwort (vollständiger Name) | Wert |
o | origin | elastic |
a | archive | stable |
n | codename | stable |
l | label | . stable |
c | component | main |
Mit Hilfe dieser Informationen lassen sich nun entsprechende Regeln in die Konfigurationsdatei /etc/apt/apt.conf.d/99unattended-upgrades-custom
einfügen. Die zu modifizierende Sektion bzw. APT-Variable lautet Unattended-Upgrade::Origins-Pattern
. 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:
Unattended-Upgrade::Origins-Pattern { "origin=Docker,label=Docker CE"; // Docker CE packages "origin=elastic,codename=stable"; // Elastic packages };
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.
Die Zeiten, in denen ein automatischer Reboot erfolgen darf, werden durch diesen Cronjob geregelt und können bei Bedarf angepasst werden.
Das Standardzeitfenster ist von Montag bis Freitag zwischen 07:00 und 07:30 definiert.
Von einer kompletten Deaktivierung raten wir jedoch dringend ab.
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:
root@linux:~# adduser joe ssh-login
ODER
root@linux:~# usermod -aG ssh-login joe