- Offizieller Beitrag
Die Frage ist wie bekomme ich es hin, dass wir unsere Linux rechner immer mit den letzten Sicherheitspatches versorgen und diese auch aktivieren. Eigentlich unter Linux nicht so ein Problem wie unter windows, wo ich mind einmal im Monat Zwecks patches rebooten muss, aber auch Linux braucht einen reboot wenn sich der kernel geändert hat. Ausnahme livekernel patching, was aber in der Regel kostenpflichtig ist.
apt update geht immer
apt dist-upgrade geht auch immer spuck aber manchmal die Meldung aus Kernel updated reboot recommened to active (oder so ähnlich)
ist also die Frage wie erkenne ich das um dann und nur dann wenn nötig neu zu starten.
Ich sehe zwei mehrere Optionen:
- Den output von dist-upgrade umleiten und dann zu parsen auf die Meldung reboot recommended (nicht besonders stabil, funktioniert nicht mehr wenn die Ausgabe geändert wird) -betrahcten wir nicht weiter
- Es soll wohl unter debian und ubuntu eine Datei ala "/var/run/reboot-required" exisiteren wenn ein reboot nötig ist. D.h. man könnte auf deren existenz prüfen und dann rebooten
- Man nutze das Paket unattended upgrades welches von debian und ubuntu zu Verfügunggestellt wird und konfiguriert das entsprechend. Sicherlich die flexibelste Option da, man einzelne Pakete ausschließen kann auch mail notification konfiguert werden können etc.
zum zweiten Punkt könnte man so etwas nutzen
oder so etwas in der crontab
Das scheint aber nach meiner Erfahrung zumindest unter debian pve nicht wirklich zu funktionieren - hilfreich ist hier das tool needrestart welches man einfach mit apt install needrestart installieren kann.
Ganz klar ein restart wäre nötig um das zu aktivieren unter var/run steht aber nichts.
ich nutze jetzt needrestart -b und grep auf EXP dann bekommt man eine Ausgabe für einen erwartete neuen Kernel, Microcode etc.
# needrestart -b
NEEDRESTART-VER: 3.5
NEEDRESTART-KCUR: 6.2.11-1-pve
NEEDRESTART-KEXP: 6.2.16-4-bpo11-pve
NEEDRESTART-KSTA: 3
NEEDRESTART-UCSTA: 2
NEEDRESTART-UCCUR: 0x0a001173
NEEDRESTART-UCEXP: 0x0a0011d1
NEEDRESTART-SVC: apache2.service
NEEDRESTART-SVC: iscsid.service
NEEDRESTART-SVC: lldpd.service
NEEDRESTART-SVC: pve-cluster.service
NEEDRESTART-SVC: [email protected]
NEEDRESTART-SVC: rrdcached.service
NEEDRESTART-SVC: shellinabox.service
NEEDRESTART-SVC: ssh.service
NEEDRESTART-SVC: systemd-journald.service
NEEDRESTART-SVC: systemd-logind.service
NEEDRESTART-SVC: systemd-udevd.service
NEEDRESTART-SVC: zfs-zed.service
Alles anzeigen
wenn man sich dann so etwas als script in to crontab hängt
# cat reboot_if_required.sh
#!/bin/bash
#
# Check if a reboot is equired if yes do it with 30 delay
#
rm -f /root/server_needs_restart
if needrestart -b | grep "KSTA: 3"; then
touch /root/server_needs_restart;
fi;
if needrestart -b | grep "UCSTA: 2"; then
touch /root/server_needs_restart;
fi;
if [ -f /var/run/reboot-required ]; then
rm -f /root/server_needs_restart
shutdown -r +30;
fi;
if [ -f /root/server_needs_restart ]; then
rm -f /root/server_needs_restart
shutdown -r +30;
fi;
Alles anzeigen
# update packages first week of the month on thursday 12
0 12 1-7 * * [ "$(date '+\%u')" = "4" ] && apt update;apt dist-upgrade -y
# update packages second week of the month on friday 15 +30min
0 15 8-14 * * [ "$(date '+\%u')" = "5" ] && /root/reboot_if_required.sh
rebooted das system jeden zweiten Freitag des Monats, aber nur wenn notwendig. Updates selber werden eine Woche vorher schon installiert. Muss man sich eben anpassen wie man es haben möchte. Auch ob man das besser erst auf einer Testmaschine macht bevor man patches auf alle Maschinen ausrollt und man potentiell alles lahmlegt wenn die Patches buggy sindBug hat.