Unattended Upgrades – Sicherheitsupdates automatisch installieren

Hallo Leute,

in diesem Blogpost soll es um die Einrichtung von „unattended upgrades“ gehen. Aufgabe der unbeaufsichtigten Upgrades wird sein, Sicherheitsupdates auf meinen Servern automatisch und ohne Nachfrage jede Stunde zu installieren (falls verfügbar).

Die folgenden Schritte orientieren sich an der Debian-Distribution und apt. Für andere Distributionen bzw. Paketmanager wird es wahrscheinlich ähnliche Lösungen geben.

Installation und Konfiguration

Die Installation des Paketes geht relativ schnell über den Paketmanager:

sudo apt-get install unattended-upgrades

Als nächstes müssen noch zwei kleine Konfigurationsdateien angelegt werden.

20auto-upgrades

Für die kleinere der beiden Konfigurationsdateien (/etc/apt/apt.conf.d/20auto-upgrades) hat man zwei Möglichkeiten:

Option 1:

Man erstellt manuell die Datei „/etc/apt/apt.conf.d/20auto-upgrades“ mit folgendem Inhalt:

APT::Periodic::RandomSleep "900";
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Die Optionen können später noch genauer nachgelesen werden, eine kurze Erklärung soll es hier aber schon geben:

  • APT::Periodic::RandomSleep „900“ – Warte zwischen 0 und 900 Sekunden (15 Minuten) bevor die Updates heruntergeladen werden. Das soll die Mirror-Server entlasten.
  • APT::Periodic::Update-Package-Lists „1“; – Update die Paketlisten
  • APT::Periodic::Unattended-Upgrade „1“; – Führe unbeaufsichtigte Upgrades durch

Option 2:

Man führt den folgenden Befehl aus:

sudo dpkg-reconfigure unattended-upgrades

Aus den Angaben wird dann die o.g. Datei erzeugt.

50unattended-upgrades

Mit dieser etwas längeren Konfigurationsdatei kann man noch etwas Feintuning betreiben. Die Datei findet man unter „/etc/apt/apt.conf.d/50unattended-upgrades“. Der Inhalt sollte so ähnlich aussehen:

// Automatically upgrade packages from these origin patterns
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).
// "o=Debian,a=stable";
// "o=Debian,a=stable-updates";
// "o=Debian,a=proposed-updates";
 "origin=Debian,archive=stable,label=Debian-Security";
 "origin=Debian,archive=oldstable,label=Debian-Security";
};

// List of packages to not update
Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};

// This option allows you to control if on a unclean dpkg exit
// unattended-upgrades will automatically run 
// dpkg --force-confold --configure -a
// The default is true, to ensure updates keep getting installed
//Unattended-Upgrade::AutoFixInterruptedDpkg "false";

// Split the upgrade into the smallest possible chunks so that
// they can be interrupted with SIGUSR1. This makes the upgrade
// a bit slower but it has the benefit that shutdown while a upgrade
// is running is possible (with a small delay)
//Unattended-Upgrade::MinimalSteps "true";

// Install all unattended-upgrades when the machine is shuting down
// instead of doing it in the background while the machine is running
// This will (obviously) make shutdown slower
//Unattended-Upgrade::InstallOnShutdown "true";

// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "user@example.com"
// Unattended-Upgrade::Mail "root";

// Set this value to "true" to get emails only on errors. Default
// is to always send a mail if Unattended-Upgrade::Mail is set
//Unattended-Upgrade::MailOnlyOnError "true";

// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
//Unattended-Upgrade::Remove-Unused-Dependencies "false";

// Automatically reboot *WITHOUT CONFIRMATION* if a 
// the file /var/run/reboot-required is found after the upgrade 
//Unattended-Upgrade::Automatic-Reboot "false";


// Use apt bandwidth limit feature, this example limits the download
// speed to 70kb/sec
//Acquire::http::Dl-Limit "70";

Ich gehe davon aus, das die Kommentare für sich selbst sprechen. Per Default werden auch nur Security-Updates installiert, wobei im Zweifel auf ein Reboot verzichtet wird.

Eine Anmerkung noch zu der Email-Option:

Unattended-Upgrade::Mail "root";

Möchte man diese nutzen, so muss das „mail“ Kommando verfügbar sein. Am Besten installiert man sich dazu einfach das Paket „bsd-mailx“.

Fazit

Unattended-Upgrades ist ein ganz nettes Tool, mit dem man zeitnah kritische Sicherheitsupdates einspielen kann. Das Tool informiert den Administration nach erledigter Arbeit über die ausgeführten Schritte, sodass trotzdem die volle Kontrolle erhalten bleibt.

~ Sebastian