DBAtlas · Atlas für Datenbankbetrieb

SQL Server-Sicherheitshärtung (Linux und Windows: Bewertung, Netzwerk, TLS, Authentifizierung, Berechtigungen, Audit, TDE)

SQL ServerStufe: MittelDauer: 5 Min. (Bewertung) – 3 Std. (vollständige Härtung)

Kein Installationsguide: Der Guide findet und schließt die Lücken einer laufenden SQL Server-Instanz 2019 / 2022 / 2025 (Linux oder Windows). Zuerst listet die schreibgeschützte Sicherheitsbewertung die Lücken nach Schweregrad auf und nennt zu jedem Befund die Karte, die ihn behebt; danach schließt du die Bereiche einzeln oder alle der Reihe nach: Listen-Adresse und Firewall, Force Encryption + Zertifikat und Prüfung auf dem Client, Deaktivieren von sa und Kennwortrichtlinie (CHECK_POLICY), Rollen und ein Anwendungsbenutzer ohne DDL, Angriffsfläche (xp_cmdshell, TRUSTWORTHY, guest), Server Audit, TDE (Zertifikatssicherung Pflicht), verschlüsselte Sicherungen, Dienstkonto und Dateiberechtigungen, CU-Verfolgung. TDE und Sicherungsverschlüsselung gibt es in Standard und Enterprise (nicht in Express). Zum Schluss läuft die Bewertung erneut.

Topologie: Einzelne SQL Server-Instanz (Linux oder Windows) + Anwendungsserver; Always On AG in den Hinweisen

Szenarien

  • Sicherheitsbewertung: Welche Lücken habe ich? (schreibgeschützt) — Der erste Scan: sa, Kennwortrichtlinie, leere Kennwörter, sysadmin-Mitglieder, Berechtigungen von public/guest, xp_cmdshell, unverschlüsselte Verbindungen, Audit, TDE und Zertifikatssicherungen, Ports und Firewall; er ändert nichts.
  • Vollständige Härtung (alles der Reihe nach) — Neu installierte oder nie gehärtete Instanz: alle Bereiche werden in sicherer Reihenfolge umgesetzt; SQL Server wird ein- bis zweimal neu gestartet (Wartungsfenster nötig).
  • Netzwerk und Verbindungen: Wer darf sich von wo verbinden? (Listen-Adresse, Firewall, Browser) — SQL Server lauscht auf allen Schnittstellen, 1433 ist für alle offen, SQL Browser läuft ohne Bedarf. Eine Änderung der Listen-Adresse erfordert einen Neustart.
  • Verbindungen verschlüsseln (Force Encryption, Zertifikat, Prüfung auf dem Client) — Verbindungen sind unverschlüsselt oder nutzen ein selbstsigniertes temporäres Zertifikat; Clients verwenden TrustServerCertificate=true. Ein Zertifikatswechsel erfordert einen Neustart.
  • Authentifizierung und Kennwörter (sa, CHECK_POLICY, Windows-Authentifizierung) — sa aktiviert, keine Kennwortrichtlinie für SQL-Logins, leere/schwache Kennwörter; ein persönliches DBA-Konto und das Deaktivieren von sa. Keine Downtime (nur der Wechsel zur Windows-Authentifizierung erfordert einen Neustart).
  • Minimale Berechtigungen und Angriffsfläche (Rollen, public, guest, xp_cmdshell) — Anwendungsbenutzer ist db_owner oder sysadmin, zusätzliche Berechtigungen für public/guest, xp_cmdshell/TRUSTWORTHY aktiviert; Rollendesign und Berechtigungsbericht. Keine Downtime.
  • Audit: Wer hat was getan? (Server Audit, Database Audit Specification) — Der Prüfer verlangt Aufzeichnungen über Anmeldungen, Berechtigungs- und Schemaänderungen; Server Audit in eine Datei (oder das Windows-Ereignisprotokoll), Weiterleitung an ein zentrales System und Aufbewahrung. Keine Downtime. In allen Editionen ohne zusätzliche Lizenz (2016 SP1+).
  • Daten auf der Disk verschlüsseln (TDE) — TDE gegen das Öffnen von Disk, Datendatei oder Sicherung auf einem anderen Server: DMK, Zertifikat, DEK. Erfolgt online; die Zertifikatssicherung ist PFLICHT (geht sie verloren, lassen sich die Datenbank und ihre Sicherungen nicht mehr öffnen). Lizenz: in SQL Server 2019+ Standard und Enterprise vorhanden, nicht in Express.
  • Sicherheit der Sicherungen (verschlüsselte Sicherung, Zertifikat, Berechtigungen) — Sicherungen sind unverschlüsselt, das Sicherungsverzeichnis ist für alle offen, Kennwörter stehen im Klartext in Skripten; BACKUP … WITH ENCRYPTION, Zertifikatssicherung und Verzeichnisberechtigungen. Keine Downtime. Sicherungsverschlüsselung gibt es in Standard und Enterprise, nicht in Express.
  • Betriebssystemseite (Dienstkonto, Dateiberechtigungen, SELinux) — Der Dienst läuft als LocalSystem oder mit einem Administratorkonto, Daten-/Sicherungsverzeichnisse sind für alle offen, SELinux ist deaktiviert; ein Wechsel des Dienstkontos erfordert einen Neustart.
  • Patches und Version: Bin ich auf einer unterstützten Version und dem neuesten CU? — Version, CU-Stand und Supportende (2016 endete im Juli 2026); verweist zum Einspielen auf den CU-Patch-Guide. Schreibgeschützt.

Vor dem Start

  • SQL Server läuft; mssql-tools18 ist installiert und … ist sysadmin. sqlcmd liegt unter /opt/mssql-tools18/bin/ (nicht im PATH; der Guide verwendet den vollständigen Pfad). Lies vor dem Ausführen des Skripts das Kennwort ohne Bildschirmausgabe in eine Variable ein: read -rsp 'Kennwort: ' SQLCMDPASSWORD; export SQLCMDPASSWORD und sudo --preserve-env=SQLCMDPASSWORD bash <script>.sh. Installation: SQL Server-Installation unter Linux.
  • Eine PowerShell-Sitzung als Administrator; das angemeldete Windows-Konto ist in SQL Server sysadmin (sqlcmd -E). Installation: SQL Server-Installation unter Windows.
  • Zwei getrennte Sitzungen sind offen: In der einen führst du die Schritte aus, in der anderen bleibt eine sysadmin-Verbindung (sqlcmd) offen. Teste nach dem Deaktivieren von sa, nach Firewall, Force Encryption und Dienständerungen eine neue Verbindung in einer separaten Sitzung; schließ die alte Sitzung nicht. Letzter Ausweg: Eine lokale DAC-Verbindung (sqlcmd -A) funktioniert immer vom Server selbst aus; bist du vollständig ausgesperrt, kommt im Einzelbenutzermodus (…systemctl stop mssql-server; sudo -u mssql /opt/mssql/bin/sqlservr -m…net start … /m…) ein lokaler Administrator als sysadmin hinein.
  • Wartungsfenster: In den gewählten Bereichen wird SQL Server neu gestartet (Listen-Adresse, Zertifikat/Force Encryption, Dienstkonto, Authentifizierungsmodus).… In einer AG zuerst auf den sekundären Replikaten umsetzen, dann per Failover das primäre Replikat wechseln und auf dem früheren primären Replikat umsetzen.…
  • Liste der verbundenen Anwendungen (Server, Login, Treiber). Der Bewertungsschritt zeigt die aktuell verbundenen.
  • Eine aktuelle vollständige Sicherung und Sicherungen von master/msdb sind vorhanden (Sicherungs-Guide). Bei TDE und Sicherungsverschlüsselung kommen die Daten ohne Zertifikatssicherung nicht zurück.

Phasen der Anleitung

  • Sicherheitsbewertung (schreibgeschützt) — Befunde innerhalb der Instanz auflisten · Betriebssystemseite prüfen · Betriebssystemseite prüfen
  • Vor dem Start: Rückfallpunkt — Kopie von Logins, Einstellungen und Konfiguration erstellen · Kopie von Logins, Einstellungen und Registrierung erstellen
  • Authentifizierung — 1. Diagnose — Logins, Richtlinie und Authentifizierungsmodus anzeigen
  • Authentifizierung — 3. Umsetzung — Anwendungs- und Reporting-Logins mit Richtlinie anlegen · Anwendungs- und Reporting-Logins mit Richtlinie anlegen · Leere und dem Login-Namen gleiche Kennwörter ändern · Leere und dem Login-Namen gleiche Kennwörter ändern · Persönlichen DBA-Zugang vorbereiten · Prüfen, dass die DBA-AD-Gruppe sysadmin ist …
  • Authentifizierung — 4. Verifikation — Authentifizierungsstatus prüfen · Anmeldung als sa vom Anwendungsserver testen · Anmeldung als sa vom Anwendungsserver testen
  • Berechtigungen — 1. Diagnose — Server- und Datenbankberechtigungen anzeigen
  • Berechtigungen — 3. Umsetzung — Angriffsfläche verkleinern (sp_configure) · TRUSTWORTHY und guest-Zugriff deaktivieren · Rollen, Schema und Benutzer einrichten · Anwendungsbenutzer aus db_owner entfernen · Berechtigungsbericht
  • Berechtigungen — 4. Verifikation — Prüfen, dass der Anwendungsbenutzer keine DDL ausführen kann
  • TLS — 1. Diagnose — Verschlüsselungsstatus der Verbindungen anzeigen
  • TLS — 3. Umsetzung — Test-CA und Serverzertifikat anlegen · Schlüssel und Zertifikatsanforderung (CSR) anlegen · Zertifikat und Schlüssel prüfen · Zertifikat und Force Encryption konfigurieren (mssql-conf) · SQL Server neu starten · Zertifikat anlegen oder importieren …
  • TLS — 4. Verifikation — Prüfen, dass alle TCP-Verbindungen verschlüsselt sind
  • TLS — 5. Danach: Zertifikat erneuern — Ablauf der Zertifikatserneuerung
  • Netzwerk — 1. Diagnose: Wer verbindet sich von wo? — Listen-Adressen und Client-Quellen anzeigen
  • Netzwerk — 3. Umsetzung — Listen-Adresse einschränken (mssql-conf) · Listen-Adresse einschränken (TCP/IP IPn) · Port in der Firewall nur für zugelassene Netze öffnen · Port in der Firewall nur für zugelassene Netze öffnen · SQL Browser deaktivieren (Standardinstanz) · SQL Server für die Listen-Adresse neu starten …
  • Netzwerk — 4. Verifikation — Verbindung vom Anwendungsserver testen (neue Sitzung) · Verbindung vom Anwendungsserver testen (neue Sitzung)
  • Audit — 1. Diagnose — Vorhandene Audits und Anmeldeüberwachung anzeigen
  • Audit — 2. Sicherheitsnetz — Audit-Verzeichnis vorbereiten · Audit-Verzeichnis vorbereiten
  • Audit — 3. Umsetzung — Server Audit und Ereignisse auf Serverebene definieren · Datenzugriff im Anwendungsschema aufzeichnen · Skript zum Export der Audit-Einträge · Kennwortdatei, cron und rsyslog für den Export
  • Audit — 4. Verifikation — Eine Änderung vornehmen und im Audit-Eintrag sehen
  • Sicherung — 1. Diagnose — Verschlüsselungsstatus der Sicherungen und Zertifikate anzeigen · Berechtigungen des Sicherungsverzeichnisses · Berechtigungen des Sicherungsverzeichnisses
  • Sicherung — 3. Umsetzung — Sicherungszertifikat anlegen und sofort sichern · Sicherungszertifikat anlegen und sofort sichern · Verschlüsselte Sicherung erstellen und prüfen · Berechtigungen des Sicherungsverzeichnisses korrigieren · Berechtigungen des Sicherungsverzeichnisses korrigieren
  • Betriebssystem — 1. Diagnose — Dienstkonto, Berechtigungen und SELinux · Dienstkonten und Verzeichnisberechtigungen
  • Betriebssystem — 3. Umsetzung — Konto mssql sperren und Verzeichnisberechtigungen korrigieren · SELinux auf Enforcing lassen und SQL Server einschränken · Dienstkonto auf virtuelles Konto oder gMSA umstellen · Berechtigungen des Datenverzeichnisses korrigieren
  • TDE — 1. Diagnose — Verschlüsselungsstatus und Zertifikate anzeigen
  • TDE — 2. Sicherheitsnetz — Vollständige Sicherung vor TDE
  • TDE — 3. Umsetzung — DMK und TDE-Zertifikat anlegen, sofort sichern · DMK und TDE-Zertifikat anlegen, sofort sichern · AG: TDE-Zertifikat auf die übrigen Replikate laden · Datenbankverschlüsselungsschlüssel anlegen und TDE aktivieren · Bis zum Ende der Verschlüsselung beobachten
  • TDE — 4. Verifikation — Verschlüsselte Datenbank und Zertifikatssicherung prüfen
  • Patches und Version — 1. Diagnose — Version und CU-Stand anzeigen · Ausstehende Updates auf Betriebssystemseite
  • Patches und Version — 5. Danach — Patch-Zeitplan dokumentieren
  • Abschließende Bewertung: Sind die Lücken geschlossen? — Sicherheitsbewertung erneut ausführen · Betriebssystemseite erneut prüfen · Betriebssystemseite erneut prüfen
Schritt-für-Schritt-Plan für Ihre Umgebung öffnen →