[ 2020-12-24 ]

Perfiles para STIG y CIS en Oracle 21c

Con cada nueva versión de base de datos, Oracle mejora varios aspectos relacionados con la seguridad. En esta línea, con la versión 12.2 incorporó un nuevo perfil de usuario llamado ORA_STIG_PROFILE para cumplir con el estándar de configuración STIG (Security Technical Implementation Guide).
Este perfil aborda varios requisitos de STIG, como la necesidad de una función de complejidad de contraseña, tiempo de reutilización de las mismas, número máximo de intentos fallidos de login y algunos otros más.
La configuración de ORA_STIG_PROFILE en las versiones 12.2, 18c y 19c es la siguiente:

SQL> SELECT profile,resource_name,limit 
FROM dba_profiles 
WHERE profile='ORA_STIG_PROFILE' 
ORDER BY resource_name;
 
PROFILE                      RESOURCE_NAME                  LIMIT
---------------------------- ------------------------------ --------
ORA_STIG_PROFILE             COMPOSITE_LIMIT                DEFAULT
ORA_STIG_PROFILE             CONNECT_TIME                   DEFAULT
ORA_STIG_PROFILE             CPU_PER_CALL                   DEFAULT
ORA_STIG_PROFILE             CPU_PER_SESSION                DEFAULT
ORA_STIG_PROFILE             FAILED_LOGIN_ATTEMPTS          3
ORA_STIG_PROFILE             IDLE_TIME                      15
ORA_STIG_PROFILE             INACTIVE_ACCOUNT_TIME          35
ORA_STIG_PROFILE             LOGICAL_READS_PER_CALL         DEFAULT
ORA_STIG_PROFILE             LOGICAL_READS_PER_SESSION      DEFAULT
ORA_STIG_PROFILE             PASSWORD_GRACE_TIME            5
ORA_STIG_PROFILE             PASSWORD_LIFE_TIME             60
ORA_STIG_PROFILE             PASSWORD_LOCK_TIME             UNLIMITED
ORA_STIG_PROFILE             PASSWORD_REUSE_MAX             10
ORA_STIG_PROFILE             PASSWORD_REUSE_TIME            365
ORA_STIG_PROFILE             PASSWORD_VERIFY_FUNCTION       ORA12C_STIG_VERIFY_FUNCTION
ORA_STIG_PROFILE             PRIVATE_SGA                    DEFAULT
ORA_STIG_PROFILE             SESSIONS_PER_USER              DEFAULT
 
17 rows selected.

Se diferencia del profile “DEFAULT” en las siguientes definiciones:

password_life_time        60
password_grace_time       5
password_reuse_time       365
password_reuse_max        10
failed_login_attempts     3
password_lock_time        unlimited
inactive_account_time     35
idle_time                 15
password_verify_function  ora12c_stig_verify_function

La función de verificación de contraseña ora12c_stig_verify_function, fue creada específicamente para exigir una mayor complejidad de las mismas, tomando en cuenta las recomendaciones de la guía STIG v1 r2 publicada el 22 de enero de 2016.
En el nuevo release 21c, liberado los primeros días de diciembre, encontramos algunas modificaciones en este profile para mejorar y reforzar los controles de seguridad.

SQL> SELECT profile,resource_name,limit 
FROM dba_profiles 
WHERE profile='ORA_STIG_PROFILE' 
ORDER BY resource_name;
 
PROFILE          RESOURCE_NAME             LIMIT                       
---------------- ------------------------- --------------------------- 
ORA_STIG_PROFILE COMPOSITE_LIMIT           DEFAULT                     
ORA_STIG_PROFILE CONNECT_TIME              DEFAULT                     
ORA_STIG_PROFILE CPU_PER_CALL              DEFAULT                     
ORA_STIG_PROFILE CPU_PER_SESSION           DEFAULT                     
ORA_STIG_PROFILE FAILED_LOGIN_ATTEMPTS     3                           
ORA_STIG_PROFILE IDLE_TIME                 15                          
ORA_STIG_PROFILE INACTIVE_ACCOUNT_TIME     35                          
ORA_STIG_PROFILE LOGICAL_READS_PER_CALL    DEFAULT                     
ORA_STIG_PROFILE LOGICAL_READS_PER_SESSION DEFAULT                     
ORA_STIG_PROFILE PASSWORD_GRACE_TIME       0                           
ORA_STIG_PROFILE PASSWORD_LIFE_TIME        35                          
ORA_STIG_PROFILE PASSWORD_LOCK_TIME        UNLIMITED                   
ORA_STIG_PROFILE PASSWORD_REUSE_MAX        5                           
ORA_STIG_PROFILE PASSWORD_REUSE_TIME       175                         
ORA_STIG_PROFILE PASSWORD_ROLLOVER_TIME    DEFAULT                     
ORA_STIG_PROFILE PASSWORD_VERIFY_FUNCTION  ORA12C_STIG_VERIFY_FUNCTION 
ORA_STIG_PROFILE PRIVATE_SGA               DEFAULT                     
ORA_STIG_PROFILE SESSIONS_PER_USER         DEFAULT
 
18 rows selected.

Los parámetros que fueron actualizados son los siguientes:

PASSWORD_GRACE_TIME
PASSWORD_LIFE_TIME
PASSWORD_REUSE_MAX
PASSWORD_REUSE_TIME

Se incorporó además un nuevo parámetro llamado PASSWORD_ROLLOVER_TIME relacionado con la nueva funcionalidad “Gradual Database Password Rollover”.
Este parámetro indica la cantidad de tiempo, especificado en días, en que un usuario al cambiar la contraseña podrá iniciar sesión indistintamente con la nueva contraseña o con la antigua. Esta funcionalidad la veremos más en detalle en un futuro artículo.
Cabe aclarar que este parámetro fue incorporado también en el profile DEFAULT.  
Además de la actualización del perfil ORA_STIG_PROFILE, la versión 21c incorpora también un nuevo perfil de usuario llamado ORA_CIS_PROFILE,  que en este caso apunta a cumplir con los lineamientos del estándar de referencia “CIS Benchmark  para bases de datos Oracle”.
CIS (Center for Internet Security)  es una organización sin fines de lucro formada en octubre de 2000 cuya misión es identificar, desarrollar, validar, promover y mantener soluciones de mejores prácticas enfocadas en la ciberdefensa y ciberseguridad. CIS viene publicando desde el año 2009 su “Benchmark para bases de datos Oracle”, y en octubre de este año fue liberado el estándar para la versión 19c.
La configuración del nuevo profile ORA_CIS_PROFILE  es la siguiente:

SQL> SELECT profile,resource_name,limit 
FROM dba_profiles 
WHERE profile='ORA_STIG_PROFILE' 
ORDER BY resource_name;

PROFILE         RESOURCE_NAME             LIMIT                  
--------------- ------------------------- ---------------------- 
ORA_CIS_PROFILE COMPOSITE_LIMIT           DEFAULT                
ORA_CIS_PROFILE CONNECT_TIME              DEFAULT                
ORA_CIS_PROFILE CPU_PER_CALL              DEFAULT                
ORA_CIS_PROFILE CPU_PER_SESSION           DEFAULT                
ORA_CIS_PROFILE FAILED_LOGIN_ATTEMPTS     5                      
ORA_CIS_PROFILE IDLE_TIME                 DEFAULT                
ORA_CIS_PROFILE INACTIVE_ACCOUNT_TIME     120                    
ORA_CIS_PROFILE LOGICAL_READS_PER_CALL    DEFAULT                
ORA_CIS_PROFILE LOGICAL_READS_PER_SESSION DEFAULT                
ORA_CIS_PROFILE PASSWORD_GRACE_TIME       5                      
ORA_CIS_PROFILE PASSWORD_LIFE_TIME        90                     
ORA_CIS_PROFILE PASSWORD_LOCK_TIME        1                      
ORA_CIS_PROFILE PASSWORD_REUSE_MAX        20                     
ORA_CIS_PROFILE PASSWORD_REUSE_TIME       365                    
ORA_CIS_PROFILE PASSWORD_ROLLOVER_TIME    DEFAULT                
ORA_CIS_PROFILE PASSWORD_VERIFY_FUNCTION  ORA12C_VERIFY_FUNCTION 
ORA_CIS_PROFILE PRIVATE_SGA               DEFAULT                
ORA_CIS_PROFILE SESSIONS_PER_USER         10

La siguiente salida muestra una comparación de los profiles DEFAULT, STIG y CIS en el release 21c para tener una idea a simple vista de los límites que impone cada uno.

PROFILE          RESOURCE_NAME             LIMIT                       
---------------- ------------------------- --------------------------- 
DEFAULT          COMPOSITE_LIMIT           UNLIMITED                   
ORA_CIS_PROFILE  COMPOSITE_LIMIT           DEFAULT                     
ORA_STIG_PROFILE COMPOSITE_LIMIT           DEFAULT                     

DEFAULT          CONNECT_TIME              UNLIMITED                   
ORA_CIS_PROFILE  CONNECT_TIME              DEFAULT                     
ORA_STIG_PROFILE CONNECT_TIME              DEFAULT                     

DEFAULT          CPU_PER_CALL              UNLIMITED                   
ORA_CIS_PROFILE  CPU_PER_CALL              DEFAULT                     
ORA_STIG_PROFILE CPU_PER_CALL              DEFAULT                     

DEFAULT          CPU_PER_SESSION           UNLIMITED                   
ORA_CIS_PROFILE  CPU_PER_SESSION           DEFAULT                     
ORA_STIG_PROFILE CPU_PER_SESSION           DEFAULT                     

DEFAULT          FAILED_LOGIN_ATTEMPTS     10                          
ORA_CIS_PROFILE  FAILED_LOGIN_ATTEMPTS     5                           
ORA_STIG_PROFILE FAILED_LOGIN_ATTEMPTS     3                           

DEFAULT          IDLE_TIME                 UNLIMITED                   
ORA_CIS_PROFILE  IDLE_TIME                 DEFAULT                     
ORA_STIG_PROFILE IDLE_TIME                 15                          

DEFAULT          INACTIVE_ACCOUNT_TIME     UNLIMITED                   
ORA_CIS_PROFILE  INACTIVE_ACCOUNT_TIME     120                         
ORA_STIG_PROFILE INACTIVE_ACCOUNT_TIME     35                          

DEFAULT          LOGICAL_READS_PER_CALL    UNLIMITED                   
ORA_CIS_PROFILE  LOGICAL_READS_PER_CALL    DEFAULT                     
ORA_STIG_PROFILE LOGICAL_READS_PER_CALL    DEFAULT                     

DEFAULT          LOGICAL_READS_PER_SESSION UNLIMITED                   
ORA_CIS_PROFILE  LOGICAL_READS_PER_SESSION DEFAULT                     
ORA_STIG_PROFILE LOGICAL_READS_PER_SESSION DEFAULT                     

DEFAULT          PASSWORD_GRACE_TIME       30                          
ORA_CIS_PROFILE  PASSWORD_GRACE_TIME       5                           
ORA_STIG_PROFILE PASSWORD_GRACE_TIME       0                           

DEFAULT          PASSWORD_LIFE_TIME        360                         
ORA_CIS_PROFILE  PASSWORD_LIFE_TIME        90                          
ORA_STIG_PROFILE PASSWORD_LIFE_TIME        35                          

DEFAULT          PASSWORD_LOCK_TIME        1                           
ORA_CIS_PROFILE  PASSWORD_LOCK_TIME        1                           
ORA_STIG_PROFILE PASSWORD_LOCK_TIME        UNLIMITED                   

DEFAULT          PASSWORD_REUSE_MAX        4                           
ORA_CIS_PROFILE  PASSWORD_REUSE_MAX        20                          
ORA_STIG_PROFILE PASSWORD_REUSE_MAX        5                           

DEFAULT          PASSWORD_REUSE_TIME       1                           
ORA_CIS_PROFILE  PASSWORD_REUSE_TIME       365                         
ORA_STIG_PROFILE PASSWORD_REUSE_TIME       175                         

DEFAULT          PASSWORD_ROLLOVER_TIME    0                           
ORA_CIS_PROFILE  PASSWORD_ROLLOVER_TIME    DEFAULT                     
ORA_STIG_PROFILE PASSWORD_ROLLOVER_TIME    DEFAULT                     

DEFAULT          PASSWORD_VERIFY_FUNCTION  CLOUD_VERIFY_FUNCTION       
ORA_CIS_PROFILE  PASSWORD_VERIFY_FUNCTION  ORA12C_VERIFY_FUNCTION      
ORA_STIG_PROFILE PASSWORD_VERIFY_FUNCTION  ORA12C_STIG_VERIFY_FUNCTION 

DEFAULT          PRIVATE_SGA               UNLIMITED                   
ORA_CIS_PROFILE  PRIVATE_SGA               DEFAULT                     
ORA_STIG_PROFILE PRIVATE_SGA               DEFAULT                     

DEFAULT          SESSIONS_PER_USER         UNLIMITED                   
ORA_CIS_PROFILE  SESSIONS_PER_USER         10                          
ORA_STIG_PROFILE SESSIONS_PER_USER         DEFAULT   

Conclusión:
Estos perfiles, especialmente diseñados, permiten una rápida implementación de algunos de los requerimientos indicados por dos de los principales estándares de seguridad para bases de datos Oracle. 
Pueden ser utilizados directamente con los usuarios de la base de datos o como parte de profiles propios. 
Oracle los mantiene actualizados para facilitar la implementación de políticas de contraseñas acordes con los lineamientos de STIG y CIS.

No hay comentarios:

Publicar un comentario