SQL Server ohne aktuelle Patches: Warum Patchmanagement überlebenswichtig ist und wie ich es organisiere

Patchen oder Patchwork?

Du kennst das:
„Läuft doch.“
„Keine Zeit für Neustart.“
„Wir patchen im nächsten Quartal.“
Und dann steht der SQL Server mit offener Sicherheitslücke im Netz.

Kein Witz.
Kein Luxusproblem.
Ein ungepatchter SQL Server ist wie eine offene Tür bei Sturmflut.

Warum es kritisch ist

SQL Server läuft oft als Dienstkonto mit Sysadmin-Rechten.
Ein Exploit reicht – und der Angreifer hat Root-Zugriff auf alles:

  • Datenbankinhalte
  • Dateisystem
  • Netzwerk
  • ggf. sogar Active Directory

Angriffe über SQL Injection oder manipulierte DLLs sind kein Film.
Sie passieren.
Wenn Du nicht patchst, bist Du dran.

Wie Du den Patch-Stand prüfst

SQL Server verrät seine Version.
Und die Version sagt Dir, ob Du aktuell bist.

SELECT 
    SERVERPROPERTY('ProductVersion') AS Version,
    SERVERPROPERTY('ProductLevel') AS Patchlevel,
    SERVERPROPERTY('Edition') AS Edition,
    SERVERPROPERTY('EngineEdition') AS Engine

Beispielausgabe:

VersionPatchlevelEditionEngine
15.0.4261CU23Standard Edition3

Dann auf https://sqlserverbuilds.blogspot.com nachsehen:
Was ist der letzte CU (Cumulative Update)?
Bist Du drunter: patchen.

Mein Patchmanagement-Ablauf

Ich arbeite mit klaren Regeln:

  1. Monatlicher Reminder (immer zum 5. Werktag)
    Ich prüfe verfügbare CUs manuell oder per RSS.
  2. Testsystem patchen
    Virtuelle SQL-Kopie mit Produktivdaten (maskiert).
    Patch wird dort getestet.
  3. Review der SQL Server Logs
    Nach dem Patch:
    • Dienste gestartet?
    • Jobs laufen?
    • Fehler in den Logs?
  4. Produktiv patchen nach Freigabe
    Außerhalb der Geschäftszeiten.
    Immer mit Backup vorab.
  5. Rollback vorbereiten
    Wenn’s knallt, will ich sofort zurück.
    Backup. Snapshot. Downgrade-Skript.
  6. Dokumentation aktualisieren
    Patch-Level wird im IT-Wiki und Monitoring aktualisiert.

CU-Installation automatisieren (PowerShell)

Ich lasse mich benachrichtigen – aber patche nicht blind.

Invoke-WebRequest -Uri https://go.microsoft.com/fwlink/?linkid=866658 -OutFile "CUSetup.exe"
Start-Process -FilePath "CUSetup.exe" -ArgumentList "/quiet /IAcceptSQLServerLicenseTerms"

Wichtig: Vorher alle SQL-Dienste kontrolliert stoppen, wenn nötig.
Und Reboot einplanen.

Patchstatus für alle Instanzen prüfen

T-SQL mit Central Management Server oder über sp_MSforeachdb reicht nicht.
Ich nutze ein eigenes Reporting mit diesem Query:

SELECT 
    @@SERVERNAME AS ServerName,
    SERVERPROPERTY('ProductVersion') AS Version,
    SERVERPROPERTY('ProductUpdateLevel') AS CU,
    SERVERPROPERTY('ProductBuild') AS Build,
    SERVERPROPERTY('Edition') AS Edition

Zusätzlich ein SSIS-Paket, das die Werte in ein zentrales Monitoring schreibt.
Damit sehe ich auf einen Blick, wo es klemmt.

Was ist mit automatischen Updates?

SQL Server patcht sich nicht automatisch.
Selbst wenn Du WSUS nutzt, werden CUs oft nicht verteilt.

Du musst es planen.
Manuell.
Oder skripten.
Aber Du kommst nicht drum herum.

Typische Ausreden – und meine Antworten

„Wir haben keinen Testserver.“

Dann patch nachts. Mit Backup. Und Rauchmelder.

„Ich hab Angst, dass was kaputt geht.“

Dann solltest Du ein Testsystem einführen. Oder einen Notfallplan.

„Das hat doch bisher immer funktioniert.“

Ja. Bis zum ersten Incident mit 5-stelligem Schaden.

Patch oder stirb.

SQL Server ist sicher.
Wenn Du ihn pflegst.

Ohne aktuelle Patches ist er ein Risiko – für Dich, für Deine Firma, für alle Daten.
Ich patche regelmäßig.
Weil ich nachts ruhig schlafen will.

Kategorien:

Schlagwörter:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert