Vous êtes sur la page 1sur 34

MAESTRÍA EN AUDITORÍA Taller #1

DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad


INFORMACIÓN recomendadas en ORACLE

TALLER 1

REVISANDO CONFIGURACIONES DE
SEGURIDAD RECOMENDADAS EN ORACLE
Revisando configuraciones de seguridad recomendadas en

Asignatura
Seguridad de Auditoria en Base de Datos

Por los maestrantes:


Carlos García Jácome
ORACLE

Bajo la dirección de:


MSIG. Henry Xavier Hernández Rendón

Universidad Espíritu Santo


Facultad de Postgrado
Maestría en Auditoría de Tecnologías de la
Información
Samborondón - Ecuador
Noviembre del 2018
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

DESCRIPCIÓN:

• Taller # 1
• Nombre: Revisando Configuraciones de Seguridad recomendadas en una Instalación ORACLE.
• Profesor: Ing. Henry Hernández Rendón, MSIG
• Objetivos: Aprender a revisar las configuraciones de seguridad de un motor de base de datos (en
este caso Oracle).
PRELIMINARES
1. Iniciar el Oracle SQL Developer:
Vaya a la carpeta donde del programa y ejecute el archivo sqldeveloper.exe:
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

2. Cree una nueva conexión a la base de datos instalada en su máquina:


MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

3. Dejar lista la ventana de edición de queréis para iniciar el taller:


MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

EJERCICIO #1 (Verificando que los passwords predeterminados estén cambiados)

1. En el editor de queries ejecute la siguiente sentencia:

SELECT USERNAME
FROM DBA_USERS_WITH_DEFPWD
WHERE USERNAME NOT LIKE '%XS$NULL%';

2. En el Query Editor ejecute el siguiente query para cambiar el password de cada uno de los usuarios
que vinieron con default password con la instalación:

ALTER USER DIP IDENTIFIED BY PasswordNuevoSeguro;


MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

3. Vuelva a ejecutar el query de consulta de passwords por default para comprobar que el usuario cuyo
password cambió ya no aparece en la lista:

SELECT USERNAME
FROM DBA_USERS_WITH_DEFPWD
WHERE USERNAME NOT LIKE '%XS$NULL%';
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

4. Ejecute este proceso hasta eliminar los usuarios con passwords predeterminados.

EJERCICIO #2 (Verificando que todos los usuarios y data de prueba hayan sido removidos) 1.

En el editor de queréis ejecute la siguiente sentencia:

SELECT USERNAME
FROM ALL_USERS
WHERE USERNAME IN ('BI','HR','IX','OE','PM','SCOTT','SH');
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

NOTA: No ejecute el paso 2, debido a que los objetos creados en el usuario HR pueden ser utilizados
en algún taller posteriormente.

2. Elimine los usuarios de prueba a través del siguiente script:

DROP USER HR CASCADE;

EJERCICIO #3 (Listener: Verificando que el parámetro SECURE_CONTROL esté habilitado)

1. Acceda al archivo listener.ora que se encuentra en la ruta:


%ORACLE_HOME%/network/admin/listener.ora. Para ubicar la ruta de instalación de Oracle acceda
en el regedit a la siguiente ruta:
Equipo\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_XE
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

2. La ruta de instalación se encuentra en el key ORACLE_HOME que en este caso es:


C:\oraclexe\app\oracle\product\11.2.0\server

3. En dicha carpeta \network\admin edite el archivo listener.ora:


MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

4. Al editar ese archivo asegúrese que el parámetro SECURE_CONTROL_ListernerName esté habilitado,


si no es así, agregue este parámetro:

Antes:

(ADDRESS = (PROTOCOL = TCPS)(HOST = NombreDelHost)(PORT = 1522))


SECURE_CONTROL_NombreDelListener = (TCPS)

Después:
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

5. Grabe el archivo y reinicie el servicio del listener de Oracle:

EJERCICIO #4 (Listener: Verificando que el parámetro ‘extproc’ NO esté habilitado)

1. Acceda al archivo listener.ora que se encuentra en la ruta:


%ORACLE_HOME%/network/admin/listener.ora.

2. Busque el parámetro extproc que permite que las librerías del sistema operativo puedan ser
accedidas desde Oracle. Para esto puede abrir el archivo listener.ora y buscar el parámetro para
removerlo o puede buscarlo mediante la línea de comandos de Windows con el comando find /i

find /i extproc %ORACLE_HOME%\network\admin\listener.ora


MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

3. Remueva el parámetro (PROGRAM = extproc) del archivo listener.ora:


MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

EJERCICIO #5 (Listener: Verificando que el parámetro ‘ADMIN_RESTRICTIONS’ esté habilitado)

1. Acceda al archivo listener.ora que se encuentra en la ruta:


%ORACLE_HOME%/network/admin/listener.ora.

2. Busque el parámetro ADMIN_RESTRICTIONS_ListenerName que permite que las modificaciones al


archivo listener.ora sean realizadas a través de comandos SET en tiempo real desde el motor de base
de datos. Y que únicamente sea posible realizar cambios a través del acceso a este archivo. Para esto
puede abrir el archivo listener.ora y buscar el parámetro ADMIN_RESTRICTIONS para que en caso de
no encontrarlo lo pueda agregar o puede buscarlo mediante la línea de comandos de Windows con
el comando find /i

find /i admin_restrictions %ORACLE_HOME%\network\admin\listener.ora

3. Al no existir agréguelo de la siguiente manera en el archivo listener.ora:

ADMIN_RESTRICTIONS_ListenerName=on
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

EJERCICIO #6 (Verificando que el parámetro ‘AUDIT_SYS_OPERATIONS’ esté habilitado)

1. En el editor de queries ejecute la siguiente sentencia:

SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME) = 'AUDIT_SYS_OPERATIONS';

2. Al salir el resultado FALSE, quiere decir que no está habilitada la opción para auditar todas las
acciones de los usuarios SYSTEM en el motor, y que únicamente acciones de Startup y Shutdown
serán auditadas. En el Query Editor ejecute el siguiente query para cambiar este parámetro a TRUE:

ALTER SYSTEM SET AUDIT_SYS_OPERATIONS = TRUE SCOPE=SPFILE;


MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

3. Reinicie el Servicio (OracleService), recuerde que los parámetros modificados son almacenados en el
init.ora que es cargado al momento de iniciar el servicio del motor de base de datos:
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

4. Vuelva a ejecutar el query de consulta del parámetro para verificar que el mismo haya sido cambiado:

SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME) = 'AUDIT_SYS_OPERATIONS';
5.

EJERCICIO #7 (Verificando que el parámetro ‘AUDIT_TRAIL’ esté configurado)

1. En el editor de queréis ejecute la siguiente sentencia:

SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME) = 'AUDIT_TRAIL';
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

2. Al salir el resultado NONE, quiere decir que no está habilitada la auditoría básica del motor, para
habilitarla hay indicar a través del siguiente query el repositorio de la auditoría básica que puede ser:
(OS: Operating System file, dbo: los registros de auditoría van a la tabla SYS.AUD$, xml: graba los
registros en un xml):

ALTER SYSTEM SET AUDIT_TRAIL = DB, EXTENDED SCOPE = SPFILE;


ALTER SYSTEM SET AUDIT_TRAIL = OS SCOPE = SPFILE;
ALTER SYSTEM SET AUDIT_TRAIL = XML, EXTENDED SCOPE = SPFILE;
ALTER SYSTEM SET AUDIT_TRAIL = DB SCOPE = SPFILE;
ALTER SYSTEM SET AUDIT_TRAIL = XML SCOPE = SPFILE;
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

3. Reinicie el Servicio (OracleService), recuerde que los parámetros modificados son almacenados en el
init.ora que es cargado al momento de iniciar el servicio del motor de base de datos:
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

4. Vuelva a ejecutar el query de consulta del parámetro para verificar que el mismo haya sido cambiado:

SELECT UPPER(VALUE)
5.
FROM V$PARAMETER WHERE UPPER(NAME) = 'AUDIT_TRAIL';

6. Podemos verificar que ya empiezan a grabarse registros en la tabla SYS.AUD$:

SELECT * FROM SYS.AUD$


MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

EJERCICIO #8 (Verificando que el parámetro ‘LOCAL_LISTENER’ esté correctamente configurado)

1. En el editor de queréis ejecute la siguiente sentencia:

SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME) = 'LOCAL_LISTENER';

2. Al salir el resultado en NULL podría producirse un ataque por envenenamiento, que permite redirigir
el tráfico de red TNS a otro sistema al registrar un listener (oyente) en el listener (oyente) TNS. Este
ataque puede ser realizado por usuarios no autorizados con acceso a la red. Al especificar el
protocolo IPC, ya no es posible registrar oyentes a través de TCP/IP. Ejecute la siguiente sentencia:
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

ALTER SYSTEM SET LOCAL_LISTENER= '(DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY =


EXTPROC1))(ADDRESS = (PROTOCOL = TCP)(HOST = SERVERMATI01)(PORT = 1521))(ADDRESS =
(PROTOCOL = TCPS)(HOST = SERVERMATI01)(PORT = 1522)))' SCOPE=BOTH;

3. Vuelva a ejecutar el query de consulta del parámetro para verificar que el mismo haya sido cambiado:

SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME) = 'LOCAL_LISTENER';
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

EJERCICIO #9 (Verificando que el parámetro ‘O7_DICTIONARY_ACCESSIBILITY’ esté desactivado)


1. En el editor de queréis ejecute la siguiente sentencia:

SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME) = 'O7_DICTIONARY_ACCESSIBILITY';

2. Este parámetro permite ejecutar cualquier procedimiento y seleccionar cualquier diccionario en los
objetos del esquema SYS. Esta funcionalidad fue creada para facilitar la migración desde bases de
datos Oracle en versión 7. Por defecto está deshabilitada como la vemos, pero si estuviera habilitada
habría que ejecutar el siguiente query:

ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY=FALSE SCOPE=SPFILE;


MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

3. Reinicie el Servicio (OracleService), recuerde que los parámetros modificados son almacenados en
el init.ora que es cargado al momento de iniciar el servicio del motor de base de datos:
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

4. Vuelva a ejecutar el query de consulta del parámetro para verificar que el mismo haya sido
cambiado:

SELECT UPPER(VALUE)
FROM V$PARAMETER
5.
WHERE UPPER(NAME) = 'AUDIT_SYS_OPERATIONS';

EJERCICIO #10 (Verificando que el parámetro ‘OS_ROLES’ esté habilitado)

1. En el editor de queréis ejecute la siguiente sentencia:

SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME) = 'OS_ROLES';
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

2. El parámetro os_roles permite que los grupos creados externamente se apliquen a la


administración de la base de datos. Como permitir que el sistema operativo use grupos
externos para la administración de la base de datos podría causar superposiciones de
privilegios y, en general, debilitar la seguridad, este valor debe establecerse de acuerdo con
las necesidades de la organización. El valor debería ser false

ALTER SYSTEM SET OS_ROLES = FALSE SCOPE=SPFILE;


MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

3. Reinicie el Servicio (OracleService), recuerde que los parámetros modificados son almacenados en
el init.ora que es cargado al momento de iniciar el servicio del motor de base de datos:

4. Vuelva a ejecutar el query de consulta del parámetro para verificar que el mismo haya sido
cambiado:

SELECT UPPER(VALUE)
FROM V$PARAMETER
5.
WHERE UPPER(NAME) = 'OS_ROLES;
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

EJERCICIO #11 (Verificando que el parámetro ‘REMOTE_LISTENER’ esté vacío)

Ejecute los pasos del punto 2.2.7 Ensure ‘REMOTE_LISTENER’ Is Empty (Scored)
del documento CIS Oracle Database 12c Benchmark del Center for Intenet
Security disponible en la Ruta SEGURIDAD Y AUDITORIA DE BASE DE DATOS
/Sesion1/MaterialesDidacticos/BibliografiaComplementaria/

Descripción:
La configuración de remote_listener determina si se puede establecer o no una escucha válida en un sistema
separado de la instancia de la base de datos.

Razón fundamental:
Como permitir un escucha remoto para las conexiones a la instancia de la base de datos puede permitir la
falsificación potencial de las conexiones y puede comprometer la confidencialidad y la integridad de los
datos, este valor se debe desactivar / restringir de acuerdo con las necesidades de la organización.

Auditoría:
Para evaluar esta recomendación, ejecute la siguiente instrucción SQL.

SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME)='REMOTE_LISTENER';
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

EJERCICIO #12 (Verificando que el parámetro ‘REMOTE_LOGIN_PASSWORDFILE’ esté en ninguno)

Ejecute los pasos del punto 2.2.8 Ensure ‘REMOTE_LOGIN_PASSWORDFILE’ Is


Set to NONE (Scored) del documento CIS Oracle Database 12c Benchmark del
Center for Intenet Security en la Ruta SEGURIDAD Y AUDITORIA DE BASE DE
DATOS /Sesion1/MaterialesDidacticos/BibliografiaComplementaria/

Descripción:
La configuración remote_login_passwordfile especifica si Oracle comprueba o no un archivo de contraseña
durante el inicio de sesión y cuántas bases de datos pueden usar el archivo de contraseña.

Razón fundamental:
Como el uso de este tipo de archivo de inicio de sesión de contraseña podría permitir conexiones no
seguras y privilegiadas a la base de datos, este valor debe establecerse de acuerdo con las necesidades de
la organización.

Auditoría:
Para evaluar esta recomendación, ejecute la siguiente instrucción SQL.
SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME)='REMOTE_LOGIN_PASSWORDFILE';

Remediación
Para corregir esta configuración, ejecute la siguiente instrucción SQL
ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE = 'NONE' SCOPE = SPFILE;
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

EJERCICIO #13 (Verificando que el parámetro ‘REMOTE_OS_AUTHENT’ esté deshabilitado)

Ejecute los pasos del punto 2.2.9 Ensure ‘REMOTE_OS_AUTHENT’ Is Set to


FALSE (Scored) del documento CIS Oracle Database 12c Benchmark del Center
for Intenet Security en la Ruta SEGURIDAD Y AUDITORIA DE BASE DE DATOS
/Sesion1/MaterialesDidacticos/BibliografiaComplementaria/

Descripción:
La configuración remote_os_authent determina si se permiten o no las "funciones" del sistema operativo
con los privilegios de asistente para las conexiones de clientes remotos.

Razón fundamental:
Dado que permitir roles de SO para conexiones de base de datos puede permitir la suplantación de
conexiones y permitir la concesión de privilegios de un rol de OS a usuarios no autorizados para realizar
conexiones, este valor debe restringirse según las necesidades de la organización.

Auditoría:
Para evaluar esta recomendación, ejecute la siguiente instrucción SQL.

SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME)='REMOTE_OS_AUTHENT';
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

EJERCICIO #14 (Verificando que el parámetro ‘SEC_CASE_SENSITIVE_LOGON’ esté habilitado)

Ejecute los pasos del punto 2.2.12 Ensure ‘SEC_CASE_SENSITIVE_LOGON’ Is Set


to TRUE (Scored) del documento CIS Oracle Database 12c Benchmark del
Center for Intenet Security en la Ruta SEGURIDAD Y AUDITORIA DE BASE DE
DATOS /Sesion1/MaterialesDidacticos/BibliografiaComplementaria/

Descripción:
La información de SEC_CASE_SENSITIVE_LOGON determina si se requieren o no mayúsculas y minúsculas
para las contraseñas durante el inicio de sesión.

Debido al error de seguridad CVE-2012-3137, se recomienda establecer este parámetro en VERDADERO si


se aplicó la CPU / PSU de octubre de 2012 o posterior.

Si el parche no se aplicó, se recomienda establecer este parámetro en FALSO para evitar que se pueda
abusar de la vulnerabilidad.

Razón fundamental:
Las bases de datos Oracle 11g sin CPU Octubre 2012 parche o posterior son vulnerables a CVE2012-3137 si
se usan hashes de contraseña SHA-1 que distinguen entre mayúsculas y minúsculas. Para evitar este tipo
de ataque, se deben utilizar los antiguos hashes DES

Auditoría:
Para evaluar esta recomendación, ejecute la siguiente instrucción SQL.

SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME)='SEC_CASE_SENSITIVE_LOGON';
MAESTRÍA EN AUDITORÍA Taller #1
DE TECNOLOGÍAS DE LA Revisando configuraciones de seguridad
INFORMACIÓN recomendadas en ORACLE

EJERCICIO #15 (Verificando que el parámetro ‘SEC_MAX_FAILED_LOGIN_ATTEMPTS’ sea 10)

Ejecute los pasos del punto 2.2.13 Ensure


‘SEC_MAX_FAILED_LOGIN_ATTEMPTS’ Is 10 (Scored) del documento CIS
Oracle Database 12c Benchmark del Center for Intenet Security en la Ruta
SEGURIDAD Y AUDITORIA DE BASE DE DATOS
/Sesion1/MaterialesDidacticos/BibliografiaComplementaria/

Descripción:
El parámetro SEC_MAX_FAILED_LOGIN_ATTEMPTS determina cuántos intentos fallidos de inicio de sesión
se permiten antes de que Oracle cierre la conexión de inicio de sesión.

Razón fundamental:
Dado que permitir un número ilimitado de intentos de inicio de sesión para una conexión de usuario puede
facilitar los ataques de inicio de sesión de fuerza bruta y la ocurrencia de la denegación de servicio, este
valor (10) debe configurarse de acuerdo con las necesidades de la organización.

Auditoría:
Para evaluar esta recomendación, ejecute la siguiente instrucción SQL.

SELECT UPPER(VALUE)
FROM V$PARAMETER
WHERE UPPER(NAME)='SEC_CASE_SENSITIVE_LOGON';

Vous aimerez peut-être aussi