Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Registrar Eventos Web

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en ASP.NET al registrar eventos web de forma estándar. La trazabilidad juega un papel importante en las aplicaciones ya que permite prevenir y corregir eventos de seguridad.

Necesidad

Se requiere que una aplicación ASP.NET registre los eventos web de forma estandar.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. La aplicación esta contruida en ASP.NET version 1.1, 2.0, superior.

  2. Se utiliza la versión del .NET Framework 1.0,1.1 o superior.

Solución

Health Monitoring es una herramienta que permite realizar una auditoría a las aplicaciones web hechas en ASP.NET. Health Monitoring soporta un conjunto de eventos estándares que se pueden usar para supervisar el estado de la aplicación, desde eventos que están relacionados con seguridad (errores de inicio de sesión utilizando para la autenticación del usuario ASP.NET membership system), hasta eventos de infraestructura como fallos de acceso a disco que tiene la aplicación, entre otros [1]. Para configurar Health Monitoring se debe hacer los siguiente [2]:

  1. Por defecto, Health Monitoring esta activado para todas las aplicaciones ASP.NET. El elemento healthMonitoring contiene los siguientes sub-elementos:

    web.config
    1
    2
    3
    4
    5
    6
    7
    <healthMonitoring heartbeatInterval="0" enabled="true">
     <bufferModes/>
     <providers/>
     <profiles/>
     <rules/>
     <eventMappings/>
    </healthMonitoring>
    
  2. Para configurar Health Monitoring se debe configurar cada uno de los sub-elementos anteriores.

    En el archivo Web.config de la aplicación, configurar los eventos que se requieren para realizar una auditoría adecuada de la aplicación mediante el elemento eventMappings (especificando el nombre del evento y la clase que lo implementa) [3].

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    <eventMappings>
     <add
       name="Failure Audits"
       type="System.Web.Management.WebFailureAuditEvent"
       startEventCode="0"
       endEventCode="2147483647"
       <!-- additional attributes here -->
     />
     <!-- additional <add> elements here -->
    </eventMappings>
    

    El elemento add contiene los siguientes atributos:

    • Name: Es el nombre del evento usado como referencia en la parte de reglas que posteriormente se verá.

    • Type: Es el tipo de evento al cual se hace referencia. (en la declaración anterior se hace referencia al evento WebFailureAuditEvent que proporciona información sobre los errores de seguridad).

  3. Configurar el proveedor que desea utilizar como receptor de eventos, usando el elemento providers. Los proveedores se escriben para registrar los datos de eventos Web de una manera determinada. Por ejemplo, un proveedor podría escribir en el registro de eventos de Windows, mientras que otro podría enviar un mensaje de correo electrónico. Para registrar los eventos en el registro de eventos de Windows se debe hacer lo siguiente:

    1
    2
    3
    4
    5
    6
    7
    8
    <providers>
     <add
      name="EventLogProvider"
      type="System.Web.Management.EventLogWebEventProvider"
      <!-- additional attributes here for some providers -->
     />
     <!-- additional <add> elements here -->
    </providers>
    

    El elemento contiene los siguientes atributos:

    • Name: Es el nombre del proveedor, usado como referencia en la parte de reglas que posteriormente se verá.

    • Type: Esta es una referencia de ensamblado (fully-qualified) para la clase de proveedor. Para este caso se hizo referencia a la clase EventLogWebEventProvider para registrar el evento en los registros de sucesos de Windows.

  4. Establecer el perfil para configurar la forma con que se debe registrar el evento, indicando el número mínimo de ocurrencias para que el evento se registre, el máximo número de instancias a registrar del evento y el intervalo mínimo para registrar dos eventos similares. Para esto se debe usar el elemento profiles y configurar los atributos minInstances, maxLimity y minInterval del sub-elemento add de la siguiente manera:

    1
    2
    3
    4
    <profiles>
      <add name="Critical" minInstances="1" maxLimit="Infinite" minInterval="00:01:00"
           custom="" />
    </profiles>
    
  5. Suscribir los proveedores a los eventos declarados en el elemento rules. Los proveedores de eventos se pueden suscribir a más de un evento Web, y a los eventos Web se puede suscribir más de un proveedor de eventos de la siguiente manera:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    <rules>
      <add
        name="Failure Audits Default"
        eventName="Failure Audits"
        provider="EventLogProvider"
        profile="Critical"
        <!-- additional attributes here -->
      />
    </rules>
    
  6. Finalmente la estructura de la configuración del Health Monitoring en el archivo Web.config de la aplicación debe quedar de la siguiente manera:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <healthMonitoring heartbeatInterval="0" enabled="true">
     <providers>
      <add
       name="EventLogProvider"
       type="System.Web.Management.EventLogWebEventProvider"
       <!-- additional attributes here for some providers -->
      />
      <!-- additional <add> elements here -->
     </providers>
     <profiles>
       <add name="Critical" minInstances="1" maxLimit="Infinite" minInterval="00:01:00"
       custom="" />
     </profiles>
     <rules>
      <add
       name="Failure Audits Default"
       eventName="Failure Audits"
       provider="EventLogProvider"
       profile="Critical"
       <!-- additional attributes here -->
      />
     </rules>
     <eventMappings>
      <add
       name="Failure Audits"
       type="System.Web.Management.WebFailureAuditEvent"
       <!-- additional attributes here -->
      />
      <!-- additional <add> elements here -->
     </eventMappings>
    </healthMonitoring>
    

Descargas

Puedes descargar el código fuente pulsando en el siguiente enlace:




Haz un comentario

Estado de los servicios - Términos de Uso