Ubuntu-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 Ubuntu 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.

Diese Datei sollte mit Vorsicht behandelt werden, um Fehlkonfigurationen von wichtigen Sicherheitsupdates zu vermeiden.

Bitte beachten:

Standardmäßig werden nur jene Repositories vom LRZ-Update-Mechanismus abgedeckt, welche bei der Auslieferung der VM vorkonfiguriert sind! Dies sind die Ubuntu-Standard-Repositories, 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/90lrz-base-unattended-upgrades zusätzlich 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/ubuntu focal/stable amd64 Packages
     release o=Docker,a=focal,l=Docker CE,c=stable,b=amd64
     origin download.docker.com
 500 http://ppa.launchpad.net/ondrej/php/ubuntu focal/main amd64 Packages
     release v=20.04,o=LP-PPA-ondrej-php,a=focal,n=focal,l=***** The main PPA for supported PHP versions with many PECL extensions *****,c=main,b=amd64
     origin ppa.launchpad.net
 500 http://ubuntu.mirror.lrz.de/debian-lrz buster/non-free amd64 Packages
     release o=LRZ,a=stable,n=buster,c=non-free,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/debian-lrz buster/main amd64 Packages
     release o=LRZ,a=stable,n=buster,c=main,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal-security/multiverse amd64 Packages
     release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=multiverse,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal-security/universe amd64 Packages
     release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=universe,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal-security/restricted amd64 Packages
     release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=restricted,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal-security/main amd64 Packages
     release v=20.04,o=Ubuntu,a=focal-security,n=focal,l=Ubuntu,c=main,b=amd64
     origin ubuntu.mirror.lrz.de
 100 http://ubuntu.mirror.lrz.de/ubuntu focal-backports/universe amd64 Packages
     release v=20.04,o=Ubuntu,a=focal-backports,n=focal,l=Ubuntu,c=universe,b=amd64
     origin ubuntu.mirror.lrz.de
 100 http://ubuntu.mirror.lrz.de/ubuntu focal-backports/main amd64 Packages
     release v=20.04,o=Ubuntu,a=focal-backports,n=focal,l=Ubuntu,c=main,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal-updates/multiverse amd64 Packages
     release v=20.04,o=Ubuntu,a=focal-updates,n=focal,l=Ubuntu,c=multiverse,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal-updates/universe amd64 Packages
     release v=20.04,o=Ubuntu,a=focal-updates,n=focal,l=Ubuntu,c=universe,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal-updates/restricted amd64 Packages
     release v=20.04,o=Ubuntu,a=focal-updates,n=focal,l=Ubuntu,c=restricted,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal-updates/main amd64 Packages
     release v=20.04,o=Ubuntu,a=focal-updates,n=focal,l=Ubuntu,c=main,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal/multiverse amd64 Packages
     release v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=multiverse,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal/universe amd64 Packages
     release v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal/restricted amd64 Packages
     release v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=restricted,b=amd64
     origin ubuntu.mirror.lrz.de
 500 http://ubuntu.mirror.lrz.de/ubuntu focal/main amd64 Packages
     release v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=main,b=amd64
     origin ubuntu.mirror.lrz.de
Pinned packages:


In diesem Beispiel betrachten wir die manuell hinzugefügten Docker- und PHP-Repositories und deren Release-Schlüsselwörter genauer:


https://download.docker.com/linux/ubuntu
Schlüsselwort
(Abkürzung)
Schlüsselwort
(vollständiger Name)
Wert
oorigin

Docker

aarchivefocal
ncodenamehier nicht gesetzt
llabelDocker CE
ccomponentstable


http://ppa.launchpad.net/ondrej/php/ubuntu
Schlüsselwort
(Abkürzung)
Schlüsselwort
(vollständiger Name)
Wert
oorigin

LP-PPA-ondrej-php

aarchivefocal
ncodenamefocal
llabel***** The main PPA for supported PHP versions with many PECL extensions *****
ccomponentmain


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 PHP-Repository könnte die Konfiguration z.B. so aussehen:

/etc/apt/apt.conf.d/90lrz-base-unattended-upgrades
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=buster";                                           // LRZ-provided packages, do not disable!
        "origin=Ubuntu,codename=${distro_codename},label=Ubuntu-Security";      // security fixes
        "origin=Ubuntu,codename=${distro_codename},label=Ubuntu";               // point releases, important but not security relevant
        "origin=Ubuntu,codename=${distro_codename}-updates";                    // selected ("volatile") updates outside point releases (i.e. clamav)
        "origin=Docker,label=Docker CE";                                        // Docker CE packages
        "origin=LP-PPA-ondrej-php,codename=focal";                              // PHP packages
};

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 PHP-Repositories vom LRZ-Update-Mechanismus vollständig erfasst.


Automatischer Reboot

Falls Updates installiert werden, die einen Reboot erfordern (derzeit unter Ubuntu 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 Ubuntu-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