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:

  1. Windows-OS-Updates → Windows Update for Business (WUfB) per Intune oder GPO
  2. Drittanbieter-Software auf Windows → Chocolatey for Business, winget oder PSWindowsUpdate
  3. 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


Praxis-Checkliste


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.

← Zurück zur Übersicht