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