31
ORACLE IBÉRICA, S.R.L. ADVANCED CUSTOMER SUPPORT JUNTA DE ANDALUCÍA CONFIGURACIÓN AUDITORIA DATABASE 11G. SOLUTION SUPPORT CENTER Referencia documento: InfV5_JdA_AuditoriaOracleLOPDpara11g_v1.doc Fecha: 10 de Noviembre del 2015 Versión: 1.1 Copyright(c) 2.009 ORACLE IBÉRICA Todos los derechos reservados

ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

ORACLE IBÉRICA, S.R.L. ADVANCED CUSTOMER SUPPORT

JUNTA DE ANDALUCÍA

CONFIGURACIÓN AUDITORIA

DATABASE 11G.

SOLUTION SUPPORT CENTER

Referencia documento: InfV5_JdA_AuditoriaOracleLOPDpara11g_v1.doc Fecha: 10 de Noviembre del 2015 Versión: 1.1 Copyright(c) 2.009 ORACLE IBÉRICA Todos los derechos reservados

Page 2: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

2

Registro de Cambios

Fecha Autor Versión Notas

10/11/2015 Paola Juárez Gómez 1.0 Creación del documento

Revisiones

Nombre Role

Marisol Segade

Principal Advanced Support Engineer

Distribución

Copia Nombre Empresa

Servicio informática CAPDER

Page 3: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

3

Índice de Contenidos

INTRODUCCIÓN .................................................................................................................................... 4 LOPD ................................................................................................................................................... 5 AUDITORIA 11G ................................................................................................................................... 9

Tipos de auditoria ........................................................................................................................ 9 ¿Donde se guardan los registros de auditoría? ..................................................................... 11 Tablas y Vistas ............................................................................................................................ 11 Parametrizacion ......................................................................................................................... 12 ¿Para qué se puede usar la auditoria?..................................................................................... 14

AUDITORIA ESTÁNDAR ...................................................................................................................... 15 Auditar los inicios de sesión de la base de datos .................................................................. 17 Auditar una sentencia concreta ............................................................................................... 17 Auditar acciones de cada usuario............................................................................................ 17 Auditar acciones sobre cada objeto ......................................................................................... 17 Auditar privilegios del sistema ................................................................................................ 18 Auditoria de Oracle NET .......................................................................................................... 18

AUDITORIA DE GRANO FINO ............................................................................................................. 19 LOGMINER ......................................................................................................................................... 21 GUÍA PRÁCTICA DEL MANTENIMIENTO DE LA AUDITORIA ............................................................... 23 ANEXO ................................................................................................................................................ 29 ACCIONES ........................................................................................................................................... 31

Page 4: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

4

Introducción

Una de las principales funciones de un DBA es implementar seguridad en la base de datos. Hay muchos aspectos relacionados a la aplicación de la misma, quizás no todos pueden ser aplicados en tu entorno, pero podría ser interesante conocer todas las opciones. Puede que un DBA no tenga que llegar a implementar una solución de autenticación basada en Kerberos pero siempre va a tener la responsabilidad de saber que está pasando en su base de datos. Es decir, quién se está conectado, qué sentencias se están ejecutando, etc.

La auditoría ha sido desde hace años la manera de satisfacer esta necesidad. No solamente es fácil de implementar y administrar, sino que además cubre todos los aspectos necesarios que un DBA tiene que cuidar cuando se trata de proteger su base de datos.

Con idea de recoger los conceptos y tareas básicas se ha creado este documento orientado a facilitar la implantación de los requisitos de la LOPD mediante la auditoria de Oracle en una base de datos 11g.

Page 5: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

5

LOPD

Según la Agencia Española de Protección de Datos podemos catalogar los ficheros en tres niveles en función a la tipología de los datos.

Reglamento de medidas de seguridad de los ficheros que contengan datos de carácter personal (RD 994/1999)

Nivel básico: Ficheros que contengan datos de carácter personal.

Nivel medio: Ficheros que contengan datos relativos a la comisión de infracciones administrativas o penales, Hacienda Pública, servicios financieros y los que se rijan por el artículo 29 de la LOPD (prestación de servicios de solvencia y crédito).

Nivel alto: Ficheros que contengan datos de ideología, religión, creencias, origen racial, salud o vida sexual así como los recabados para fines policiales sin consentimiento de las personas afectadas

Detalle de los requisitos para los datos LOPD.

Teniendo en cuenta la tipología de los datos comentada antes, tendremos que realizar diferentes tareas para asegurarnos que nuestros cumplimos la LOPD. Para ayudar al lector vamos a diferencias las secciones con colores.

Verde

Algunos puntos básicos están asociados a la gestión y administración de los datos y procedimientos. Estos puntos deben definirse y documentarse entre los departamentos de base de datos, sistemas y responsables de aplicaciones.

Naranja

Hay tareas a cumplir asociadas directamente al plan de Backup&Recovery o Plan de contingencia. Si no se tiene claro como cumplir cualquiera de estos puntos se puede solicitar a ACS una revisión del plan de Backup&Recovery durante la definición del SDP del cliente.

Rojo

La mayoría de los puntos, son requisitos de seguridad que se pueden realizar con configuraciones de seguridad específicas. Si no se tiene claro como cumplir cualquiera de estos puntos se puede solicitar a ACS una revisión de seguridad durante la definición del SDP del cliente.

Negro

En este documento nos vamos a centrar en aquellos puntos que se pueden cumplir configurando la auditoria de Oracle.

Page 6: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

6

NIVEL BASICO

NIVEL MEDIO

NIVEL ALTO

DOCUMENTO DE SEGURIDAD

- Ámbito de aplicación. - Medidas, normas, procedimientos reglas y estándares

de seguridad. - Funciones y obligaciones del personal.

- Estructura y descripción de ficheros y sistemas de información.

- Procedimiento de notificación, gestión y respuesta ante incidencias.

- Procedimientos de realización copias de respaldo y recuperación de datos.

- Identificación del responsable de seguridad. - Control periódico del cumplimiento del

documento. - Medidas a adoptar en caso de reutilización o

desecho de soportes.

PERSONAL

- Funciones y obligaciones claramente definidas y

documentadas. - Difusión entre el personal, de las normas que les

afecten y de las consecuencias por incumplimiento.

INCIDENCIAS

- Registrar tipo de incidencia, momento en que se ha

producido, persona que la notifica, persona a la que se comunica y efectos derivados.

- Registrar realización de procedimientos de

recuperación de los datos, persona que lo ejecuta, datos restaurados y grabados manualmente.

- Autorización por escrito del responsable del fichero para su recuperación.

IDENTIFICACIÓN Y AUTENTICACIÓN

- Relación actualizada de usuarios y accesos

autorizados.

- Procedimientos de identificación y autenticación. - Criterios de accesos. - Procedimientos de asignación y gestión de contraseñas

- Se establecerá el mecanismo que permita la

identificación de forma inequívoca y personalizada de todo usuario y la verificación de que está autorizado.

- Límite de intentos reiterados de accceso no

Page 7: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

7

NIVEL BASICO

NIVEL MEDIO

NIVEL ALTO

y periodicidad con que se cambian. - Almacenamiento ininteligible de contraseñas activas.

autorizado.

CONTROL DE ACCESO

- Cada usuario accederá únicamente a los datos y recursos necesarios para el desarrollo de sus funciones.

- Mecanismos que eviten el acceso a datos o recursos con derechos distintos de los autorizados.

- Concesión de permisos de acceso sólo por personal autorizado.

- Control de acceso físico a los locales donde

se encuentren ubicados los sistemas de información.

GESTIÓN DE SOPORTES

- Identificar el tipo de información que contienen.

- Inventario. - Almacenamiento con acceso restringido. - Salida de soportes autorizada por el responsable del

fichero.

- Registro de entrada y salida de soportes.

- Medidas para impedir la recuperación posterior de información de un soporte que vaya a ser desechado o reutilizado.

- Medidas que impidan la recuperación indebida de la información almacenada en un soporte que vaya a salir como consecuencia de operaciones de mantenimiento.

- Cifrado de datos en la distribución de soportes.

COPIAS DE RESPALDO

- Verificar la definición y aplicación de los procedimientos de copias y recuperación.

- Garantizar la reconstrucción de los datos en el estado en que se encontraban en el momento de producirse la pérdida o destrucción.

- Copia de respaldo, al menos semanal.

- Copia de respaldo y procedimientos de recuperación en un lugar diferente del que se encuentren los equipos.

RESPONSABLE

- Uno o varios nombrados por el responsable

del fichero. - Encargado de coordinar y controlar las

Page 8: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

8

NIVEL BASICO

NIVEL MEDIO

NIVEL ALTO

medidas del documento. - No supone delegación de responsabilidad

del responsable del fichero.

PRUEBAS

- Solo se realizarán si se asegura el nivel de

seguridad correspondiente al tipo de fichero tratado.

AUDITORIA - Al menos cada dos años, interna o externa. - Adecuación de las medidas y controles. - Deficiencias y propuestas correctoras. - Análisis del responsable de seguridad y

conclusiones al responsable del fichero,

- Adopción de las medidas correctoras adecuadas.

REGISTRO DE ACCESOS

- Registrar usuario, hora,

fichero, tipo acceso y registro accedido.

- Control del responsable de seguridad. Informe mensual.

- Conservación 2 años.

TELECOMUNICA CIONES

- Transmisión de datos cifrada.

Page 9: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

9

Auditoria 11G

Para empezar realizaremos una breve descripción del concepto auditoria.

Auditoria informática

Consiste en recoger, agrupar y evaluar evidencias para determinar si un sistema de información salvaguarda el activo empresarial, mantiene la integridad de los datos, lleva a cabo eficazmente los fines de la organización, utiliza eficientemente los recursos y cumple con las leyes y regulaciones establecidas.

Auditoria para Oracle

En el caso de Oracle, la auditoría es un conjunto de características que permite al administrador de la base de datos y a los usuarios hacer un seguimiento del uso de la base de datos. El administrador de base de datos puede definir la actividad de auditoría predeterminada. La información de las auditorías se almacena en el diccionario de datos, en la tabla SYS.AUD$, o en la pista de auditoría del sistema operativo.

Cuando se realizan auditorías, la funcionalidad de la base de datos es dejar constancia de los comandos correctos e incorrectos. Esto puede modificarse cuando se configura cada tipo de auditoría.

Tipos de auditoria

El DBA tiene a su disposición varios tipos diferentes de auditoría:

Auditoria Obligatoria

Este tipo de auditoría está siempre habilitada y monitorea las operaciones que involucren el startup o shutdown de la base de datos. Además de estas acciones, en cualquier momento que alguien utilice los roles predefinidos del sistema SYSDBA, SYSASM o SYSOPER esa acción será auditada.

Auditoria Estándar

Este tipo de auditoría se habilita con el comando de AUDIT cuando es necesario auditar sentencias SQL, privilegios, objetos de esquema o actividades de red. Este tipo de auditoría se define y controla completamente a nivel de base de datos.

Auditoria basada en valores

La auditoría basada en valores fue introducida para poder capturar los valores reales que se cambian cada vez que algún tipo de sentencia DML es ejecutada en todas o determinadas filas de una tabla. Este tipo de auditoría aprovecha la funcionalidad de los triggers de base de datos (construcciones PL/SQL que responden a eventos) para lograr este objetivo.

Page 10: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

10

Auditoria de Grano Fino

La auditoría de grano fino se focaliza en una auditoría de nivel mas granular y las acciones auditadas se capturan basándose en el contenido accedido o modificado. Se puede simplemente crear políticas para disparar eventos de auditoría cuando alguien trata de realizar acciones que responden a las condiciones especificadas en la definición de la política.

Auditoria de Sistema

Por defecto, el usuario SYS está exento de ser auditado, esto es ciertamente un agujero de seguridad. Se puede cambiar este comportamiento cambiando el parámetro AUDIT_SYS_OPERATIONS=TRUE.

Los usuarios que se conecten como SYS serán auditados y los registros de sus acciones serán escritos en un archivo de sistema operativo para evitar que sean borrados de la tabla aud$ dentro de la base de datos. El parámetro de inicialización AUDIT_SYS_OPERATIONS se utiliza para activar y desactivar la auditoria de SYS.

Cuando el parámetro esta a true, oracle registrará todos las sentencias ejecutadas por SYS en la localizacion definida en el AUDIT_FILE_DEST en el caso de UNIX o en el visor de Eventos en el caso de Windows. Si el parámetro AUDIT_SYSLOG_LEVEL está además definido se escribirán también en el syslog de UNIX.

Audit Vault

Como complemento de estas soluciones y para proteger la información sensible recolectada tenemos a disposición el producto Oracle Audit Vault (requiere licencia) que se encarga de resguardar, centralizar y gestionar los registros de auditoría de distintas bases de datos y múltiples orígenes.

Logminer

También podríamos incluir dentro de los escenarios de auditoría el uso de LogMiner. Log Miner es una herramienta que Oracle incorpora en su BBDD que nos ayuda a hacer más sencillo e interpretable los redo logs permitiendo consultar y tracear las operaciones DDL y DML realizadas.

Combinando todas estas opciones, un DBA dispone de un completo arsenal con todas las herramientas necesarias para gestionar la auditoría y así poder construir un sólido sistema de monitoreo que le permita tener bajo control cualquier actividad sospechosa que pueda ocurrir en la base de datos.

Nota:

En una base de datos 11G recién instalada, configuremos o no alguna auditoria, vamos a tener por defecto la Auditoria Obligatoria, como hemos comentado incluye las operaciones de inicio y parada y las conexiones y desconexiones de usuarios con privilegios SYSDBA o SYSOPER que será registrado en los ficheros AUD en el AUD_FILE_DEST.

Además la configuración por defecto en la versión 11G incluye el valor DB para el parámetro AUDIT_TRAIL, que auditara por defecto algunos privilegios de sistema y sentencias siendo guardadas en la tabla SYS.AUD$ (consultar vista AUDIT_TRAIL ).

Page 11: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

11

El DBA siempre tiene la posibilidad de desactivarla en caso de no querer que se active. Y por supuesto el complementar estas políticas de auditoría base con las suyas propias para cumplir con las necesidades y nivel de auditoría requerido en esa BD en particular.

Para revisar la configuración actual o cambiarla basta con revisar el valor de los parámetros AUDIT_TRAIL y AUDIT_FILE_DEST

¿Donde se guardan los registros de auditoría?

La base de datos Oracle registra las actividades de auditoría en registros de Auditoria. Estos registros van a dar información sobre la operación que ha sido auditada, el usuario que realizo dicha operación o sobre la fecha y tiempo en la que se realizo dicha operación.

Los registros de auditoría pueden ser almacenados en las tablas de diccionario asociadas, llamadas AUDIT TRAIL o en el sistema. Oracle dispone de un conjunto de vistas de diccionario que nos van a permitir rastrear las actividades sospechosas.

Cuando se usa la auditoria estándar, Oracle escribe los registros en la DBA_AUDIT_TRAIL (tabla SYS.AUD$), en el AUDIT_TRAIL del sistema operativo o si estamos usando también la auditoria de grano fino en la vista DBA_COMMON_AUDIT_TRAIL que combina ambas entradas.

Si se activa o desactiva la auditoria a operaciones de usuarios con privilegios de sistema , asociada al usuario SYS, o cualquier usuario que se conecte usando los privilegios SYSDBA or SYSOPER esas opraciones se guardan en ORACLE_BASE/ admin/ORACLE_SID/adump o ORACLE_HOME/rdbms/audit.

Las acciones realizadas por los administradores serán auditadas en el syslog audit siempre que el parámetro AUDIT_SYSLOG_LEVEL se encuentre definido.

Tablas y Vistas

Para consultar la información existente se recomienda consultar las vistas de diccionario asociadas a la auditoria.

Las principales son:

Vista

Descripción

ALL_AUDIT_POLICIES Define las políticas en las tablas y vistas accesibles al usuario actual.

ALL_AUDIT_POLICY_COLUMNS Define las políticas de auditoría en las tablas y vistas accesibles para el usuario actual.

ALL_DEF_AUDIT_OPTS Lista las opciones por defecto de auditoría que serán aplicadas a los objetos que se crean.

AUDIT_ACTIONS Lista las acciones que pueden ser auditadas. DBA_AUDIT_EXISTS Lista las entradas auditadas producidas por AUDIT

NOT EXISTS. DBA_AUDIT_OBJECT Lista los registros de auditoría de todos los objetos del

sistema. DBA_AUDIT_POLICIES Lista toda la información sobre las políticas de

auditoría del sistema. DBA_AUDIT_SESSION Lista todos los registros que conciernen a CONNECT y

Page 12: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

12

Vista

Descripción

DISCONNECT.

DBA_AUDIT_POLICY_COLUMNS Lista las columnas de política en las tablas y vistas de toda la base de datos.

BDA_AUDIT_STATEMENT Lista los registros auditados que conciernen a GRANT, REVOKE, AUDIT, NOAUDIT y ALTER SYSTEM de toda la base de datos.

DBA_AUDIT_TRAIL Lista todas las entradas estándares que hay en la tabla AUD$.

DBA_COMMON_AUDIT_TRAIL Combina los logs estándares con los exhaustivos, incluye SYS y los registros obligatorios escritos en formato XML.

DBA_FGA_AUDIT_TRAIL Lista los registros completos de una auditoría.

DBA_OBJ_AUDIT_OPTS Describe las opciones de auditoría en todos los objetos.

DBA_PRIV_AUDIT_OPTS Describe los privilegios de sistema actuales que estan siendo auditados por algún usuario.

DBA_STMT_AUDIT_OPTS Describe todas las opciones de auditoría actuales de todo el sistema y por usuario.

USER_AUDIT_OBJECT Lista los registros auditados para sentencias que conciernen objetos accesibles para el usuario actual.

USER_AUDIT_POLICIES Describe exhaustivamente las columnas de políticas de auditoría en las tablas y vistas accesibles por el usuario actual.

USER_AUDIT_SESSION Lista todos los registros de auditoría relacionados a conexiones y desconexiones del usuario actual.

Hay bastantes vistas más, para verlas todas podemos usar esta sentencia:

SELECT view_name

FROM dba_views

WHERE view_name LIKE ‘%AUDIT%’

ORDER BY view_name

Parametrizacion

Parámetro Valor por defecto Descripción

AUDIT_TRAIL

DB

Activa o desactiva el uso de la auditoria. Existen diferentes valores: – none: desactiva la auditoría de la base de datos.

– os: activa la auditoría de la base de datos. Los sucesos auditados se escribirán en la pista de auditoría del sistema operativo, no se auditará en Oracle sino en el sistema operativo anfitrión. Esta opción funcionará dependiendo del sistema operativo.

– db: activa la auditoría y los datos se almacenarán en la taba SYS.AUD$ de Oracle.

Page 13: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

13

Parámetro Valor por defecto Descripción

– db, extended: activa la auditoría y los datos se almacenarán en la taba SYS.AUD$ de Oracle. Además se escribirán los valores correspondientes en las columnas SQLBIND y SQLTEXT de la tabla SYS.AUD$. – xml: activa la auditoría de la base de datos, los sucesos será escritos en ficheros XML del sistema operativo.

– xml, extended: activa la auditoría de la base de datos, los sucesos será escritos en el formato XML del sistema operativo, además se incluirán los valores de SqlText y SqlBind.

AUDIT_FILE_DEST

ORACLE_BASE/ admin/ORACLE_SID/adump or ORACLE_HOME/rdbms/audit

Especifica el directorio de sistema operativo donde audit trail escribirá en caso de estar usando cualquier de las

opciones OS, XML, o

XML,EXTENDED. Hay que tener en

cuenta que la auditoria obligatoria usará este directorio, además si está definido el

AUDIT_SYS_OPERATIONS,

también se incluirá la auditoria del usuario SYS.

AUDIT_SYS_OPERATIONS FALSE Activa o desactiva la auditoria a

operaciones de usuarios con privilegios de sistema , asociada al usuario SYS, o cualquier usuario que se conecte usando

los privilegios SYSDBA or

SYSOPER.

AUDIT_SYSLOG_LEVEL

Sin valor por defecto

Configurando este parámetro podemos integrar la auditoria de Oracle ( Audit Trail) con el syslog de UNIX o incluso mandar esa información a un sistema remoto usando la utilidad SYSLOGD

Ejemplo

AUDIT_SYSLOG_LEVEL = 'LOCAL1.WARNING';

/etc/syslog.conf:

LOCAL1.WARNING /var/log/dbaudit.log

Page 14: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

14

¿Para qué se puede usar la auditoria?

A continuación se listan algunos casos de usos en los que se puede usar la auditoria.

- Problemas de rendimiento asociados a logon excesivos. Nos permitirá cuantificar que usuarios son los que más conexiones realizan. Normalmente estos problemas están asociados a problemas de configuración de los pools de conexión de los servidores de aplicaciones y una vez identificados son fáciles de solucionar.

- Errores en la app como “Table Or View Does Not Exist” o “Insufficient Privileges”. Cuando aparecen estos errores podemos acudir a la auditoria para identificar que tabla es la involucrada únicamente consultando el AUDIT_TRAIL

- Quien borro/modifico una tabla/procedimiento o índice?

- Privilegios inapropiados asignados a algunos usuarios. ¿Sabes si algún usuario tiene privilegios que no le corresponden? ¿Algún usuario con permisos DBA en tu entorno productivo?

- Diagnostico de problemas de conexión. Por ejemplo la cuenta de un usuario se bloquea frecuentemente pero no se sabe que persona está usando ese usuario. Con la auditoria puedes identificar desde que máquina se están conectando.

- Configurar la auditoria de Oracle te permite cumplir la LOPD si tienes datos de catalogados como nivel medio o alto.

Page 15: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

15

Auditoria Estándar

Esta sección explica cómo usar la auditoria estándar para auditar las actividades realizadas contra sentencias SQL, privilegios, objetos de sistema, red o actividades multitier.

Cuando creamos una base de datos con el asistente DBCA por defecto se configura la auditoria de los privilegios y sentencias SQL. El parámetro AUDIT_TRAIL se configura a DB.

- Con la auditoria estándar se pueden tracear las acciones que tienen resultado fallido, correcto o ambas.

- Se puede especificar “BY SESSION” o “BY ACCESS” según la granularidad que queramos. Oracle recomienda que se use la opción BY ACCESS, ya que esa opción incluye más información como fecha/hora ejecución, privilegios usados, objetos accedidos, SQL text o bind variables. Además se incluirá el SCN de cada ejecución que nos puede ser útil para realizar flashback query

- Podemos tracear las actividades de algunos usuarios en particular.

- Para chequear la configuración podemos usar las vistas DBA_STMT_AUDIT_OPTS, DBA_PRIV_AUDIT_OPTS y DBA_OBJ_AUDIT_OPTS.

- Para desactivar cualquier traceo basta con usar la opción NOAUDIT.

Oracle Database 11G audita los siguientes privilegios por defecto:

ALTER ANY PROCEDURE

CREATE ANY LIBRARY

DROP ANY TABLE

ALTER ANY TABLE

CREATE ANY PROCEDURE

DROP PROFILE

ALTER DATABASE

CREATE ANY TABLE

DROP USER

ALTER PROFILE

CREATE EXTERNAL JOB

EXEMPT ACCESS POLICY

ALTER SYSTEM

CREATE PUBLIC

DATABASE LINK

GRANT ANY ROLE

OBJECT PRIVILEGE

ALTER USER

CREATE SESSION

GRANT ANY PRIVILEGE

AUDIT SYSTEM

Page 16: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

16

CREATE USER

GRANT ANY ROLE

CREATE ANY JOB

DROP ANY PROCEDURE

Oracle 11G audita los siguientes accesos directos SQL por defecto.

ROLE

SYSTEM AUDIT

PUBLIC SYNONYM

Auditoria de Sentencias , Privilegios, Objetos o Red

- Las sentencias SQL que se pueden auditar podrían separarse en dos categorías.

Sentencias DDL . Por ejemplo habilitando la auditoria de tablas ( AUDIT TABLE) auditariamos las sentencias CREATE y DROP TABLE.

Sentencias DML. Por ejemplo activando la auditoria SELECT TABLE podríamos auditar todas las sentencias, SELECT FROM TABLE/VIEW.

- La auditoria de privilegios nos permite controlar que privilegios de sistema están siendo usados. Por ejemplo se puede auditar el privilegio SELECT ANY TABLE. Para hacer esto usaremos la sentencia AUDIT y NOAUDIT para activar y desactivar la auditoria de ese privilegio respectivamente. Antes de nada hay que auditar el privilegio AUDIT SYSTEM para poder realizar esa tarea.

Ejemplos:

Si queremos auditar el uso del privilegio de sistema DELETE ANY TABLE:

AUDIT DELETE ANY TABLE BY ACCESS WHENEVER NOT SUCCESSFUL;

Si queremos incluir los casos con fallo y acierto:

AUDIT DELETE ANY TABLE BY ACCESS;

Para auditar los intentos fallidos de uso del privilegio SELECT, INSERT y delete en todas las tablas y el intento fallido del privilegio de sistema EXECUTE PROCEDURE:

AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY

ACCESS WHENEVER NOT SUCCESSFUL;

Si queremos completar la auditoria podemos hacerlo en los siguientes puntos:

Auditar los inicios de sesión de la base de datos

Auditar una sentencia concreta

Auditar acciones de cada usuario

Auditar acciones sobre cada objeto

Auditar privilegios del sistema

Page 17: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

17

Auditar los inicios de sesión de la base de datos

Para auditar los inicios de sesión de la base de datos usaremos la sentencia “AUDIT SESSION” (la cual podemos filtrar por usuarios de la siguiente forma “AUDIT SESSION BY usuario1, usuario2;” Al igual que el comando AUDIT tenemos el comando NOAUDIT para desactivarla política de auditoría previamente activada.

SQL> AUDIT SESSION BY SCOTT;

SQL> select * from dba_priv_audit_opts where USER_NAME='SCOTT';

USER_NAME PROXY_NAME PRIVILEGE SUCCESS FAILURE

SCOTT CREATE SESSION BY ACCESS BY ACCESS

SQL> Select username, timestamp, action_name, comment_text,

priv_used from dba_audit_trail where username='SCOTT'

USERNAME TIMESTAMP ACTION_NAME COMMENT_TEXT

PRIV_USED

SCOTT 28-OCT-15 LOGON Authenticated by: DATABASE

CREATE SESSION

SQL> Select Username, userhost, extended_timestamp, action_name from

dba_audit_session where username='SCOTT';

USERNAME USERHOST EXTENDED_TIMESTAMP

ACTION_NAME

SCOTT oel64 28-OCT-15 01.40.48.055753 PM +01:00 LOGON

Auditar una sentencia concreta

Pongámonos en la situación que por ejemplo vamos a auditar todas las sentencias que creen una tabla. Por ejemplo vamos a auditar el CREATE TABLE para el usuario SCOTT.

AUDIT CREATE TABLE BY SCOTT;

Con las vistas DBA_STMT_AUDIT_OPTS y DBA_PRIV_AUDIT_OPTS podemos ver que la auditoría de la sentencia create table ha sido activada para ese usuario.

Auditar acciones de cada usuario

Si vamos a auditar las acciones de cada usuario, lo primero vamos a definir en Oracle que registre todas las actividades que hacen:

SQL> AUDIT ALL;

SQL> AUDIT ALL BY SCOTT;

Auditar acciones sobre cada objeto

Auditando acciones sobre objetos tendremos seguridad sobre la actividad de los usuarios que han interactuado con ese objeto. La sentencia para auditar un objeto es la siguiente:

SQL> AUDIT INSERT ON SCOTT.TABLAOBJETO BY ACCESS;

Page 18: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

18

Para auditar todas las acciones de esa misma tabla haríamos:

SQL > audit all on CONTABILIDAD by access;

Auditar privilegios del sistema

Para auditar un privilegio de sistema simplemente debemos de usar la orden AUDIT seguida del privilegio de sistema que necesitemos:

SQL > AUDIT DELETE ANY TABLE BY ACCESS;

Podemos ver todos los privilegios de la base de datos con la siguiente sentencia:

SQL > Select privilege from dba_sys_privs;

Como en sesiones podemos filtrar los privilegios que se terminan correctamente y los que no, con “WHENEVER (NOT) SUCCESSFUL” al final de la sentencia, si no se define auditará todos los tipos. Si nos conectamos con SCOTT y borramos una tabla podemos ver que dejamos “huella” de ello.

Auditoria de Oracle NET

Podemos activar la auditoria de red para registrar errores internos o de protocolo en la capa de red

Para activarla / desactivarla usaremos:

AUDIT NETWORK BY ACCESS;

NOAUDIT NETWORK;

Alguno de los errores auditables:

• TNS-2507, TNS-12648, TNS-12649, TNS-12650

Page 19: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

19

Auditoria de Grano Fino

La auditoria de Grano Fino o FGA es una funcionalidad disponible en la versión Enterprise que permite crear políticas que definen condiciones específicas de auditoría. Permite auditar a bajo nivel consultas con operaciones INSERT, UPDATE y DELETE.

Por ejemplo se puede usar FGA en estos casos:

Acceso a una tabla fuera de los horario laboral

Login desde una IP en particular

Consulta o modificación de una columna en particular.

Los registros de auditoría de grano fino se guardan en la tabla SYS.FGA_LOG$. Para consultar esos registros se puede usar la vista DBA_FGA_AUDIT_TRAIL. Si también estamos usando la auditoria estándar podemos acceder a la vista DBA_COMMON_AUDIT_TRAIL, que contiene los registros estándar y FGA unificados.

Para crear una política de FGA se debe usar el procedimiento DBMS_FGA.ADD_POLICY. La base de datos ejecuta esa política teniendo en cuenta los privilegios del usuario que la está creando. El máximo número de políticas que se pueden configurar en una tabla o vista es de 256. La base de datos Oracle almacenara la política en el diccionario. La definición de la política se almacenara en la taba de diccionario SYS.FGA$. Una política no podrá ser modificada una vez creada, si se quiere modificar tendremos que borrarla y volver a crearla.

Para poder crear una política hay que tener permisos EXECUTE DBMS_FGA package.

Page 20: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

20

El siguiente ejemplo muestra la creación de una política para registrar todos los updates realizados en la columna SALARY a no ser que el usuario que las realice sea el propietario de la tabla, SCOTT.

begin

DBMS_FGA.ADD_POLICY(

object_schema => 'SCOTT',

object_name => 'EMPLOYEE',

policy_name => 'salary_change',

audit_column => 'SALARY',

audit_condition => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') <>

''SCOTT'' ',

enable => TRUE,

statement_types => 'UPDATE',

audit_trail => DBMS_FGA.DB + DBMS_FGA.EXTENDED);

end;

/

Otro ejemplo donde podemos ver como activar la auditoria para saber quien consulta registros donde los valores de una columna son más altos al valor indicado.

begin

dbms_fga.add_policy(

object_schema => 'SCOTT',

object_name => 'BOOK',

policy_name => 'EXPENSIVE_BOOKS',

audit_condition => 'BOOK_RETAIL_PRICE>=50',

audit_column => 'BOOK_TITLE',

handler_schema => null,

handler_module => null,

enable => true

);

end;

/

Para chequear las políticas definidas se debe consultar la vista DBA_AUDIT_POLICIES

SELECT object_schema, object_name, policy_name, policy_column ,

enabled, sel, ins ,upd ,del FROM dba_audit_policies;

Una de las ventajas de usar FGA, si la comparamos con la auditoria estándar, es que no necesitamos modificar el parámetro AUDIT_TRAIL para que funcione, con lo que no tendremos que reiniciar la base de datos para empezar a auditar.

Page 21: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

21

LogMiner

Oracle registra todos los cambios realizados en la base de datos en los ficheros de REDO.

En cada registro de redo encontramos:

Usuario que realizó la acción

En caso de UPDATE, información previa y posterior

En el caso de INSERT la información almacenada

En el caso de DELETE , los registros borrados

Los ficheros de REDO se pueden ir conservando si se activa el archivado, ya que estos son reutilizados

Log Miner es una herramienta que Oracle incorpora en su BBDD que nos ayuda a hacer más sencillo e interpretable el contenido de los ficheros de redo log. Para activarlo tenemos que definir una ruta de archivos con el parámetro “UTL_FILE_DIR”, podemos ver inicialmente el valor del mismo de la siguiente manera

SQL> show parameter utl

El parámetro UTL_FILE_DIR miner es estático, con lo que tendremos que reiniciar la base de datos una vez cambiado si queremos que se realice dicha modificación.

SQL > alter system set utl_file_dir='/home/oracle/logminer'

scope=spfile;

Otro requisito es tener activo la opción de “supplemental log data”.

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

Para confirmar que está configurado podemos consultar la siguiente vista:

SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

Una vez configurados los prerrequisitos tenemos que crear el diccionario de LogMiner. Para ello usaremos la ruta definida en el paso previo:

SQL> exec DBMS_LOGMNR_D.BUILD( DICTIONARY_FILENAME

=>'/home/oracle/logminer.ora', DICTIONARY_LOCATION =>

'/home/oracle/logminer');

PL/SQL procedure successfully completed.

Una vez definido el diccionario, tendremos que ir indicando que ficheros son los que queremos

ir leyendo. Las sentencias para añadir o quitar ficheros son:

SQL> exec DBMS_LOGMNR.add_logfile('nombrearchivo');

SQL> exec DBMS_LOGMNR.remove_logfile (LOGFILENAME =>

'nombrearchivo');

Page 22: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

22

Ejemplo:

exec DBMS_LOGMNR.add_logfile ('/u01/app/oracle/flash_recovery_area

/ORCL11/archivelog/2015_10_29/o1_mf_1_8_c345w605_.arc');

Si queremos ver los ficheros que tenemos registrados :

select FILENAME , RESET_SCN, LOW_SCN,NEXT_SCN from v$LOGMNR_LOGS

FILENAME RESET_SCN LOW_SCN NEXT_SCN

/u01/app/oracle/oradata/ORCL11/redo03.log 945184 1137442

1143618

/u01/app/oracle/oradata/ORCL11/redo01.log 945184 1143618

2.8147E+14

El último paso sería iniciar la sesión de Log miner para empezar a leer los ficheros.

SQL > exec

DBMS_LOGMNR.START_LOGMNR(DICTFILENAME=>'/home/oracle/logminer/logmin

er.ora');

Para consultar información que nos ayudará a interpretar los datos de los redo, se recomienda consultar la vista v$logmnr_contents, aunque también existen estas otras:

V$LOGMNR_CONTENTS

V$LOGMNR_DICTIONARY

V$LOGMNR_LOGS

V$LOGMNR_PARAMETERS

Ejemplo:

Supongamos que el usuario SCOTT realiza un update en la tabla EMP y queremos consultar la auditoria de ese cambio, para ello consultaríamos la vista V$LOGMNR_CONTENTS

SQL> update EMP set JOB='CLERK' where ENAME='FORD';

1 row updated.

column sql_redo format a30 word_wrapped

column sql_undo format a30 word_wrapped

column username format a12

SELECT scn, username, sql_redo, sql_undo from v$logmnr_contents

where username='SCOTT';

SCN USERNAME SQL_REDO SQL_UNDO

---------- ------------ ------------------------------ -------------

1144131 SCOTT set transaction read write;

1144131 SCOTT update "SCOTT"."EMP" set "JOB" update

"SCOTT"."EMP" set "JOB"= 'CLERK' where "JOB" = = 'CLERK'

where "JOB" ='CLERK' and ROWID = 'CLERK' and ROWID =

'AAAR3xAAEAAAACXAAM'; 'AAAR3xAAEAAAACXAAM';

Para finalizar la sesión de LogMiner solo es necesario ejecutar el siguiente comando:

SQL > exec DBMS_LOGMNR.END_LOGMNR;

O salir de la sesión de SYS y automáticamente se cerrará la base de datos.

Page 23: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

23

Guía práctica del mantenimiento de la Auditoria

Ficheros Auditoria por defecto

Aunque no tengamos activada la auditoria, tenemos que recordar que la versión 11 viene configurada por defecto con la opción DB. Con lo que tendremos ciertos registros en el DBA_AUDIT_TRAIL.

Además no nos debemos olvidar que Auditoria Obligatoria genera ficheros en el AUDIT_DEST, si en nuestro entorno hay muchos usuarios que se conectan como SYSDBA o SYSOPER se generaran muchos ficheros que pueden terminar llenando el filesystem.

Se recomienda realizar revisiones periódicas y realizar purgados frecuentemente.

Tablespace específico para Auditoria

El primer paso a tener en cuenta cuando se empieza a usar la auditoria es mover los registros a su propio tablespace, ya que por defecto estará en el SYSTEM.

En versiones previas este cambio debía de realizarse manualmente, en 11G se puede realizar mediante el paquete DBMS_AUDIT_MGMT. Tenemos que tener cuidado y no realizar esta tarea en ventana de tiempo de producción porque puede haber problemas de rendimiento. Por ejemplo si tenemos auditado el LOGON/LOGOFF puede causar un cuello de bloqueo si no se puede realizar login nuevos por tener bloqueadas las tablas de auditoría.

Otra opción es desactivar el traceo con NOAUDIT y volverlo a activarlo después de haber movido las tablas al nuevo tablespace.

Como primer paso creamos el tablespace Audit.

create tablespace audit_tbs

datafile '/u01/app/oracle/oradata/ORCL12/datafile/audit_tbs01.dbf'

size 20M autoextend on next 5m maxsize 2000M;

Movemos las tablas de auditoría al nuevo tablespace.

BEGIN

DBMS_AUDIT_MGMT.set_audit_trail_location(

audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

audit_trail_location_value => 'AUDIT_TBS');

END;

Job de Purgado

Para que la tabla unified_audit_trail no crezca demasiado, se recomienda implantar una buena práctica que consiste crear una tabla de histórico en un tablespace dedicado.

En la tabla de histórico se van a mantener los registros más antiguos y en la tabla unified_audit_trail los registros más recientes ( Por ejemplo último mes ). Para realizar este procedimiento se puede crear un job diario que se encargue de realizar el traspaso de registros.

Creación de un usuario específico para el mantenimiento.

Page 24: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

24

SQL> create user registro identified by **** default tablespace

AUDIT_TBS;

User created.

SQL> grant connect to registro;

Grant succeeded.

SQL> grant AUDIT_ADMIN to registro;

Grant succeeded.

SQL> grant AUDIT_VIEWER to registro;

Grant succeeded.

SQL> alter user registro quota unlimited on AUDIT_TBS;

User altered.

Diariamente se copian los registros en la tabla de histórico y posteriormente se purgan de la tabla audit.

Para ello nos conectamos con el usuario registro.

CREATE TABLE registro_auditoria AS (SELECT * FROM

UNIFIED_AUDIT_TRAIL);

Truncate table registro_auditoria;

INSERT INTO registro_auditoria (SELECT * FROM UNIFIED_AUDIT_TRAIL);

Con el siguiente paquete podemos fijar el timestamp con el momento en el que hemos realizado el paso a histórico para luego hacer un purgado usando ese timestamp

Se fija el time stamp final de lo último que se ha archivado

BEGIN

dbms_audit_mgmt.set_last_archive_timestamp(

audit_trail_type => dbms_audit_mgmt.audit_trail_unified,

last_archive_time =>sysdate);

END;/

Posteriormente se puede purgar sin problema.

SELECT last_archive_ts FROM dba_audit_mgmt_last_arch_ts;

LAST_ARCHIVE_TS

-----------------------------------

13-JAN-15 01.22.00.000000 PM +00:00

BEGIN

dbms_audit_mgmt.clean_audit_trail(

audit_trail_type => dbms_audit_mgmt.audit_trail_unified,

use_last_arch_timestamp => TRUE);

END;

/

La recomendación es crear un job para realizar esta tarea de forma diaria o semanal en función de los registros que se quieran mantener en la tabla UNIFIED_AUDIT_TRAIL.

Page 25: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

25

Comprobamos los registros de cada tabla:

select count(*) from registro_auditoria;

select count(*) from unified_audit_trail;

Si queremos realizar un purgado diario sin pasar a histórico los registros diarios, podemos seguir los siguientes pasos:

1. Inicializar el mantenimiento de auditoria

2. Confirmar cual es el intervalo de Limpieza configurado por defecto

3. Fijar el valor de Last Archive Timestamp

4. Chequear el valor definido

5. Configurar el job de purgado

6. Configurar el job para fijar el Last Archive Timestamp

7. Chequear la configuración de los jobs.

--

-- Set-up Audit Management

--

BEGIN

DBMS_AUDIT_MGMT.init_cleanup(

audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,

default_cleanup_interval => 12 /* hours */);

END;

/

--

-- Check Default Clean Up Interval has been Set and Cleanup is Initialized

--

COLUMN parameter_name FORMAT A30

COLUMN parameter_value FORMAT A20

COLUMN audit_trail FORMAT A20

SELECT * FROM dba_audit_mgmt_config_params WHERE PARAMETER_NAME = 'DEFAULT

CLEAN UP INTERVAL'

/

SET SERVEROUTPUT ON

BEGIN

IF

DBMS_AUDIT_MGMT.is_cleanup_initialized(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD)

THEN

DBMS_OUTPUT.put_line('YES');

ELSE

DBMS_OUTPUT.put_line('NO');

END IF;

END;

/

pause Check the default clean up interval been set and the cleanup has been

initialized.

--

-- Set Last Archive Timestamp Values for OS and XML Files.

--

BEGIN

DBMS_AUDIT_MGMT.set_last_archive_timestamp(

audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,

last_archive_time => SYSTIMESTAMP-31);

END;

Page 26: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

26

/

BEGIN

DBMS_AUDIT_MGMT.set_last_archive_timestamp(

audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

last_archive_time => SYSTIMESTAMP-31);

END;

/

BEGIN

DBMS_AUDIT_MGMT.set_last_archive_timestamp(

audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML,

last_archive_time => SYSTIMESTAMP-31);

END;

/

--

-- Check Last Archive Timestamp Values are Set

--

SELECT * FROM dba_audit_mgmt_last_arch_ts

/

pause Check the last archive timestamp values have been set.

--

-- Set-up Automated Purge Job

--

BEGIN

DBMS_AUDIT_MGMT.create_purge_job(

audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,

audit_trail_purge_interval => 24 /* hours */,

audit_trail_purge_name => 'PURGE_ALL_AUDIT_TRAILS',

use_last_arch_timestamp => TRUE);

END;

/

--

-- Set-up a Job to Move the Last Archive Timestamp Forward Each Day

--

-- Unhash if rerunning code.

--

-- BEGIN

-- SYS.DBMS_SCHEDULER.DROP_JOB

-- (job_name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD');

-- END;

-- /

BEGIN

SYS.DBMS_SCHEDULER.CREATE_JOB

(

job_name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'

,start_date => TO_TIMESTAMP_TZ('2012/04/13 08:00:00.000000

+01:00','yyyy/mm/dd hh24:mi:ss.ff tzr')

,repeat_interval => 'FREQ=DAILY;INTERVAL=1'

,end_date => NULL

,job_class => 'DEFAULT_JOB_CLASS'

,job_type => 'PLSQL_BLOCK'

,job_action => 'BEGIN

DBMS_AUDIT_MGMT.set_last_archive_timestamp(

audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,

last_archive_time => SYSTIMESTAMP-31);

END;

BEGIN

DBMS_AUDIT_MGMT.set_last_archive_timestamp(

audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

last_archive_time => SYSTIMESTAMP-31);

END;

BEGIN

DBMS_AUDIT_MGMT.set_last_archive_timestamp(

audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML,

last_archive_time => SYSTIMESTAMP-31);

END;'

,comments => NULL

);

Page 27: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

27

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE

( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'

,attribute => 'RESTARTABLE'

,value => FALSE);

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE

( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'

,attribute => 'LOGGING_LEVEL'

,value => SYS.DBMS_SCHEDULER.LOGGING_OFF);

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL

( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'

,attribute => 'MAX_FAILURES');

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL

( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'

,attribute => 'MAX_RUNS');

BEGIN

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE

( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'

,attribute => 'STOP_ON_WINDOW_CLOSE'

,value => FALSE);

EXCEPTION

-- could fail if program is of type EXECUTABLE...

WHEN OTHERS THEN

NULL;

END;

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE

( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'

,attribute => 'JOB_PRIORITY'

,value => 3);

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL

( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'

,attribute => 'SCHEDULE_LIMIT');

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE

( name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD'

,attribute => 'AUTO_DROP'

,value => TRUE);

SYS.DBMS_SCHEDULER.ENABLE

(name => 'SYS.MOVE_LAST_TIMESTAMP_FORWARD');

END;

/

--

-- Check the DBMS Scheduler Jobs are Configured.

--

SELECT owner,job_name FROM DBA_SCHEDULER_JOBS WHERE job_name IN

('PURGE_ALL_AUDIT_TRAILS','MOVE_LAST_TIMESTAMP_FORWARD')

/

pause Check the jobs are scheduled.

Note 73408.1 How to Truncate, Delete, or Purge Rows from the Audit Trail Table SYS.AUD$

Note 731908.1 New Feature DBMS_AUDIT_MGMT To Manage And Purge Audit Information

Auditoria del Sistema

Para gestionar los registros de auditoría de Oracle debemos tener claro que cualquier usuario que se conecte con privilegios de administrador puede borrar estos archivos. Para poder controlar eso se recomienda activar el parámetro AUDIT_SYS_OPERATIONS=TRUE, que nos permitirá tener registrado que esos registros han sido borrados.

Page 28: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

28

Control de acceso a la tabla AUD$

Si en algún momento necesitamos habilitar el acceso a usuarios a la tabla AUD$ podemos habilitar auditoria para cualquier acción que se realice sobre esta tabla.

AUDIT INSERT, UPDATE, DELETE ON SYS.AUD$ BY ACCESS;

Así podremos controlar la actividad relevante que se realiza sobre esta tabla.

Configuración Avanzada

Se recomienda completar la auditoria por defecto con las siguientes sentencias. Este cambio capturara la mayoría de las operaciones DLL y Grant además de los intentos de ejecución de sentencias SQL fallidos.

audit not exists;

audit select any table;

audit select any dictionary;

audit SELECT TABLE whenever not successful;

audit INSERT TABLE whenever not successful;

audit UPDATE TABLE whenever not successful;

audit DELETE TABLE whenever not successful;

audit table; (shortcut for create, drop, truncate)

audit alter table;

audit procedure;

audit trigger;

audit view;

audit index;

audit grant procedure;

audit grant table;

Page 29: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

29

Anexo

En esta sección se incluyen información utiles.

Estructura principales tablas de auditoria

Page 30: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

30

Como auditar las conexiones fallidas

select username, terminal, action_name,

to_char(timestamp,'DDMMYYYY:HHMISS') timestamp,

to_char(logoff_time,'DDMMYYYY:HHMISS') logoff_time,

returncode from dba_audit_session

SQL> /

USERNAME TERMIN ACTION_N TIMESTAMP LOGOFF_TIME RETURNCODE

SYS pts/1 LOGOFF 09042009:051046 09042009:051641 0

JULIA pts/1 LOGON 09042009:051641 1017

SYS pts/1 LOGOFF 09042009:051649 09042009:053032 0

SYS pts/2 LOGOFF 09042009:052622 09042009:053408 0

JULIA pts/1 LOGON 09042009:053032 1017

Como auditar las conexiones en horarios NO laborales

SQL> select username, terminal, action_name, returncode,

to_char(timestamp,'DD-MON-YYYY HH24:MI:SS'),

to_char(logoff_time,'DD-MON-YYYY HH24:MI:SS') from dba_audit_session

where to_date(to_char(timestamp,'HH24:MI:SS'),'HH24:MI:SS') <

to_date('08:00:00','HH24:MI:SS') or

to_date(to_char(timestamp,'HH24:MI:SS'),'HH24:MI:SS')

>to_date('19:30:00','HH24:MI:SS')

USERNAME TERMIN ACTION_N RETURNCODE TO_CHAR(TIMESTAMP,'D

TO_CHAR(LOGOFF_TIME,

SYS pts/1 LOGOFF 0 09-APR-2009 20:10:46 09-APR-2009 20:16:41

SYSTEM pts/5 LOGOFF 0 09-APR-2009 21:49:20 09-APR-2009 21:49:50

JULIA pts/5 LOGON 0 09-APR-2009 21:49:50

PEPE pts/6 LOGON 0 09-APR-2009 22:49:12

Como auditar las conexiones de usuario NO definidos

SQL> select username, terminal,

to_char(timestamp,'DD-MON-YYYY HH24:MI:SS')

from dba_audit_session

where returncode<>0 and

not exists (select 'x' from dba_users where

dba_users.username=dba_audit_session.username)

USERNAME TERMIN TO_CHAR(TIMESTAMP,'D

PEPE pts/3 09-APR-2003 17:31:47

PEPE pts/3 09-APR-2003 17:32:02

PEPE pts/3 09-APR-2003 17:32:15

ANAJ pts/3 09-APR-2003 17:33:01

Page 31: ORACLE IBÉRICA, S · 2020-03-11 · sin consentimiento de las personas afectadas ... PRUEBAS-Solo se realizarán si se asegura el nivel de seguridad correspondiente al tipo de fichero

31

Acciones

Acciones Riesgo o Mejora Responsable Estado

Repaso de la documentación proporcionada, buenas prácticas para el uso de políticas de Seguridad

Cumplimiento LOPD

CAPDER con ayuda de Oracle Soporte

Pendiente

Soporte a la implantación de la auditoria para cumplir la LOPD de tipo MEDIO / ALTO en las tablas seleccionadas

Cumplimiento LOPD

CAPDER con ayuda de Oracle Soporte

Pendiente