Automatisiertes Patching ohne Enterprise-Tool: Ein praxisnaher Guide
Einleitung
WSUS ist klobig, SCCM kostet ein Vermögen, Tanium ist Overkill für 80 Mitarbeiter – und trotzdem soll dein Patch-Stand auf Audit-Niveau sein. Die gute Nachricht: Es gibt einen Mittelweg, der ohne Enterprise-Lizenzen funktioniert. Dieser Artikel zeigt dir einen praxisnahen Stack, der Windows-Updates, Drittanbieter-Software und Linux-Server automatisiert patcht – mit Bordmitteln und Open-Source-Tools.
Warum das Thema wichtig ist
Patch-Management scheitert in KMU selten an mangelnder Einsicht, sondern an mangelnder Automatisierung. Wer Patches manuell anstößt, patcht in der Realität alle drei Monate. Wer automatisiert patcht, patcht wöchentlich – und schließt damit das Fenster, das Angreifer mit n-Day-Exploits aktiv ausnutzen. Public-Vulnerability-Telemetrie (CISA KEV, Mandiant) zeigt: Mehr als die Hälfte der erfolgreichen Initial-Access-Vorfälle nutzen Schwachstellen, für die >30 Tage Patches verfügbar waren. Automatisierung ist der Hebel, der diesen 30-Tage-Median auf 7 oder weniger drückt.
Die Architektur: Drei Säulen
Ein funktionierender Patch-Stack für KMU ohne Enterprise-Tool besteht aus drei Säulen:
- Windows-OS-Updates → Windows Update for Business (WUfB) per Intune oder GPO
- Drittanbieter-Software auf Windows → Chocolatey for Business, winget oder PSWindowsUpdate
- Linux-Server → unattended-upgrades / dnf-automatic + Ansible
Plus eine vierte, oft vergessene Säule: Compliance-Reporting, damit du weißt, ob das Ganze funktioniert.
Säule 1: Windows-OS-Updates mit WUfB
WUfB nutzt die normale Windows-Update-Infrastruktur, lässt sich aber zentral steuern (Deferral-Zeiträume, Deployment-Ringe). Kein eigener WSUS-Server nötig.
Per Intune (empfohlen, wenn vorhanden)
Drei Update-Ringe sind für KMU ein guter Standard:
| Ring | Geräte | Quality Update Defer | Feature Update Defer |
|---|---|---|---|
| Pilot | 5–10 % der Workstations (IT, Power-User) | 0 Tage | 0 Tage |
| Broad | 80 % der Workstations | 7 Tage | 30 Tage |
| Critical | Buchhaltung, Geschäftsführung, Maschinen-PCs | 14 Tage | 60 Tage |
Bei jedem Patch Tuesday landen Updates zuerst auf Pilot. Wer dort keine Probleme meldet, bekommt sie 7 Tage später auf Broad ausgerollt.
Per GPO (wenn ohne Intune)
Computer Configuration → Policies → Administrative Templates →
Windows Components → Windows Update → Manage updates offered from Windows Update
→ Select when Quality Updates are received: 7 Tage Defer
→ Select when Feature Updates are received: 30 Tage Defer
→ Configure Automatic Updates: 4 (Auto download, scheduled install)
→ Specify deadlines for automatic updates and restarts: 7 Tage
Wichtig: Active Hours setzen, damit Reboots nicht im laufenden Betrieb passieren.
Säule 2: Drittanbieter-Software – das vergessene Drittel
Über 70 % der ausnutzbaren Schwachstellen auf typischen Workstations stecken nicht im Windows-Kern, sondern in Browsern, Java, Adobe-Tools, 7-Zip, Notepad++, VLC, Zoom, Teams-Desktop, etc. WSUS und WUfB ignorieren das alles.
Variante A: Chocolatey for Business
choco upgrade all -y als Scheduled Task – fertig. Kommerzielle Lizenz ab ca. 8 USD/Endpoint/Jahr, was für die meisten KMU vertretbar ist.
# Scheduled Task: täglich 03:00 Uhr
$action = New-ScheduledTaskAction -Execute "powershell.exe" `
-Argument "-NoProfile -Command `"choco upgrade all -y --no-progress`""
$trigger = New-ScheduledTaskTrigger -Daily -At 3am
Register-ScheduledTask -TaskName "ChocoUpgradeAll" `
-Action $action -Trigger $trigger -RunLevel Highest -User "SYSTEM"
Variante B: winget (kostenlos, in Windows enthalten)
Seit Windows 10/11 ist winget an Bord. Für viele KMU reicht das:
# Alle installierten Pakete updaten
winget upgrade --all --silent --accept-source-agreements --accept-package-agreements
# Einzelnes Paket pinnen (wenn man eine Version nicht updaten will)
winget pin add Microsoft.Teams
Einschränkung: winget kennt nicht jede Branchensoftware – aber Browser, 7-Zip, VLC, Zoom, Notepad++, alle Visual-C++-Runtimes sind drin.
Variante C: PSWindowsUpdate (für reine OS-/MS-Update-Steuerung per PowerShell)
Install-Module PSWindowsUpdate -Force
Get-WindowsUpdate
Install-WindowsUpdate -AcceptAll -AutoReboot
Praktisch für Server, die du nicht in WUfB integrieren willst.
Säule 3: Linux-Server automatisiert patchen
Auf Debian/Ubuntu: unattended-upgrades.
sudo apt install unattended-upgrades apt-listchanges
sudo dpkg-reconfigure -plow unattended-upgrades
Konfiguration in /etc/apt/apt.conf.d/50unattended-upgrades:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
};
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:30";
Unattended-Upgrade::Mail "patches@example.com";
Auf RHEL/Rocky/Alma: dnf-automatic.
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
Konfiguration in /etc/dnf/automatic.conf:
[commands]
upgrade_type = security
apply_updates = yes
reboot = when-needed
reboot_command = "shutdown -r +5 'Reboot wegen Security-Updates'"
Mit Ansible orchestrieren
Wenn du mehr als eine Handvoll Server hast, lohnt sich Ansible:
# patch-linux.yml
- hosts: linux_servers
serial: "20%" # nicht alles auf einmal!
tasks:
- name: Update apt cache
apt: update_cache=yes
when: ansible_os_family == "Debian"
- name: Install security updates
apt:
upgrade: dist
autoremove: yes
when: ansible_os_family == "Debian"
- name: Reboot if required
reboot:
when: ansible_os_family == "Debian"
and ansible_facts['kernel'] != ansible_facts['kernel_running']
serial: "20%" ist Pflicht – sonst rebootet dir Ansible alle Server gleichzeitig. Klassiker.
Säule 4: Compliance-Reporting
Patches, die du nicht messen kannst, kannst du nicht vorzeigen. Drei einfache Möglichkeiten:
Variante A: PowerShell-Inventur per RMM
# Auf jedem Endpoint, Ergebnis ans RMM/Skript-Push-Tool
$lastBoot = (Get-CimInstance Win32_OperatingSystem).LastBootUpTime
$lastUpdate = (Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1).InstalledOn
$os = (Get-CimInstance Win32_OperatingSystem).Caption + " " + (Get-CimInstance Win32_OperatingSystem).Version
[PSCustomObject]@{
Hostname = $env:COMPUTERNAME
OS = $os
LastBoot = $lastBoot
LastPatch = $lastUpdate
Pending = (Get-WindowsUpdate -ErrorAction SilentlyContinue).Count
}
Variante B: Vulnerability Scanner als Compliance-Source
OpenVAS / Greenbone scannt deine Hosts und liefert dir „missing patches“ als CVE-Liste. Differenz zwischen Soll (verfügbarer Patch) und Ist (installiert) = deine Patch-Lücke.
Variante C: Wazuh Vulnerability Detection Module
Wenn du sowieso Wazuh als SIEM betreibst (siehe separater Artikel), aktivierst du das Vulnerability-Detection-Modul – fertig. Es korreliert installierte Software mit dem NVD-Feed und gibt dir pro Host eine CVE-Liste mit Severity. Free, integriert ins SIEM-Dashboard.
Stolperfallen aus der Praxis
- „Auto-Reboot in der Nacht“ – aber niemand fährt nachts den Server runter → Reboots passieren bei nächstem manuellen Logout, oft Tage später. Per
psexec,shutdown /r /t, oder Reboot-Policy lösen. - Maschinen-PCs in der Produktion → Nicht in den Standard-Ring, sondern dezidierter Wartungsfenster-Ring. Mit Produktionsleitung einmal verbindlich klären.
- Java patcht sich selbst → Stimmt nicht. Veraltete Java-Versionen sind ein Klassiker. Choco oder winget schließt das.
- Unattended-upgrades killt Server beim Reboot → Wenn Workloads auf bestimmten Versionen festhängen (z. B. Kernel-Modules), nur Security-Updates aktivieren, keine Distribution-Upgrades.
- „Wir patchen einmal im Quartal alle gebündelt“ → Bedeutet 90 Tage offene CVEs. Wöchentliche Iteration ist sicherer und weniger riskant pro Wave.
Praxis-Checkliste
- Windows-OS-Updates per WUfB (Intune oder GPO) mit Deployment-Ringen
- Active Hours pro Geräteklasse definiert
- Pilot-Ring mit IT/Power-Usern, 7 Tage Vorlauf vor Broad
- Drittanbieter-Software per Choco oder winget automatisch geupdated
- Scheduled Task für tägliches
winget upgradeoderchoco upgrade - Linux-Server mit unattended-upgrades / dnf-automatic
- Ansible-Playbook mit
serial-Throttling für orchestriertes Patching - Compliance-Report (RMM, Vuln-Scanner oder Wazuh) wöchentlich gesichtet
- Wartungsfenster für Produktion / kritische Server schriftlich vereinbart
- Reboot-Policy klar: Server bekommen Auto-Reboot oder manuelles Fenster
Fazit
Du brauchst kein Enterprise-Tool, um sauber zu patchen. Was du brauchst, ist ein konsistenter Stack: WUfB für Windows, winget oder Choco für Drittanbieter, unattended-upgrades / Ansible für Linux, plus ein Reporting, das dir sagt, ob es läuft. Einmal aufgebaut, läuft das Ganze stabil und spart dir hunderte Stunden manueller Patch-Arbeit pro Jahr. Die Initialinvestition: ein bis zwei Tage Setup. Der Return: Du bist bei jeder neuen kritischen CVE in Stunden statt Wochen patch-ready.
Wenn du tiefer einsteigen willst: Im Newsletter zeige ich jeden Monat konkrete Patch-Workflows, Ansible-Playbooks und Compliance-Reports. Trag dich ein.