DBAtlas · Atlas d'exploitation des bases de données

Durcissement de la sécurité SQL Server (Linux et Windows : évaluation, réseau, TLS, authentification, autorisations, audit, TDE)

SQL ServerNiveau: IntermédiaireDurée: 5 min (évaluation) – 3 heures (durcissement complet)

Ce n'est pas un guide d'installation : il trouve et corrige les failles d'une instance SQL Server 2019 / 2022 / 2025 en service (Linux ou Windows). D'abord, une Évaluation de sécurité en lecture seule liste les failles par ordre de gravité et indique vers quelle carte mène chaque constat ; ensuite, vous traitez les domaines un par un ou tous dans l'ordre : adresse d'écoute et firewall, Force Encryption + certificat et validation côté client, désactivation de sa et stratégie de mot de passe (CHECK_POLICY), rôles et utilisateur applicatif sans DDL, surface d'attaque (xp_cmdshell, TRUSTWORTHY, guest), Server Audit, TDE (sauvegarde du certificat obligatoire), sauvegardes chiffrées, compte de service et droits sur les fichiers, suivi des CU. TDE et le chiffrement des sauvegardes sont disponibles en Standard et Enterprise (pas en Express). À la fin, l'évaluation est relancée.

Topologie: Instance SQL Server unique (Linux ou Windows) + serveur d'application ; Always On AG dans les notes

Scénarios

  • Évaluation de sécurité : quelles sont mes failles ? (lecture seule) — Le contrôle à lancer en premier : sa, stratégie de mot de passe, mots de passe vides, membres sysadmin, autorisations de public/guest, xp_cmdshell, connexions non chiffrées, audit, TDE et sauvegardes de certificats, ports et firewall ; il ne modifie rien.
  • Durcissement complet (tout dans l'ordre) — Instance nouvellement installée ou jamais durcie : tous les domaines sont appliqués dans un ordre sûr ; SQL Server est redémarré une ou deux fois (fenêtre de maintenance nécessaire).
  • Réseau et connectivité : qui peut se connecter, et d'où ? (écoute, firewall, Browser) — SQL Server écoute sur toutes les interfaces, 1433 est ouvert à tous, SQL Browser tourne sans nécessité. Changer l'adresse d'écoute impose un redémarrage.
  • Chiffrer les connexions (Force Encryption, certificat, validation côté client) — Les connexions sont non chiffrées ou utilisent un certificat temporaire auto-signé ; les clients utilisent TrustServerCertificate=true. Changer de certificat impose un redémarrage.
  • Authentification et mots de passe (sa, CHECK_POLICY, authentification Windows) — sa activé, pas de stratégie de mot de passe sur les logins SQL, mots de passe vides/faibles ; compte DBA personnel et désactivation de sa. Pas d'interruption (seul le passage à l'authentification Windows impose un redémarrage).
  • Moindre privilège et surface d'attaque (rôles, public, guest, xp_cmdshell) — L'utilisateur applicatif est db_owner ou sysadmin, autorisations en trop sur public/guest, xp_cmdshell/TRUSTWORTHY activés ; conception des rôles et rapport des autorisations. Pas d'interruption.
  • Audit : qui a fait quoi ? (Server Audit, Database Audit Specification) — L'auditeur veut une trace des connexions, des changements d'autorisations et de schéma ; Server Audit vers un fichier (ou le journal des événements Windows), transfert vers un système central et rétention. Pas d'interruption. Sans licence supplémentaire dans toutes les éditions (2016 SP1+).
  • Chiffrer les données au repos (TDE) — TDE contre l'ouverture sur un autre serveur d'un disque, d'un fichier de données ou d'une sauvegarde : DMK, certificat, DEK. Se fait en ligne ; la sauvegarde du certificat est OBLIGATOIRE (si elle est perdue, la base et ses sauvegardes ne peuvent plus être ouvertes). Licence : disponible dans SQL Server 2019+ Standard et Enterprise, pas en Express.
  • Sécurité des sauvegardes (sauvegarde chiffrée, certificat, droits) — Sauvegardes non chiffrées, répertoire de sauvegarde ouvert à tous, mot de passe en clair dans les scripts ; BACKUP … WITH ENCRYPTION, sauvegarde du certificat et droits sur le répertoire. Pas d'interruption. Le chiffrement des sauvegardes est disponible en Standard et Enterprise, pas en Express.
  • Côté système d'exploitation (compte de service, droits sur les fichiers, SELinux) — Le service tourne sous LocalSystem ou un compte administrateur, les répertoires de données/sauvegardes sont ouverts à tous, SELinux est désactivé ; changer de compte de service impose un redémarrage.
  • Correctifs et version : suis-je sur une version prise en charge et sur le dernier CU ? — Version, niveau de CU et fin de support (2016 terminé en juillet 2026) ; renvoie au guide de patch CU pour l'application. Lecture seule.

Avant de commencer

  • SQL Server est en service ; mssql-tools18 est installé et … est sysadmin. sqlcmd se trouve sous /opt/mssql-tools18/bin/ (absent du PATH ; le guide utilise le chemin complet). Avant de lancer le script, placez le mot de passe dans une variable sans l'afficher : read -rsp 'Mot de passe : ' SQLCMDPASSWORD; export SQLCMDPASSWORD et sudo --preserve-env=SQLCMDPASSWORD bash <script>.sh. Installation : Installation de SQL Server sous Linux.
  • Une session PowerShell administrateur ; le compte Windows connecté est sysadmin dans SQL Server (sqlcmd -E). Installation : Installation de SQL Server sous Windows.
  • Deux sessions distinctes sont ouvertes : dans l'une, vous appliquez les étapes ; dans l'autre, une connexion sysadmin (sqlcmd) reste ouverte. Après la désactivation de sa, le firewall, Force Encryption et les changements de service, testez une nouvelle connexion dans une session distincte ; ne fermez pas l'ancienne session. Dernier recours : une connexion DAC locale (sqlcmd -A) fonctionne toujours depuis le serveur lui-même ; si vous êtes complètement bloqué, en mode mono-utilisateur (…systemctl stop mssql-server; sudo -u mssql /opt/mssql/bin/sqlservr -m…net start … /m…) un administrateur local entre en tant que sysadmin.
  • Fenêtre de maintenance : SQL Server sera redémarré pour les domaines que vous choisissez (adresse d'écoute, certificat/Force Encryption, compte de service, mode d'authentification).… Dans un AG, appliquez d'abord sur les replicas secondaires, puis changez le primary par un failover et appliquez sur l'ancien primary.…
  • Liste des applications qui se connectent (serveur, login, pilote). L'étape d'évaluation affiche celles qui sont connectées en ce moment.
  • Une sauvegarde complète récente et des sauvegardes de master/msdb existent (guide de sauvegarde). Avec TDE et le chiffrement des sauvegardes, les données ne peuvent pas être récupérées sans la sauvegarde du certificat.

Phases du guide

  • Évaluation de sécurité (lecture seule) — Lister les constats à l'intérieur de l'instance · Contrôler le côté système d'exploitation · Contrôler le côté système d'exploitation
  • Avant de commencer : point de retour — Prendre une copie des logins, des réglages et de la configuration · Prendre une copie des logins, des réglages et du registre
  • Authentification — 1. Diagnostic — Afficher les logins, la stratégie et le mode d'authentification
  • Authentification — 3. Application — Créer les logins applicatif et de reporting avec stratégie · Créer les logins applicatif et de reporting avec stratégie · Changer les mots de passe vides ou identiques au nom du login · Changer les mots de passe vides ou identiques au nom du login · Préparer l'accès DBA personnel · Vérifier que le groupe AD des DBA est sysadmin …
  • Authentification — 4. Vérification — Vérifier l'état de l'authentification · Tester une connexion sa depuis le serveur d'application · Tester une connexion sa depuis le serveur d'application
  • Autorisations — 1. Diagnostic — Afficher les autorisations serveur et base de données
  • Autorisations — 3. Application — Réduire la surface d'attaque (sp_configure) · Désactiver TRUSTWORTHY et l'accès guest · Mettre en place les rôles, le schéma et les utilisateurs · Retirer l'utilisateur applicatif de db_owner · Rapport des autorisations
  • Autorisations — 4. Vérification — Vérifier que l'utilisateur applicatif ne peut pas exécuter de DDL
  • TLS — 1. Diagnostic — Afficher l'état de chiffrement des connexions
  • TLS — 3. Application — Créer une CA de test et un certificat serveur · Créer la clé et la demande de signature de certificat (CSR) · Vérifier le certificat et la clé · Définir le certificat et Force Encryption (mssql-conf) · Redémarrer SQL Server · Créer ou importer le certificat …
  • TLS — 4. Vérification — Vérifier que toutes les connexions TCP sont chiffrées
  • TLS — 5. Après : renouvellement du certificat — Procédure de renouvellement du certificat
  • Réseau — 1. Diagnostic : qui se connecte, et d'où ? — Afficher les adresses d'écoute et les sources des clients
  • Réseau — 3. Application — Restreindre l'adresse d'écoute (mssql-conf) · Restreindre l'adresse d'écoute (TCP/IP IPn) · Ouvrir le port dans le firewall uniquement aux réseaux autorisés · Ouvrir le port dans le firewall uniquement aux réseaux autorisés · Désactiver SQL Browser (instance par défaut) · Redémarrer SQL Server pour l'adresse d'écoute …
  • Réseau — 4. Vérification — Tester la connexion depuis le serveur d'application (nouvelle session) · Tester la connexion depuis le serveur d'application (nouvelle session)
  • Audit — 1. Diagnostic — Afficher les audits existants et l'audit des connexions
  • Audit — 2. Filet de sécurité — Préparer le répertoire d'audit · Préparer le répertoire d'audit
  • Audit — 3. Application — Définir le Server Audit et les événements de niveau serveur · Enregistrer l'accès aux données du schéma applicatif · Script d'export des enregistrements d'audit · Fichier de mot de passe, cron et rsyslog pour l'export
  • Audit — 4. Vérification — Faire une modification et la retrouver dans l'audit
  • Sauvegarde — 1. Diagnostic — Afficher l'état de chiffrement des sauvegardes et les certificats · Droits sur le répertoire des sauvegardes · Droits sur le répertoire des sauvegardes
  • Sauvegarde — 3. Application — Créer le certificat de sauvegarde et le sauvegarder immédiatement · Créer le certificat de sauvegarde et le sauvegarder immédiatement · Prendre une sauvegarde chiffrée et la vérifier · Corriger les droits du répertoire des sauvegardes · Corriger les droits du répertoire des sauvegardes
  • Système d'exploitation — 1. Diagnostic — Compte de service, droits et SELinux · Comptes de service et droits sur les répertoires
  • Système d'exploitation — 3. Application — Verrouiller le compte mssql et corriger les droits des répertoires · Garder SELinux en Enforcing et confiner SQL Server · Passer le compte de service à un compte virtuel ou un gMSA · Corriger les droits du répertoire de données
  • TDE — 1. Diagnostic — Afficher l'état de chiffrement et les certificats
  • TDE — 2. Filet de sécurité — Sauvegarde complète avant TDE
  • TDE — 3. Application — Créer la DMK et le certificat TDE, les sauvegarder immédiatement · Créer la DMK et le certificat TDE, les sauvegarder immédiatement · AG : charger le certificat TDE sur les autres replicas · Créer la clé de chiffrement de la base et activer TDE · Suivre jusqu'à la fin du chiffrement
  • TDE — 4. Vérification — Vérifier la base chiffrée et la sauvegarde du certificat
  • Correctifs et version — 1. Diagnostic — Afficher la version et le niveau de CU · Mises à jour en attente côté système d'exploitation
  • Correctifs et version — 5. Après — Consigner le calendrier des correctifs
  • Évaluation finale : les failles sont-elles corrigées ? — Relancer l'évaluation de sécurité · Contrôler de nouveau le côté système d'exploitation · Contrôler de nouveau le côté système d'exploitation
Ouvrir le plan pas à pas adapté à votre environnement →