Linux Debian Server mit Bordmitteln auf Stand halten, so gehts
Horrormeldungen wie die zum aktuellen Thema Shellshock (eine Sicherheitslücke in der Unix-Shell Bash) haben mich meine Updatestrategie für meinen privaten Server überdenken lassen. Bislang habe ich immer mal manuell sporadisch nach Updates geschaut, das sollte besser gelöst werden!
Die Idee
Ich möchte täglich eine Email erhalten, wenn es Updates zum installieren gibt. Dabei möchte ich bereits vorhandene Bordmittel nutzen… also das Ganze umsetzen ohne auf irgendwelche Zusatzprogramme zurückgreifen zu müssen.
Hinweis: Natürlich kann man Updates auch automatisch (unattendend) installieren lassen, davon rate ich aber ab, da man nie wissen kann, was ggf. kaputt geht.
Die Lösung in 2 einfachen Schritten
- APT anpassen
- Cronjob einrichten
APT anpassen
Unter Debian werden Pakete / Programme in der Regel mit APT (Advanced Packaging Tool) installiert und aktualisiert. Hier setzen wir an und teilen APT mit, dass die Paketlisten täglich automatisch herunterladen werden sollen (diese enthalten die Informationen über verfügbare neuere Versionen der installierten Pakete).
Damit das tatsächliche Update nachher schneller geht sollen auch gleich die Paketupdates heruntergeladen (aber nicht installiert!) werden.
Hierzu einfach diese beiden Zeilen Code als root
aus einem beliebigen Verzeichnis auf dem Server ausführen:
echo 'APT::Periodic::Update-Package-Lists "1";' >> /etc/apt/apt.conf.d/10periodic echo 'APT::Periodic::Download-Upgradeable-Packages "1";' >> /etc/apt/apt.conf.d/10periodic
Weiter braucht Ihr nichts zu tun, da die neuen Anweisungen nun über den Cronjob in /etc/cron.daily/apt
automatisch abgearbeitet werden. Die neuen Werte sind sofort (ohne irgendeinen Neustart eines Dienstes) aktiv und können mittels apt-config dump | grep Periodic
ausgegeben werden.
Wichtiger Tipp: Damit die Listen über den diesen Cronjob auch täglich heruntergeladen werden können, müssen die Berechtigungen auch stimmen. Aus irgendeinem Grund waren alle Skripte im /etc/cron.daily
Ordner bei mir auf 644
statt 755
gesetzt. Also – sollte es bei Euch nicht gehen, dann einfach mal ein chmod 755 /etc/cron.daily/*
ausführen.
Cronjob einrichten
Da die täglichen Cronjobs unter Debian standardmäßig gegen 2 Uhr nachts ausgeführt werden, APT jedoch beim Download noch eine künstliche Pause zwischen 0 und 1800 Sekunden (30 Minuten) über die Config-Variable APT::Periodic::RandomSleep
(default = 1800) einbaut, damit nicht alle Server zur gleichen Zeit die Ressourcen anfragen, empfehle ich den Cronjob ab 3 Uhr nachts auszuführen. Da ich wahrscheinlich nicht von 9 Uhr am PC bin, habe ich mal 08:35 Uhr gewählt.
Der einfachste Weg ist es nun unter /etc/cron.d/
eine neue Datei (hier apt-update-check
) anzulegen, die für den Email-Versand sorgt.
Hierzu einfach diese beiden Zeilen Code als root
aus einem beliebigen Verzeichnis auf dem Server ausführen:
echo "MAILTO=name@domain.tld" >> /etc/cron.d/apt-update-check echo "35 08 * * * root apt-get upgrade -s -qq | grep ^Inst | sed 's/^Inst //'" >> /etc/cron.d/apt-update-check
Wichtig: Den Teil name@domain.tld
müsst Ihr natürlich noch durch Eure Email-Adresse ersetzen!
Das war schon alles. Ab sofort erhaltet Ihr eine Email (in diesem Fall um 08:35 Uhr) wenn es Updates gibt. Sollte es keine Updates geben, so wird auch keine Email versendet. Ihr werdet also nicht täglich zugespammt.
Um die Updates dann zu installieren, müsst Ihr wieder auf den Server gehen und die Updates anstoßen:
apt-get upgrade
Vielen Dank Ansas :) Hätte ich auch mal selbst drauf kommen können :D
Gern… ja, manchmal ist es ganz einfach ;)