Auditoría de eventos de seguridad

En las aplicaciones que se crean mediante Windows Communication Foundation (WCF) puede usarse la característica de auditoría para registrar eventos de seguridad (correctos, con errores o ambos). Los eventos se escriben al registro de eventos del sistema de Windows y se pueden examinar utilizando el Visor de eventos.

La auditoría proporciona un método para que un administrador detecte un ataque que ya se ha producido o que está en curso. Además, auditar puede ayudar un desarrollador a depurar problemas relacionados con la seguridad. Por ejemplo, si un error en la configuración de la autorización o al comprobar la directiva niega accidentalmente el acceso a un usuario autorizado, un programador puede detectar y aislar rápidamente la causa de este error examinando el registro de eventos.

Para obtener más información sobre la seguridad de WCF, consulte Información general sobre seguridad. Para obtener más información sobre la programación de WCF, consulte Programación básica de WCF.

Nivel de auditoría y comportamiento

Existen dos niveles de auditorías de seguridad:

  • Nivel de autorización de servicio, en el que un llamador está autorizado.

  • Nivel de mensaje, en el que se comprueba la validez del mensaje y se autentica al llamador desde WCF.

Para comprobar los registros de eventos correctos y de eventos con errores en ambos niveles de auditoría, puede usarse lo que se conoce como comportamiento de auditoría.

Ubicación del registro de auditoría

Una vez que determina el nivel y comportamiento de una auditoría, usted (o un administrador) puede especificar una ubicación para el registro de auditoría. Hay tres opciones: valor predeterminado, aplicación y seguridad. Al especificar Predeterminado, el registro real depende de qué sistema esté usando y de si el sistema permite escribir en el registro de seguridad. Para obtener más información, consulte la sección "Sistema operativo" que encontrará más adelante en este tema.

Para escribir en el registro de seguridad es necesario el SeAuditPrivilege. De forma predeterminada, solo las cuentas de Sistema local y Servicio de red tienen este privilegio. Para administrar las funciones del registro de seguridad read y delete es necesario SeSecurityPrivilege. De forma predeterminada, solo los administradores tienen este privilegio.

En cambio, los usuarios autenticados pueden leer y escribir en el registro de aplicaciones. En Windows XP, los eventos de auditoría se escriben en el registro de aplicaciones de forma predeterminada. El registro también puede contener datos personales que son visibles para todos los usuarios autenticados.

Suprimir los errores de la auditoría

Otra opción durante la auditoría es la de suprimir los errores de la auditoría. De forma predeterminada, un error de la auditoría no afecta a una aplicación. Si fuese necesario, sin embargo, puede establecer la opción en false, que hace que se produzca una excepción.

Programación de auditoría

Puede especificar el comportamiento de la auditoría mediante configuración o programación.

Clases de auditorías

La tabla siguiente describe las clases y propiedades utilizadas para programar el comportamiento de la auditoría.

Clase Descripción
ServiceSecurityAuditBehavior Habilita opciones de configuración para la auditoría como un comportamiento de servicio.
AuditLogLocation Enumeración para especificar en qué registro escribir. Los valores posibles son Predeterminado, Aplicación y Seguridad. Si se selecciona Predeterminado, el sistema operativo determina la ubicación del registro real. Vea la sección "Elección de registro de eventos de seguridad o aplicación" más adelante en este tema.
MessageAuthenticationAuditLevel Especifica qué tipos de eventos de autenticación de mensajes se auditan en el nivel de mensaje. Las opciones son None, Failure, Success y SuccessOrFailure.
ServiceAuthorizationAuditLevel Especifica qué tipos de eventos de autorización de servicio se auditan en el nivel de servicio. Las opciones son None, Failure, Success y SuccessOrFailure.
SuppressAuditFailure Especifica lo que pasa a la solicitud de cliente cuando se produce un error al auditar. Por ejemplo, cuando el servicio intenta escribir en el registro de seguridad, pero no tiene SeAuditPrivilege. El valor predeterminado de true indica que se pasan por alto los errores, y se procesa la solicitud de cliente como de costumbre.

Para obtener un ejemplo del proceso de configuración de una aplicación de forma que se puedan registrar los eventos de auditoría, consulte Cómo auditar los eventos de seguridad.

Configuración

También puede usar la configuración para especificar el comportamiento de auditoría mediante la adición de un elemento <serviceSecurityAudit> en el esquema <behaviors>. Este elemento debe agregarse dentro de un elemento <behavior>, tal y como se muestra en el código siguiente.

<configuration>  
  <system.serviceModel>  
    <behaviors>  
      <behavior>  
        <!-- auditLogLocation="Application" or "Security" -->  
        <serviceSecurityAudit  
                  auditLogLocation="Application"  
                  suppressAuditFailure="true"  
                  serviceAuthorizationAuditLevel="Failure"  
                  messageAuthenticationAuditLevel="SuccessOrFailure" />
      </behavior>  
    </behaviors>  
  </system.serviceModel>  
</configuration>  

Si auditar está habilitado y no se especifica una auditLogLocation, el nombre del registro predeterminado es "Seguridad", para que la plataforma admita la escritura en el registro de seguridad; de lo contrario, el nombre será "Aplicación". Los sistemas operativos Windows Server 2003 y Windows Vista son los únicos donde se admite la escritura en el registro de seguridad. Para obtener más información, consulte la sección "Sistema operativo" que encontrará más adelante en este tema.

Consideraciones sobre la seguridad

Si un usuario malintencionado sabe que la auditoría está habilitada, el atacante puede enviar mensajes no válidos y de este modo hacer que se escriban entradas de auditoría. Si el registro de auditoría se rellena de esta manera, el sistema de auditoría falla. Para mitigar esto, establezca la propiedad SuppressAuditFailure en true y use las propiedades del Visor de eventos para controlar el comportamiento de la auditoría.

Los eventos de auditoría que se escriben en el registro de aplicaciones del sistema operativo Windows XP son visibles para cualquier usuario que se autentique.

Elegir entre registros de eventos de seguridad o aplicación

Las siguientes tablas proporcionan información para ayudarle a decidir si registrar en el registro de eventos de aplicación o de seguridad.

Sistema operativo

Sistema Registro de aplicaciones Registro de seguridad
Windows XP SP2 o versiones posteriores Compatible No compatible
Windows Server 2003 SP1 y Windows Vista Compatible El contexto del subproceso debe poseer SeAuditPrivilege

Otros factores

Además del sistema operativo, la tabla siguiente describe otros valores que controlan la habilitación de los registros.

Factor Registro de aplicaciones Registro de seguridad
Administración de la directiva de auditoría No aplicable. La directiva de la autoridad de seguridad local (LSA) controla el registro de Seguridad, además de la configuración. También se ha de habilitar la categoría “Acceso a objetos de auditoría”.
Experiencia de usuario predeterminada Todos los usuarios autenticados pueden escribir en el registro de aplicaciones, por lo que no es necesario ningún paso de permiso adicional para los procesos de aplicación. El proceso de aplicación (contexto) debe tener SeAuditPrivilege.

Consulte también