DBAtlas · Atlas de operaciones de bases de datos

Hardening de seguridad de Oracle Database (evaluación, red, TLS, autenticación, privilegios, Unified Auditing, TDE)

OracleNivel: AvanzadoDuración: 5 min (evaluación) – 4 horas (hardening completo)

No es una guía de instalación: localiza y cierra las brechas de seguridad de una base de datos Oracle 19c / 23ai (26ai) en funcionamiento (single instance, Oracle Restart o RAC; CDB/PDB). Primero la Evaluación de seguridad, de solo lectura, enumera los hallazgos por gravedad e indica a qué tarjeta lleva cada uno; después se cierran las áreas una a una o todas en orden: listener y TCP.VALIDNODE_CHECKING, firewall, TCPS (wallet) o native network encryption, el verificador de contraseñas 12C y los perfiles, el bloqueo de las cuentas por defecto, el diseño de roles y la revocación de los privilegios UTL_* a PUBLIC, Unified Auditing y la purga de AUDSYS, TDE, backups cifrados, el sistema operativo y el seguimiento de RU. TDE y el cifrado de RMAN/Data Pump requieren la licencia Advanced Security; todo lo demás no requiere licencia. Al final la evaluación se vuelve a ejecutar.

Topología: Single instance / Oracle Restart / RAC (2–8 nodos), CDB + PDB; servidor de aplicaciones (verificación del cliente)

Escenarios

  • Evaluación de seguridad: ¿qué brechas tengo? (solo lectura) — El primer análisis que se debe ejecutar: cuentas con contraseña por defecto y cuentas abiertas, verificadores de contraseña antiguos, perfiles, privilegios DBA/ANY, paquetes PL/SQL UTL_ concedidos a PUBLIC, auditoría, TDE, sesiones sin cifrar, listener y permisos de ficheros; no modifica nada.
  • Hardening completo (todas las áreas en orden) — Base de datos recién instalada o nunca bastionada: se aplican todas las áreas en un orden seguro; el listener y la base de datos se reinician una o dos veces (requiere ventana de mantenimiento).
  • Red y conexiones: ¿quién puede conectarse y desde dónde? (listener, TCP.VALIDNODE_CHECKING, firewall) — El listener está abierto a cualquier dirección, no hay invited nodes definidos y 1521/5500 están abiertos a todo el mundo. Se reinicia el listener (las sesiones existentes no se ven afectadas).
  • Cifrar las conexiones (wallet TCPS o native network encryption) — El tráfico de red no está cifrado; TLS (TCPS, wallet, certificado, SSL_SERVER_DN_MATCH en el cliente) o native encryption sin certificados (SQLNET.ENCRYPTION_SERVER=REQUIRED). Ninguna de las dos opciones requiere licencia; se reinicia el listener y las sesiones existentes no se ven afectadas.
  • Autenticación y contraseñas (verificador 12C, perfiles, cuentas por defecto) — Verificadores de contraseña 10G/11G, sin perfil de contraseñas, cuentas con contraseña por defecto o cuentas de ejemplo abiertas; cuentas DBA personales. Sin parada.
  • Mínimo privilegio: roles, PUBLIC y la cuenta de aplicación — Privilegios DBA/RESOURCE/ANY en la cuenta de aplicación, UTL_FILE/UTL_TCP/UTL_HTTP concedidos a PUBLIC; propietario del esquema, roles de lectura/escritura e informe de privilegios. Sin parada.
  • Auditoría: ¿quién hizo qué? (Unified Auditing, purga de AUDSYS) — El auditor pide registros de inicios de sesión, cambios de cuentas y cambios de esquema; políticas de unified audit, purga de AUDSYS según un periodo de retención y envío de los registros a syslog / un servidor central. Unified Auditing no requiere licencia.
  • Cifrar los datos en disco (TDE) — TDE frente a la lectura de datafiles, backups o copias de disco: WALLET_ROOT, keystore, master key, cifrado de tablespaces (online). Requiere la licencia Advanced Security; un reinicio para WALLET_ROOT.
  • Seguridad de los backups (cifrado RMAN, automatización sin contraseñas, permisos) — Backups de RMAN/Data Pump sin cifrar, contraseñas en texto plano en los scripts, directorio de backup legible por todos; cifrado RMAN, ENCRYPTION_PWD_PROMPT, wallet (SEPS) y permisos de directorios. El cifrado de RMAN y Data Pump requiere la licencia Advanced Security.
  • Lado del sistema operativo (cuenta oracle, permisos de ficheros, core dumps, SELinux) — La cuenta oracle tiene contraseña y permite login, los permisos del fichero de contraseñas / network admin / wallet son laxos, SELinux está desactivado. El límite de core dump se aplica en una nueva sesión / tras un reinicio.
  • Parches y versión: ¿estoy en la última RU? — RU instalada, estado de datapatch y calendario de soporte; enlaza con la guía de parches RU para aplicarla. Solo lectura.

Antes de empezar

  • El perfil del usuario oracle define ORACLE_HOME=…, ORACLE_SID… (el nombre de instancia de cada nodo)… y PATH; sqlplus / as sysdba funciona sin contraseña (autenticación del sistema operativo). Los pasos se ejecutan en una login shell con sudo -iu oracle, por lo que se carga el perfil.… El listener se gestiona desde el Grid Infrastructure home (…) con ….… Si los caracteres no ASCII de la salida aparecen como ?, añada export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 al perfil (solo afecta a la visualización; no tiene efecto sobre los datos).
  • Hay dos sesiones distintas abiertas en el servidor; en una de ellas se mantiene abierto sqlplus / as sysdba. Una conexión local / as sysdba (bequeath) no se ve afectada por el listener, las reglas de red de sqlnet.ora ni los perfiles: siempre es la vía de vuelta tras un error de listener, invited nodes o cifrado. Después de cada paso que restringe el acceso, pruebe una conexión nueva en otra sesión (desde el servidor de aplicaciones).
  • Ventana de mantenimiento: se reiniciará el listener (las conexiones nuevas se rechazan durante unos segundos; las sesiones existentes no se ven afectadas)…; los parámetros estáticos WALLET_ROOT para TDE y UNIFIED_AUDIT_SYSTEMLOG para auditoría requieren reiniciar la base de datos….… En RAC el reinicio de la base de datos se puede hacer nodo por nodo (rolling): srvctl stop instance -db … -node <node> / start.…
  • TDE, el cifrado de backups RMAN y el cifrado de Data Pump requieren la licencia Oracle Advanced Security (Enterprise Edition + licencia de opción; incluida en Oracle Cloud / Exadata Cloud). Sin la licencia no aplique estos pasos; utilice cifrado a nivel de disco (LUKS) o cifrado del almacenamiento. Native Network Encryption y TLS, en cambio, no requieren licencia en ninguna edición (desde 11gR2).
  • La lista de aplicaciones que se conectan a la base de datos, las direcciones de los servidores de Data Guard/OEM/backup y las versiones de cliente. El paso de evaluación muestra las sesiones actuales.
  • Existe un backup RMAN actual con un restore probado (estrategia de backup RMAN). Un backup hecho antes de TDE se puede abrir sin el keystore; después de TDE, los backups nuevos no se pueden abrir sin un backup del keystore.

Fases de la guía

  • Evaluación de seguridad (solo lectura) — Listar los hallazgos dentro de la base de datos · Comprobar el lado del sistema operativo y de Net
  • Antes de empezar: punto de vuelta atrás — Guardar los ficheros de Net y los parámetros · Volcar usuarios, perfiles y privilegios
  • Privilegios — 1. Diagnóstico — Mostrar los privilegios de las cuentas de aplicación y los paquetes PL/SQL concedidos a PUBLIC
  • Privilegios — 2. Red de seguridad — Buscar objetos que dependen de los privilegios de PUBLIC
  • Privilegios — 3. Aplicación — Crear el propietario del esquema, los roles y las cuentas · Conceder privilegios sobre tablas a los roles · Revocar los privilegios sobrantes de la cuenta de aplicación · Revocar a PUBLIC los privilegios sobre UTL_* y otros paquetes PL/SQL peligrosos · Informe de privilegios
  • Privilegios — 4. Verificación — Verificar los privilegios efectivos de la cuenta de aplicación · Intento de DDL desde el servidor de aplicaciones
  • Autenticación — 1. Diagnóstico — Mostrar el estado de las cuentas, los verificadores y los perfiles
  • Autenticación — 2. Red de seguridad — Comprobar las versiones de cliente
  • Autenticación — 3. Aplicación — Bloquear las cuentas Oracle con contraseña por defecto, las de ejemplo y las no utilizadas · Crear los perfiles de contraseña · Reforzar el perfil DEFAULT en el CDB root · Imponer el verificador de contraseña 12C (sqlnet.ora) · Asignar contraseñas a las cuentas de aplicación · Crear la cuenta DBA personal …
  • Autenticación — 4. Verificación — Verificar el estado de las cuentas y los verificadores · Probar un login desde el servidor de aplicaciones (sesión nueva)
  • Cifrado de red — 1. Diagnóstico — Mostrar el estado de cifrado de las sesiones
  • Cifrado de red — 3. Aplicación — Hacer obligatorio native network encryption · Crear el wallet del servidor · Añadir al wallet los certificados devueltos por la CA · Dar acceso al wallet al propietario del listener… y copiarlo a los demás nodos… · Escribir los ajustes TLS del listener · Escribir los ajustes TLS del home de la base de datos …
  • Cifrado de red — 4. Verificación — Verificar que una conexión nueva está cifrada
  • Cifrado de red — 5. Después — Cerrar el 1521 sin cifrar y renovar el certificado
  • Red — 1. Diagnóstico: ¿quién se conecta y desde dónde? — Mostrar el listener y los orígenes de las conexiones
  • Red — 3. Aplicación — Hacer que el listener acepte solo direcciones permitidas (valid node checking) · Reiniciar el listener · Abrir los puertos en el firewall solo a las redes permitidas
  • Red — 4. Verificación — Probar la conexión desde el servidor de aplicaciones (sesión nueva)
  • Auditoría — 1. Diagnóstico — Mostrar el modo de auditoría, las políticas y el tamaño de AUDSYS
  • Auditoría — 3. Aplicación — Definir y activar las políticas de auditoría · Mover AUDSYS a un tablespace aparte y programar la purga · Activar las políticas predefinidas y la purga en el CDB root · Escribir un resumen de auditoría en syslog (UNIFIED_AUDIT_SYSTEMLOG) · rsyslog: reenviar local3 al servidor central · Reiniciar rsyslog y reiniciar la base de datos
  • Auditoría — 4. Verificación — Hacer un cambio y ver el registro
  • Sistema operativo — 1. Diagnóstico — Cuenta oracle, permisos de ficheros, core dumps y SELinux
  • Sistema operativo — 3. Aplicación — Bloquear la contraseña de la cuenta oracle · Corregir los permisos del fichero de contraseñas y de los ficheros de Net · Desactivar los core dumps del usuario oracle · Mantener SELinux en modo Enforcing
  • Sistema operativo — 4. Verificación — Verificar los cambios
  • TDE — 1. Diagnóstico — Mostrar el estado del keystore y del cifrado de tablespaces
  • TDE — 2. Red de seguridad — Backup y comprobación de espacio antes de TDE
  • TDE — 3. Aplicación — Configurar WALLET_ROOT · Reiniciar la base de datos para WALLET_ROOT · Crear y abrir el keystore y establecer la master key · Copiar el keystore a los demás nodos RAC · Cifrar el tablespace · Hacer backup del keystore
  • TDE — 4. Verificación — Verificar el keystore y el tablespace cifrado
  • Backup — 1. Diagnóstico — Mostrar el ajuste de cifrado de RMAN y el estado de los backups
  • Backup — 3. Aplicación — Activar el cifrado de backups RMAN · Probar un backup cifrado · Cifrar los exports de Data Pump · Conexiones sin contraseña para scripts (Secure External Password Store) · Corregir los permisos de los directorios de backup y de wallets
  • Parches y versión — 1. Diagnóstico — Mostrar la RU instalada y el estado de datapatch
Abrir el plan paso a paso para su entorno →