ElasticsearchV7

Versión de integración: 17.0

Configurar ElasticsearchV7 para que funcione con Google Security Operations

Cómo crear un token de API

Para crear un token de API, envía la siguiente solicitud:

curl --location --request POST 'http://<server address>:<port>/_security/api_key' \
--header 'Authorization: Basic Base64(username, password)' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "siemplify-integration",
    "role_descriptors": {}
}':

Ejemplo de respuesta:

{
  "id": "G1NIWnI",
  "name": "siemplify-integration",
  "api_key": "dSwyjWJ_Ql"
}
  1. Tomamos los parámetros "id" y "api_key" de la respuesta.
  2. Usa la codificación base64 de "id" y "api_key" unidas por dos puntos, como "id:api_key".
  3. El resultado se usa como token de API en la integración.

Acceder a Elasticsearch

Google SecOps accede a Elasticsearch a través de la API RESTful en el puerto TCP 9200 de forma predeterminada. El servidor de Google SecOps necesitará acceso a los nodos de Elasticsearch pertinentes en el puerto TCP 9200 (predeterminado) o en un puerto alternativo si no se ha usado el puerto predeterminado durante la implementación de Elasticsearch.

Configurar la integración de ElasticsearchV7 en Google SecOps

Para obtener instrucciones detalladas sobre cómo configurar una integración en Google SecOps, consulta Configurar integraciones.

Configurar la integración de Elasticsearch con un certificado de AC

Si es necesario, puedes verificar tu conexión con un archivo de certificado de AC.

Antes de empezar, asegúrate de que tienes lo siguiente:

  • El archivo de certificado de la AC
  • La versión más reciente de la integración de Elasticsearch

Para configurar la integración con un certificado de CA, sigue estos pasos:

  1. Analiza el archivo de certificado de la AC en una cadena Base64.
  2. Abre la página de parámetros de configuración de la integración.
  3. Inserta la cadena en el campo CA Certificate File (Archivo de certificado de AC).
  4. Para comprobar que la integración se ha configurado correctamente, selecciona la casilla Verificar SSL y haz clic en Probar.

Parámetros de integración

Usa los siguientes parámetros para configurar la integración:

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Nombre de la instancia Cadena N/A No Nombre de la instancia para la que quiere configurar la integración.
Descripción Cadena N/A No Descripción de la instancia.
Dirección del servidor Cadena x.x.x.x Dirección IP del servidor Elasticsearch 7.0.0.
Nombre de usuario Cadena N/A La dirección de correo del usuario que se debe usar para conectarse a Elasticsearch 7.0.0.
Contraseña Contraseña N/A La contraseña del usuario correspondiente.
Token de API Contraseña N/A No Token de API de X-Pack de Elasticsearch.
Autenticar Casilla Desmarcada No N/A
Verificar SSL Casilla Desmarcada No Marca esta casilla si tu conexión de Elasticsearch 7.0.0 requiere una verificación SSL (está desmarcada de forma predeterminada).
Archivo de certificado de AC Cadena N/A No Archivo de certificado de AC.
Ejecutar de forma remota Casilla Desmarcada No Marca el campo para ejecutar la integración configurada de forma remota. Una vez marcada, aparece la opción para seleccionar al usuario remoto (agente).

Acciones

Descripción

Una prueba de Elasticsearch predefinida que devuelve un diccionario de palabras.

Parámetros

Parámetros Tipo Valor predeterminado Descripción
Índice Cadena *

Patrón de búsqueda de un índice de Elasticsearch.

En Elastic, un índice es como un nombre de base de datos y los datos se almacenan en varios índices.Este parámetro define en qué índice(s) se debe buscar. Puede ser un nombre exacto, como "smp_playbooks-2019.06.13", o puede usar un comodín para buscar por patrón, como "smp_playbooks-2019.06 " o "smp".

Para obtener más información sobre los índices de Elasticsearch, visita https://www.elastic.co/blog/what-is-an-elasticsearch-index.

Consulta Cadena *

Consulta de búsqueda que se va a realizar. Tiene la sintaxis de Lucene.

IE1: "*" (este es un comodín que devolverá todos los registros)

IE2: "level:error"

IE3: "level:information"

IE4: "level:error OR level:warning"

Para obtener más información sobre la sintaxis de Lucene, visita https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax.

Límite Cadena 100

Limita el número de documentos devueltos; por ejemplo, 10.

0 = Sin límite.

Campo de visualización Cadena *

Limita los campos devueltos. El valor predeterminado "*" devuelve todos los campos.

Puedes indicar un solo campo, por ejemplo, "level".

Campo de búsqueda Cadena _all

Campo de búsqueda para consultas de texto libre (cuando la consulta no especifica un nombre de campo).

El valor predeterminado es "_all", lo que significa que se buscará en todos los campos. Lo mejor es usar la sintaxis de Lucene adecuada en los campos "_all" o hacer una búsqueda de texto en un campo específico.

Ie1: Search Field = "_all". Consulta = "level:error". La consulta devolverá todos los registros en los que el campo "level" sea igual a "error".

Ie2: Search Field = "Message", query = "Login Alarm". La consulta devolverá todos los registros cuyo campo "Message" contenga el texto "Login Alarm".

Campo de marca de tiempo Cadena @timestamp Nombre del campo con el que se va a filtrar por tiempo. El valor predeterminado es @timestamp. Si los campos Fecha más antigua y Fecha más reciente están vacíos, no se aplicará ningún filtro basado en el tiempo.
Fecha más antigua Cadena now-1d

Fecha de inicio de la búsqueda. La búsqueda solo devolverá los registros que sean iguales o posteriores a este momento.

La entrada puede estar en UTC exacto:

Formato: AAAA-MM-DDTHH:MM:SSZ

Por ejemplo: 2019-06-04T10:00:00Z

La entrada también puede ser relativa (con operaciones matemáticas con fechas): tie: "now", "now-1d", "now-1d/d", "now-2h/h".

Para obtener más información sobre las operaciones matemáticas con fechas, visita https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math.

Fecha más próxima Cadena ahora

Fecha de finalización de la búsqueda. La búsqueda solo devolverá registros iguales o anteriores a este momento.

La entrada puede estar en UTC exacto:

Formato: AAAA-MM-DDTHH:MM:SSZ

Por ejemplo: 2019-06-04T10:00:00Z

La entrada también puede tener un formato relativo (con operaciones matemáticas de fechas):

Por ejemplo: "now", "now-1d", "now-1d/d" o "now-2h/h"

Para obtener más información sobre las operaciones matemáticas con fechas, visita https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math.

Fecha de ejecución

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
resultados N/A N/A

Descripción

Busca en todo el contenido de Elasticsearch y devuelve los resultados en formato de diccionario. Esta acción solo admite consultas sin periodo. Si quieres usar un periodo en tu consulta, usa la acción Búsqueda avanzada de ES.

Parámetros

Parámetros Tipo Valor predeterminado Descripción
Índice Cadena *

Patrón de búsqueda de un índice de Elasticsearch.

En Elasticsearch, un índice es como un nombre de base de datos y los datos se almacenan en varios índices.

Este parámetro define en qué índice(s) se va a buscar. Puede ser un nombre exacto, como \"smp_playbooks-2019.06.13\", o puedes usar un comodín () para buscar por patrón, como \"smp_playbooks-2019.06\" o \"smp*\".

Para obtener más información sobre los índices de Elasticsearch, visita https://www.elastic.co/blog/what-is-an-elasticsearch-index.

Consulta Cadena *

Consulta de búsqueda que se va a realizar. Tiene la sintaxis de Lucene.

IE1: \"*\" (este es un comodín que devolverá todos los registros)

IE2: \"level:error\"

IE3: \"level:information\"

IE4: \"level:error OR level:warning\"

Para obtener más información sobre la sintaxis de Lucene, visita https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax.

Límite Cadena 100

Limita el número de documentos devueltos; por ejemplo, 10.

0 = Sin límite

Fecha de ejecución

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
resultados N/A N/A
Resultado de JSON
[
    {
        "_score": 0.2876821,
        "_type": "person",
        "_id": "2",
        "_source": {
            "lastname": "Smith",
            "name": "John",
            "job_description": "Systems administrator"
        },
        "_index": "accounts"
    }, {
        "_score": 0.28582606,
        "_type": "person",
        "_id": "1",
        "_source":
        {
            "lastname": "Doe",
            "name": "John",
            "job_description": "Systems administrator and Linux specialist"
        },
        "_index": "accounts"
    }
]

Ping

Descripción

Prueba que verifica la conectividad con el servidor Elasticsearch.

Parámetros

N/A

Fecha de ejecución

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
is_success Verdadero/Falso is_success:False

Descripción

Action busca en todo el contenido de Elasticsearch y devuelve los resultados en formato de diccionario.

Parámetros

Parámetros Tipo Valor predeterminado Descripción
Índice Cadena *

Patrón de búsqueda de un índice de Elasticsearch.

En Elasticsearch, un índice es como un nombre de base de datos y los datos se almacenan en varios índices.

Este parámetro define en qué índice(s) se va a buscar. Puede ser un nombre exacto, como \"smp_playbooks-2019.06.13\", o puedes usar un comodín () para buscar por patrón, como \"smp_playbooks-2019.06\" o \"smp*\".

Para obtener más información sobre los índices de Elasticsearch, visita https://www.elastic.co/blog/what-is-an-elasticsearch-index.

Consulta Cadena *

Consulta de búsqueda que se va a realizar. Tiene la sintaxis de Lucene.

IE1: \"*\" (este es un comodín que devolverá todos los registros)

IE2: \"level:error\"

IE3: \"level:information\"

IE4: \"level:error OR level:warning\"

Para obtener más información sobre la sintaxis de Lucene, visita https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax.

Límite Cadena 100

Limita el número de documentos devueltos; por ejemplo, 10.

0 = Sin límite.

Fecha de ejecución

Esta acción se ejecuta en todas las entidades.

Resultados de la acción

Resultado de secuencia de comandos
Nombre del resultado de la secuencia de comandos Opciones de valor Ejemplo
resultados N/A N/A
Resultado de JSON
[{
    "_score": 0.2876821,
    "_type": "person",
    "_id": "2",
    "_source":
        {
          "lastname": "Smith",
          "name": "John",
          "job_description": "Systems administrator"
         },
     "_index": "accounts"
 },
 {
     "_score": 0.28582606,
     "_type": "person",
     "_id": "1",
     "_source":
       {
         "lastname": "Doe",
         "name": "John",
         "job_description": "Systems administrator and Linux specialist"
       },
    "_index": "accounts"
  }
 ]

Conectores

Configurar conectores de Elasticsearch v7 en Google SecOps

Para obtener instrucciones detalladas sobre cómo configurar un conector en Google SecOps, consulta el artículo Configurar el conector.

Para configurar el conector seleccionado, usa los parámetros específicos del conector que se indican en las siguientes tablas:

Conector de Elasticsearch

Descripción

En este tema se muestra cómo integra Google SecOps Elasticsearch con el mecanismo y la configuración para la ingestión y el procesamiento.

Reenvío de alertas de Elasticsearch a Google SecOps

Google SecOps buscará en los índices de Elasticsearch especificados con una consulta proporcionada (mediante la sintaxis de consulta de Lucene) y devolverá documentos de Elasticsearch que se traducirán y contextualizarán como "alertas" para los casos.

Parámetros del conector

Utiliza los siguientes parámetros para configurar el conector:

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Entorno predeterminado Cadena N/A No Seleccione el entorno que quiera. Por ejemplo, "Cliente uno".
Ejecutar cada Entero 0:0:0:10 No Selecciona el tiempo que quieres que dure la conexión. Por ejemplo, "todos los días".
Nombre del campo de producto Cadena device_product Nombre del campo que se usa para determinar el producto del dispositivo. Ejemplo: _type.
Nombre del campo de evento Cadena name Nombre del campo que se usa para determinar el nombre del evento (subtipo). Por ejemplo, _source_match_event_id.
Tiempo de espera de secuencia de comandos (segundos) Cadena 60 El límite de tiempo de espera (en segundos) del proceso de Python que ejecuta la secuencia de comandos actual.
Dirección del servidor Cadena N/A La dirección del servidor Elasticsearch, es decir, http://{ip_address}:{port}
Nombre de usuario Cadena N/A Nombre de usuario de Elasticsearch.
Contraseña Contraseña N/A Contraseña de Elasticsearch.
Autenticar Casilla Desmarcada No Indica si se debe autenticar la conexión o no.
Token de API Contraseña N/A No Token de API de X-Pack de Elasticsearch.
Verificar SSL Casilla Desmarcada No Indica si se debe usar SSL en la conexión.
Campo Nombre de alerta Cadena N/A Nombre del campo en el que se encuentra el nombre de la alerta (ruta de campo plana). Ejemplo: _source_alert_info_alert
Campo de marca de tiempo Cadena N/A Nombre del campo en el que se encuentra la marca de tiempo (ruta de campo plana). Ejemplo: source@timestamp
Campo de entorno Cadena N/A No Nombre del campo en el que se encuentra el entorno (ruta de campo plana). Ejemplo: _source_environment
Índices Cadena N/A No Patrón de índice por el que se va a buscar. Ejemplo: "*"
Consulta Cadena N/A No Consulta de patrón de búsqueda (sintaxis de consulta de Lucene). Ejemplo: "*"
Límite de recuento de alertas Entero 20 Número máximo de alertas que se pueden extraer en un ciclo. Ejemplo: 20.
Máximo de días hacia atrás Entero 1 Número máximo de días desde los que se deben obtener las alertas. Ejemplo: 3.
Asignación de campos de gravedad Cadena N/A No Nombre del campo en el que se almacena el valor de gravedad.
Dirección del servidor proxy Cadena N/A No Dirección del servidor proxy que se va a usar.
Nombre de usuario del proxy Cadena N/A No Nombre de usuario del proxy para autenticarse.
Contraseña del proxy Contraseña N/A No La contraseña del proxy para autenticarte.
Nombre del campo de gravedad Cadena N/A No Si quiere asignar la gravedad en función del valor de la cadena, deberá crear un archivo de asignación. Para obtener más información, consulta el portal de documentación.
Patrón de regex de entorno Cadena .* No

Una expresión regular que se aplicará al valor encontrado en el campo "Nombre del campo de entorno".

El valor predeterminado es ".*" para captar todos los valores y devolverlos sin cambios.

Se usa para permitir que el usuario manipule el campo de entorno mediante lógica de expresiones regulares.

Si el patrón de expresión regular es nulo o está vacío, o si el valor del entorno es nulo, el resultado final del entorno será "".

Cómo asignar la gravedad en el conector

Para asignar la gravedad, debe especificar qué campo se debe usar para obtener el valor de la gravedad en el parámetro "Nombre del campo de gravedad". En la respuesta, puedes obtener tres tipos de valores: números enteros, números con decimales y cadenas. En el caso de los números enteros y los números con decimales, no es necesario que hagas ninguna configuración adicional. El conector leerá esos valores y los asignará según los estándares de Google SecOps. Te recordamos cómo se asignan los valores enteros:

  • 100 - Crítico
  • 100 > x >= 80 Alto
  • 80 > x >=60 Medio
  • 60 > x >=40 Bajo
  • 40 > x Informativas

Si en la respuesta trabajamos con cadenas, se requiere una configuración adicional. En la carpeta donde se encuentran las secuencias de comandos del conector, habrá un archivo de configuración llamado severity_map_config.json. Este archivo define las reglas de asignación de la gravedad.

Inicialmente, el archivo tendrá este aspecto:

{
    "Default": 50
}

Imagina una situación en la que los valores necesarios se encuentran en el event.severity. event.severity puede contener los siguientes valores: "Malicious", "Benign" y "Unknown".

En primer lugar, debemos especificar en el parámetro "Severity Field Name" (Nombre del campo de gravedad) que vamos a usar event.severity.

En segundo lugar, tenemos que actualizar el archivo de configuración.

Después de los cambios, el archivo severity_map_config.json debería tener este aspecto:

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

Ahora, cuando el conector reciba un evento con event.severity = "Malicious", le asignará la gravedad Crítica.

Reglas de conectores

Lista blanca o negra

El conector no admite listas blancas ni negras.

Compatibilidad con proxies

El conector admite proxies.

Conector de DSL de Elasticsearch

Descripción

El conector funciona haciendo una llamada a la API REST con una consulta de DSL.

Casos prácticos y ejemplos

Posibilidad de usar consultas DSL como parámetro de búsqueda en Elasticsearch.

Parámetros del conector

Utiliza los siguientes parámetros para configurar el conector:

Nombre visible del parámetro Tipo Valor predeterminado Es obligatorio Descripción
Entorno predeterminado Cadena N/A No Seleccione el entorno que quiera. Por ejemplo, "Cliente uno".
Ejecutar cada Entero 0:0:0:10 No Selecciona el tiempo que quieres que dure la conexión. Por ejemplo, "todos los días".
Nombre del campo de producto Cadena device_product Describe el nombre del campo en el que se almacena el nombre del producto.
Nombre del campo de entorno Cadena "" No

Describe el nombre del campo en el que se almacena el nombre del entorno.

Si no se encuentra el campo de entorno, el entorno será "".

Patrón de regex de entorno Cadena .* No

Una expresión regular que se aplicará al valor encontrado en el campo "Nombre del campo de entorno".

El valor predeterminado es ".*" para captar todos los valores y devolverlos sin cambios.

Se usa para permitir que el usuario manipule el campo de entorno mediante lógica de expresiones regulares.

Si el patrón de expresión regular es nulo o está vacío, o si el valor del entorno es nulo, el resultado final del entorno será "".

Tiempo de espera de secuencia de comandos (segundos) Entero 60 Límite de tiempo de espera del proceso de Python que ejecuta la secuencia de comandos actual.
Dirección del servidor Cadena N/A Dirección IP del servidor de la API de Elasticsearch.
Puerto Cadena N/A Puerto del servidor de la API de Elasticsearch.
Consulta Cadena N/A

Consulta DSL que se usa para la búsqueda.

Se necesita un formato JSON válido.

Para que el conector sea más estable, se recomienda añadir una clave de marca de tiempo de ordenación en orden ascendente.

Índice Cadena N/A

Índice que se usa para una búsqueda.

Por ejemplo: _all

Campo de marca de tiempo Cadena N/A

Nombre del campo en el que se encuentra la marca de tiempo.
Ejemplo:

source@timestamp

Nombre del campo de alerta Cadena N/A

Nombre del campo en el que se encuentra el nombre de la alerta.
Ejemplo:

_source_info_alertname

Campo de descripción Cadena N/A No

Nombre del campo en el que se encuentra la descripción.
Ejemplo:

_source_alert_info_description

Gravedad Cadena Medio

Gravedad de las alertas.
Valor posible:

Información

Bajo

Medio

Alta

Crítica

Límite de recuento de alertas Entero 100 No Limita el número de alertas devueltas por el conector por iteración.
Autenticar Casilla Desmarcada No Indica si se debe autenticar en una conexión o no.
Nombre de usuario Cadena N/A No Nombre de usuario de la cuenta de Elasticsearch.
Contraseña Contraseña N/A No Contraseña de la cuenta de Elasticsearch.
Use SSL (Usar SSL) Casilla Desmarcada No Opción para habilitar la conexión SSL/TLS.
Nombre del campo de gravedad Cadena N/A No Si quiere asignar la gravedad en función del valor de la cadena, deberá crear un archivo de asignación. Para obtener más información, consulta el portal de documentación.
Gravedad de la alerta Cadena N/A No

La gravedad de las alertas.

Valores posibles: Info, Low, Medium, High y Critical.

Nota: Este parámetro tiene prioridad sobre "Severity Field Name". Si quiere trabajar con "Nombre del campo de gravedad", este campo debe dejarse vacío.

Dirección del servidor proxy Cadena N/A No Dirección del servidor proxy que se va a usar.
Nombre de usuario del proxy Cadena N/A No Nombre de usuario del proxy para autenticarse.
Contraseña del proxy Contraseña N/A No La contraseña del proxy para autenticarte.

Notaciones admitidas

El conector admite tres notaciones. Por ejemplo, si quiere usar event.type en el parámetro "Nombre del campo de evento". En ese caso, puede proporcionar _source_event_type, event_type o event.type. Todos estos valores se comportarán de la misma forma.

Parámetros:

  • Nombre del campo de producto
  • Nombre del campo de evento
  • Nombre del campo de gravedad
  • Campo de entorno
  • Campo de marca de tiempo
  • Campo Nombre de alerta
  • Campo de descripción de la alerta: solo para conectores DSL

Cómo asignar la gravedad en el conector

Para asignar la gravedad, debe especificar qué campo se debe usar para obtener el valor de la gravedad en el parámetro "Nombre del campo de gravedad". En la respuesta, puedes obtener tres tipos de valores: números enteros, números con decimales y cadenas. En el caso de los números enteros y los números con decimales, no es necesario que hagas ninguna configuración adicional. El conector leerá esos valores y los asignará según los estándares de Google SecOps. Te recordamos cómo se asignan los valores enteros:

  • 100 - Crítico
  • 100 > x >= 80 Alto
  • 80 > x >=60 Medio
  • 60 > x >=40 Bajo
  • 40 > x Informativas

Si en la respuesta trabajamos con cadenas, se requiere una configuración adicional. En la carpeta donde se encuentran las secuencias de comandos del conector, habrá un archivo de configuración llamado severity_map_config.json. Este archivo define las reglas de asignación de la gravedad.

Inicialmente, el archivo tendrá este aspecto:

{
    "Default": 50
}

Imagina una situación en la que los valores necesarios se encuentran en el event.severity. event.severity puede contener los siguientes valores: "Malicious", "Benign" y "Unknown".

En primer lugar, debemos especificar en el parámetro "Severity Field Name" (Nombre del campo de gravedad) que vamos a usar event.severity.

En segundo lugar, tenemos que actualizar el archivo de configuración.

Después de los cambios, el archivo severity_map_config.json debería tener este aspecto:

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

Ahora, cuando el conector reciba un evento con event.severity = "Malicious", le asignará la gravedad Crítica.

Reglas de conectores

Lista blanca o negra

El conector no admite listas blancas ni negras.

Compatibilidad con proxies

El conector admite proxies.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.