Configuración de SA: Definir una plantilla para notificaciones de alertas de ESA

Document created by RSA Information Design and Development on Feb 9, 2017
Version 1Show Document
  • View in full screen mode
  

En este tema se describe cómo definir una plantilla para las notificaciones de alerta. Event Stream Analysis (ESA) permite definir plantillas útiles para las alertas. Necesita entender bien FreeMarker y el modelo de datos de ESA para definir una plantilla. Para obtener más información sobre FreeMarker, consulte Guía del autor de la plantilla de FreeMarker

Modelo de datos de ESA

Considere una regla de alerta de ESA como se muestra a continuación:

@Name('module_144d43f5_f0b4_4cd0_8c6c_5ce65c37e624_Alert')
@Description('Brute Force Login To Same Destination')
@RSAAlert(oneInSeconds=0, identifiers={"ip_dst"})
SELECT * FROM Event (ec_activity = 'Logon',ec_theme = 'Authentication',ec
outcome =
'Failure',ip_dst IS NOT NULL)

.std:groupwin(ip_dst)
.win:time_length_batch(60 seconds, 2)
GROUP BY ip_dst HAVING COUNT(*) = 2;

Cuando se activa una regla como la de arriba, la alerta generada tendrá dos eventos constitutivos, donde cada uno se asemeja a una sesión de NextGen con múltiples valores de metadatos. El objeto de datos de alerta transmitido al evaluador de la plantilla de FreeMarker será como el siguiente:

 

(root)   |   +- id = "4e67012f-9c53-4f0b-ac44-753e2c982b79"        // Unique identifier for each alert   |   +- severity = 1                    // The severity of the alert   +- time = 2013-12-31T11:02Z              // The alert time (needs a ?datetime for proper rendering)   |  +- moduleType = "ootb"                // The module type   |   +- moduleName = "Brute Force Login To Same Destination"      // A description of the module   |   +- statement = "module_144d43f5_f0b4_4cd0_8c6c_5ce65c37e624_Alert" // The name of the EPL statement   |  +- events                   // The constituent events - as a sequence of event maps    | +- [0]                  // offset 0 (i.e. the first constituent event)    |   |   |   |    |   +- event_cat_name = "User.Activity.Failed Logins"    |   +- device_class = "Firewall"            // event meta (accessible as ${events[0].device_class}$)    |   |   |   +- event_source_id = "uttam:50002:1703395"  // Investigation URI to the individual session (used by SA)    |   |    |   +- ...                  // Other meta    |   |    |   +- sessionid = 1703395              // NextGen sessionid    |   |    |   +- time = 1388487764              // event/session time at NextGen source (as a long Unix timestamp)    |   |    |   +- user_dst = "user5"    |    +- [1]                    // offset 1 (i.e. the second consituent event)      |      +- device_class = "Firewall"      |      +- event_cat_name = "User.Activity.Failed Logins"      |      +- event_source_id = "uttam:50002:1703405"      |      +- ...                       |      +- sessionid = 1703405      |      +- time = 1388487766      |      +- user_dst = "user5"

Hay dos tipos de variables de plantillas disponibles en el modelo de datos:

  • Metadatos de alerta: Contienen detalles a nivel de alerta como nombre de la declaración, nombre del módulo, id de la alerta, hora de la alerta, gravedad y otros. En la terminología FreeMarker, estas son variables de nivel superior asociadas con la instancia de alerta y se pueden consultar simplemente por sus nombres, por ejemplo ${moduleName}. Los metadatos de time son especiales porque son del tipo Date y deben tener ?datetime como sufijo para representarse adecuadamente.
  • Metadatos de eventos constitutivos: incluyen los campos de metadatos de sesión de eventos individuales que constituyen la alerta. Una alerta puede tener múltiples eventos constitutivos por lo que puede haber más de uno de esos mapas en la misma alerta. Estos se muestran como una secuencia de hashes para el evaluador de la plantilla de FreeMarker y s debe hacer referencia a ellos. Por ejemplo, la alerta tiene dos eventos constitutivos, el event_source_id correspondiente al primero está disponible como ${events[0].event_source_id} y se puede acceder al mismo, correspondiente al segundo como ${events[1].event_source_id}. También debe tener en cuenta qué campos de metadatos tienen varios valores, porque es necesario tratarlos como secuencias, por ejemplo, ${events[0].alias_host} no funcionará porque es una secuencia.

Nota: Los metadatos disponibles en los eventos constitutivos para una alerta dada los determina la cláusula EPL SELECT. Por ejemplo, las alertas de SELECT sessionid, time FROM ... tendrán solo dos valores de metadatos disponibles (sessionid, time). Los eventos constitutivos en SELECT * FROM Event ... incluirán todos los campos de metadatos del tipo Event con valores no nulos.

Si la plantilla usa claves de metadatos que no están presentes en todas las salidas de alertas, debe considerar el uso de las disposiciones de FreeMarker para los valores predeterminados.

Por ejemplo, si una plantilla con texto Id=${id},ec_outcome=${ec_outcomese evalúa para una alerta que no incluye la clave de metadatos ec_outcome, se produce un error en la evaluación de la plantilla. En esos casos, puede usar el marcador de posición del valor omitido ${ec_outcome!”default”}.

You are here
Table of Contents > Procedimientos estándar > Configurar plantillas para notificaciones > Definir una plantilla para notificaciones de alertas de ESA

Attachments

    Outcomes