Automatische Sicherheitsupdates schützen Server vor bekannten Sicherheitslücken ohne manuellen Eingriff. Besonders kritische Patches werden so zeitnah eingespielt.
Warum automatische Updates?
Vorteile
- Schnelle Reaktion: Sicherheitsupdates innerhalb von Stunden
- Kein Vergessen: Updates passieren auch im Urlaub
- Geringeres Risiko: Bekannte Lücken werden zeitnah geschlossen
Risiken
- Unerwartete Änderungen: Selten, aber möglich
- Neustart erforderlich: Manche Updates benötigen Reboot
- Abhängigkeiten: Theoretisch können Updates etwas "kaputt" machen
Empfehlung: Nur Sicherheitsupdates automatisch, keine Feature-Updates.
Ubuntu/Debian: Unattended-Upgrades
Installation
apt update
apt install unattended-upgrades apt-listchangesAutomatische Aktivierung
dpkg-reconfigure -plow unattended-upgrades
# "Ja" auswählenKonfiguration prüfen
cat /etc/apt/apt.conf.d/20auto-upgradesInhalt sollte sein:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";Detaillierte Konfiguration
/etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
// Sicherheitsupdates (wichtigste)
"${distro_id}:${distro_codename}-security";
// Empfohlene Updates (optional)
// "${distro_id}:${distro_codename}-updates";
// Für ESM (Ubuntu Pro)
// "${distro_id}ESMApps:${distro_codename}-apps-security";
// "${distro_id}ESM:${distro_codename}-infra-security";
};
// Pakete vom Upgrade ausschließen
Unattended-Upgrade::Package-Blacklist {
// "linux-image*";
// "mysql-server*";
};
// Bei Upgrade-Problemen Mail senden
Unattended-Upgrade::Mail "admin@example.com";
// Nur bei Fehlern mailen
Unattended-Upgrade::MailReport "on-change";
// Ungenutzte Kernel entfernen
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
// Ungenutzte Abhängigkeiten entfernen
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// Automatischer Neustart wenn nötig (Vorsicht!)
// Unattended-Upgrade::Automatic-Reboot "true";
// Unattended-Upgrade::Automatic-Reboot-Time "02:00";
// Download-Limit
// Acquire::http::Dl-Limit "1000";
// Logging
Unattended-Upgrade::SyslogEnable "true";
Unattended-Upgrade::SyslogFacility "daemon";Wichtigste Einstellungen
| Option | Empfehlung | Bedeutung | |--------|------------|-----------| | Allowed-Origins | Nur -security | Welche Quellen | | Package-Blacklist | kritische Pakete | Ausnahmen | | Mail | Admin-Adresse | Benachrichtigungen | | Automatic-Reboot | false | Automatischer Neustart | | Remove-Unused | true | Aufräumen |
E-Mail-Benachrichtigung einrichten
Postfix für lokale Mails
apt install postfix mailutils
# "Local only" auswählenTest-Mail
echo "Test" | mail -s "Unattended-Upgrades Test" admin@example.comKonfiguration für E-Mails
# /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailReport "on-change";
// oder "always" für jede AusführungManueller Test
Dry-Run (Simulation)
unattended-upgrades --dry-run --debugEchte Ausführung
unattended-upgrades -vLogs prüfen
cat /var/log/unattended-upgrades/unattended-upgrades.log
tail -f /var/log/unattended-upgrades/unattended-upgrades.logZeitplan anpassen
Standard-Timer
systemctl status apt-daily.timer
systemctl status apt-daily-upgrade.timerTimer anzeigen
systemctl list-timers | grep aptZeitpunkt ändern
# Override für apt-daily-upgrade erstellen
systemctl edit apt-daily-upgrade.timer[Timer]
OnCalendar=
OnCalendar=*-*-* 4:00
RandomizedDelaySec=0systemctl daemon-reloadNeustart-Management
Automatischen Neustart aktivieren (optional)
# /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
Unattended-Upgrade::Automatic-Reboot-WithUsers "false";Prüfen ob Neustart nötig
# Datei existiert wenn Neustart nötig
ls /var/run/reboot-required
# Details
cat /var/run/reboot-required.pkgsBenachrichtigung statt automatischem Reboot
# Skript erstellen
cat > /usr/local/bin/check-reboot-required.sh << 'EOF'
#!/bin/bash
if [ -f /var/run/reboot-required ]; then
echo "Neustart erforderlich auf $(hostname)" | \
mail -s "Reboot Required: $(hostname)" admin@example.com
fi
EOF
chmod +x /usr/local/bin/check-reboot-required.sh
# Cron-Job
echo "0 8 * * * root /usr/local/bin/check-reboot-required.sh" >> /etc/crontabPakete ausschließen
Blacklist für kritische Pakete
Unattended-Upgrade::Package-Blacklist {
// Datenbanken
"mysql-server";
"mariadb-server";
"postgresql";
// Kernel (wenn manuell verwaltet)
// "linux-image*";
// "linux-headers*";
// Webserver
// "nginx";
// "apache2";
};Regex-Patterns
Unattended-Upgrade::Package-Blacklist {
"^libc"; // Alle Pakete die mit libc beginnen
};CentOS/AlmaLinux/Rocky: dnf-automatic
Installation
dnf install dnf-automaticKonfiguration
# /etc/dnf/automatic.conf
[commands]
# Nur Sicherheitsupdates
upgrade_type = security
# Updates herunterladen und installieren
download_updates = yes
apply_updates = yes
[emitters]
emit_via = email,stdio
[email]
email_from = root@localhost
email_to = admin@example.com
email_host = localhost
[base]
debuglevel = 1Aktivieren
systemctl enable --now dnf-automatic.timerStatus prüfen
systemctl status dnf-automatic.timer
systemctl list-timers | grep dnfMonitoring und Alerting
Update-Status überwachen
# Skript: /usr/local/bin/check-updates.sh
#!/bin/bash
UPDATES=$(apt list --upgradable 2>/dev/null | grep -c "upgradable")
if [ "$UPDATES" -gt 0 ]; then
echo "WARN: $UPDATES updates pending"
exit 1
fi
echo "OK: System up to date"
exit 0Integration mit Monitoring
- Nagios/Icinga: check_apt Plugin
- Zabbix: apt.* Items
- Prometheus: node_exporter + Textfile
Troubleshooting
Updates werden nicht installiert
# Logs prüfen
cat /var/log/unattended-upgrades/unattended-upgrades.log
# Debug-Modus
unattended-upgrades --dry-run --debug 2>&1 | lessAPT ist gesperrt
# Prüfen ob APT läuft
ps aux | grep apt
# Lock-Datei prüfen
lsof /var/lib/dpkg/lock-frontendFehler bei bestimmten Paketen
# Manuell beheben
apt update
apt --fix-broken install
apt upgradeBest Practices
Do's
- Nur Sicherheitsupdates automatisch
- E-Mail-Benachrichtigung aktivieren
- Logs regelmäßig prüfen
- Reboot-Required überwachen
- Backup vor kritischen Systemen
Don'ts
- Automatischen Reboot auf Produktivsystemen ohne Wartungsfenster
- Alle Updates automatisch (nicht nur Security)
- Kritische Datenbank-Updates automatisch
Zusammenfassung
# Ubuntu/Debian
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
# Test
unattended-upgrades --dry-run
# Logs
tail -f /var/log/unattended-upgrades/unattended-upgrades.log# CentOS/AlmaLinux
dnf install dnf-automatic
systemctl enable --now dnf-automatic.timerFazit
Automatische Sicherheitsupdates sind für Server essentiell. Die Einrichtung unter Ubuntu/Debian mit unattended-upgrades ist einfach und zuverlässig. Beschränken Sie automatische Updates auf Sicherheits-Patches, richten Sie E-Mail-Benachrichtigungen ein und überwachen Sie, ob Neustarts erforderlich sind. Kritische Produktivsysteme sollten trotzdem regelmäßig manuell geprüft werden.