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

Durcissement de la sécurité Oracle Database (évaluation, réseau, TLS, authentification, privilèges, Unified Auditing, TDE)

OracleNiveau: AvancéDurée: 5 min (évaluation) – 4 heures (durcissement complet)

Ce n'est pas un guide d'installation : il repère et corrige les failles d'une base Oracle 19c / 23ai (26ai) en fonctionnement (instance unique, Oracle Restart ou RAC ; CDB/PDB). L'Évaluation de sécurité, en lecture seule, liste d'abord les constats par ordre de gravité et indique vers quelle carte mène chacun d'eux ; vous corrigez ensuite les domaines un par un ou tous dans l'ordre : listener et TCP.VALIDNODE_CHECKING, pare-feu, TCPS (wallet) ou native network encryption, vérificateur de mot de passe 12C et profils, verrouillage des comptes par défaut, conception des rôles et retrait des privilèges UTL_* à PUBLIC, Unified Auditing et purge d'AUDSYS, TDE, sauvegardes chiffrées, système d'exploitation et suivi des RU. TDE et le chiffrement RMAN/Data Pump exigent la licence Advanced Security ; tout le reste est sans licence. À la fin, l'évaluation est relancée.

Topologie: Instance unique / Oracle Restart / RAC (2 à 8 nœuds), CDB + PDB ; serveur d'application (vérification côté client)

Scénarios

  • Évaluation de sécurité : quelles sont mes failles ? (lecture seule) — Le premier contrôle à lancer : comptes avec mot de passe par défaut et comptes ouverts, anciens vérificateurs de mot de passe, profils, privilèges DBA/ANY, packages PL/SQL UTL_ accordés à PUBLIC, audit, TDE, sessions non chiffrées, listener et droits sur les fichiers ; il ne modifie rien.
  • Durcissement complet (tous les domaines dans l'ordre) — Base nouvellement installée ou jamais durcie : tous les domaines sont appliqués dans un ordre sûr ; le listener et la base sont redémarrés une ou deux fois (une fenêtre de maintenance est nécessaire).
  • Réseau et connexions : qui peut se connecter, et d'où ? (listener, TCP.VALIDNODE_CHECKING, pare-feu) — Le listener est ouvert à toutes les adresses, les invited nodes ne sont pas définis, 1521/5500 sont ouverts à tous. Le listener est redémarré (les sessions existantes ne sont pas affectées).
  • Chiffrer les connexions (wallet TCPS ou native network encryption) — Le trafic réseau n'est pas chiffré ; TLS (TCPS, wallet, certificat, SSL_SERVER_DN_MATCH côté client) ou native encryption sans certificat (SQLNET.ENCRYPTION_SERVER=REQUIRED). Les deux sont sans licence ; le listener est redémarré, les sessions existantes ne sont pas affectées.
  • Authentification et mots de passe (vérificateur 12C, profils, comptes par défaut) — Vérificateurs de mot de passe 10G/11G, pas de profil de mot de passe, comptes avec mot de passe par défaut ou comptes d'exemple ouverts ; comptes DBA nominatifs. Sans interruption.
  • Moindre privilège : rôles, PUBLIC et compte applicatif — Privilèges DBA/RESOURCE/ANY sur le compte applicatif, UTL_FILE/UTL_TCP/UTL_HTTP accordés à PUBLIC ; propriétaire de schéma, rôles de lecture/écriture et rapport des privilèges. Sans interruption.
  • Audit : qui a fait quoi ? (Unified Auditing, purge d'AUDSYS) — L'auditeur demande la trace des connexions, des modifications de comptes et de schémas ; politiques d'audit unifié, purge d'AUDSYS selon une durée de rétention et envoi des enregistrements vers syslog / un serveur central. Unified Auditing est sans licence.
  • Chiffrer les données au repos (TDE) — TDE contre la lecture des datafiles, des sauvegardes ou des copies de disque : WALLET_ROOT, keystore, master key, chiffrement des tablespaces (online). Nécessite la licence Advanced Security ; un redémarrage pour WALLET_ROOT.
  • Sécurité des sauvegardes (chiffrement RMAN, automatisation sans mot de passe, droits) — Sauvegardes RMAN/Data Pump non chiffrées, mots de passe en clair dans les scripts, répertoire de sauvegarde lisible par tous ; chiffrement RMAN, ENCRYPTION_PWD_PROMPT, wallet (SEPS) et droits sur les répertoires. Le chiffrement RMAN et Data Pump exige la licence Advanced Security.
  • Côté système d'exploitation (compte oracle, droits sur les fichiers, core dumps, SELinux) — Le compte oracle a un mot de passe et peut se connecter, les droits sur le fichier de mots de passe / network admin / wallet sont trop larges, SELinux est désactivé. La limite des core dumps s'applique dans une nouvelle session / après un redémarrage.
  • Patchs et version : suis-je sur la dernière RU ? — RU installée, état de datapatch et calendrier de support ; renvoie au guide de patch RU pour l'application. Lecture seule.

Avant de commencer

  • Le profil de l'utilisateur oracle définit ORACLE_HOME=…, ORACLE_SID… (le nom d'instance de chaque nœud)… et PATH ; sqlplus / as sysdba fonctionne sans mot de passe (authentification système). Les étapes s'exécutent dans un login shell avec sudo -iu oracle, le profil est donc chargé.… Le listener est géré depuis le home Grid Infrastructure (…) avec ….… Si des caractères non ASCII de la sortie s'affichent sous forme de ?, ajoutez export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 au profil (affichage uniquement ; aucun effet sur les données).
  • Deux sessions distinctes sont ouvertes sur le serveur ; l'une d'elles garde sqlplus / as sysdba ouvert. Une connexion locale / as sysdba (bequeath) n'est affectée ni par le listener, ni par les règles réseau de sqlnet.ora, ni par les profils : c'est toujours la voie de retour après une erreur de listener, d'invited nodes ou de chiffrement. Après chaque étape qui restreint l'accès, testez une nouvelle connexion dans une session séparée (depuis le serveur d'application).
  • Fenêtre de maintenance : le listener sera redémarré (les nouvelles connexions sont refusées pendant quelques secondes, les sessions existantes ne sont pas affectées)… ; les paramètres statiques WALLET_ROOT pour TDE et UNIFIED_AUDIT_SYSTEMLOG pour l'audit exigent un redémarrage de la base….… En RAC, le redémarrage de la base peut se faire nœud par nœud (rolling) : srvctl stop instance -db … -node <node> / start.…
  • TDE, le chiffrement des sauvegardes RMAN et le chiffrement Data Pump exigent la licence Oracle Advanced Security (Enterprise Edition + licence d'option ; incluse dans Oracle Cloud / Exadata Cloud). Sans cette licence, n'appliquez pas ces étapes ; utilisez plutôt un chiffrement au niveau disque (LUKS) ou du stockage. Native Network Encryption et TLS sont en revanche sans licence dans toutes les éditions (depuis la 11gR2).
  • La list_items des applications qui se connectent à la base, les adresses des serveurs Data Guard/OEM/sauvegarde et les versions des clients. L'étape d'évaluation affiche les sessions en cours.
  • Il existe une sauvegarde RMAN récente dont la restauration a été testée (Stratégie de sauvegarde RMAN). Une sauvegarde prise avant TDE peut être ouverte sans keystore ; après TDE, les nouvelles sauvegardes ne peuvent pas être ouvertes sans une sauvegarde du keystore.

Phases du guide

  • Évaluation de sécurité (lecture seule) — Lister les constats dans la base · Contrôler le côté système d'exploitation et Net
  • Avant de commencer : point de retour — Sauvegarder les fichiers Net et les paramètres · Exporter la liste des utilisateurs, profils et privilèges
  • Privilèges — 1. Diagnostic — Afficher les privilèges des comptes applicatifs et les packages PL/SQL accordés à PUBLIC
  • Privilèges — 2. Filet de sécurité — Trouver les objets qui dépendent des privilèges PUBLIC
  • Privilèges — 3. Application — Créer le propriétaire du schéma, les rôles et les comptes · Accorder les privilèges sur les tables aux rôles · Retirer les privilèges en trop au compte applicatif · Retirer à PUBLIC les privilèges sur UTL_* et les packages PL/SQL dangereux · Rapport des privilèges
  • Privilèges — 4. Vérification — Vérifier les privilèges effectifs du compte applicatif · Tentative de DDL depuis le serveur d'application
  • Authentification — 1. Diagnostic — Afficher l'état des comptes, les vérificateurs et les profils
  • Authentification — 2. Filet de sécurité — Contrôler les versions des clients
  • Authentification — 3. Application — Verrouiller les comptes Oracle avec mot de passe par défaut, les comptes d'exemple et les comptes inutilisés · Créer les profils de mot de passe · Durcir le profil DEFAULT dans le CDB root · Imposer le vérificateur de mot de passe 12C (sqlnet.ora) · Définir les mots de passe des comptes applicatifs · Créer le compte DBA nominatif …
  • Authentification — 4. Vérification — Vérifier l'état des comptes et des vérificateurs · Tester une connexion depuis le serveur d'application (nouvelle session)
  • Chiffrement réseau — 1. Diagnostic — Afficher l'état de chiffrement des sessions
  • Chiffrement réseau — 3. Application — Imposer la native network encryption · Créer le wallet du serveur · Ajouter au wallet les certificats renvoyés par la CA · Donner accès au wallet au propriétaire du listener… et le copier sur les autres nœuds… · Écrire les paramètres TLS du listener · Écrire les paramètres TLS du home de la base …
  • Chiffrement réseau — 4. Vérification — Vérifier qu'une nouvelle connexion est chiffrée
  • Chiffrement réseau — 5. Ensuite — Fermeture du 1521 non chiffré et renouvellement du certificat
  • Réseau — 1. Diagnostic : qui se connecte, et d'où ? — Afficher le listener et les sources de connexion
  • Réseau — 3. Application — N'accepter sur le listener que les adresses autorisées (valid node checking) · Redémarrer le listener · N'ouvrir les ports du pare-feu qu'aux réseaux autorisés
  • Réseau — 4. Vérification — Tester la connexion depuis le serveur d'application (nouvelle session)
  • Audit — 1. Diagnostic — Afficher le mode d'audit, les politiques et la taille d'AUDSYS
  • Audit — 3. Application — Définir et activer les politiques d'audit · Déplacer AUDSYS dans un tablespace dédié et planifier la purge · Activer les politiques prédéfinies et la purge dans le CDB root · Écrire un résumé de l'audit dans syslog (UNIFIED_AUDIT_SYSTEMLOG) · rsyslog : transférer local3 vers le serveur central · Redémarrer rsyslog puis la base
  • Audit — 4. Vérification — Faire une modification et voir l'enregistrement
  • Système d'exploitation — 1. Diagnostic — Compte oracle, droits sur les fichiers, core dumps et SELinux
  • Système d'exploitation — 3. Application — Verrouiller le mot de passe du compte oracle · Corriger les droits du fichier de mots de passe et des fichiers Net · Désactiver les core dumps de l'utilisateur oracle · Garder SELinux en mode Enforcing
  • Système d'exploitation — 4. Vérification — Vérifier les modifications
  • TDE — 1. Diagnostic — Afficher l'état du keystore et du chiffrement des tablespaces
  • TDE — 2. Filet de sécurité — Sauvegarde et contrôle de l'espace avant TDE
  • TDE — 3. Application — Positionner WALLET_ROOT · Redémarrer la base pour WALLET_ROOT · Créer et ouvrir le keystore, puis définir la master key · Copier le keystore sur les autres nœuds RAC · Chiffrer le tablespace · Sauvegarder le keystore
  • TDE — 4. Vérification — Vérifier le keystore et le tablespace chiffré
  • Sauvegarde — 1. Diagnostic — Afficher le paramètre de chiffrement RMAN et l'état des sauvegardes
  • Sauvegarde — 3. Application — Activer le chiffrement des sauvegardes RMAN · Tester une sauvegarde chiffrée · Chiffrer les exports Data Pump · Connexions sans mot de passe pour les scripts (Secure External Password Store) · Corriger les droits des répertoires de sauvegarde et des wallets
  • Patchs et version — 1. Diagnostic — Afficher la RU installée et l'état de datapatch
Ouvrir le plan pas à pas adapté à votre environnement →