Recopila registros de AWS Elastic Load Balancing
En este documento, se explica cómo configurar un feed de Operaciones de seguridad de Google para recopilar registros de AWS Elastic Load Balancing. El analizador convierte los registros en formato UDM. Usa patrones de grok para extraer campos de mensajes con formato CEF y no CEF, asignarlos a campos de la UDM y controlar varias transformaciones de datos, incluida la lógica específica para HTTP, TLS y campos relacionados con la seguridad. También realiza un procesamiento condicional en función de la presencia o el formato de ciertos campos para garantizar una representación precisa de la UDM.
Antes de comenzar
- Asegúrate de tener una instancia de Google SecOps.
- Asegúrate de tener acceso con privilegios a AWS.
Configura AWS Elastic Load Balancing
- Habilita el registro de acceso para enviar los registros de acceso a un bucket de almacenamiento de S3.
- Crea un Amazon Simple Queue Service (SQS) y adjúntalo a un bucket de almacenamiento de S3.
Configura el bucket de Amazon S3
- Accede a la consola de AWS.
- Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Cómo crear un bucket
- Guarda el Nombre (por ejemplo,
elb-logs
) y la Región del bucket para usarlos más adelante. - Crea un usuario siguiendo esta guía: Cómo crear un usuario de IAM.
- Selecciona el Usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- Haz clic en Crear clave de acceso en la sección Claves de acceso.
- Selecciona Servicio de terceros como Caso de uso.
- Haz clic en Siguiente.
- Opcional: Agrega una etiqueta de descripción.
- Haz clic en Crear clave de acceso.
- Haz clic en Descargar archivo CSV para guardar la Clave de acceso y la Clave de acceso secreta para usarlas más tarde.
- Haz clic en Listo.
- Selecciona la pestaña Permisos.
- Haz clic en Agregar permisos en la sección Políticas de permisos.
- Selecciona Agregar permisos.
- Selecciona Adjuntar políticas directamente.
- Busca y selecciona la política AmazonS3FullAccess.
- Haz clic en Siguiente.
- Haz clic en Agregar permisos.
Configura AWS Elastic Load Balancer para habilitar los registros de acceso
- Accede a la consola de administración de AWS.
- Busca y selecciona EC2.
- Selecciona Balanceadores de cargas en el menú de navegación.
- Selecciona el balanceador de cargas para el que deseas habilitar el registro.
- En la pestaña Descripción, desplázate hasta Atributos.
- Haz clic en Editar atributos.
- Selecciona Habilitar para habilitar los registros de acceso.
- Selecciona el bucket de S3 que creaste antes (por ejemplo,
elb-logs
). - Opcional: Establece el prefijo de registro para facilitar la identificación de los registros (por ejemplo,
elb/access-logs/
). - Haz clic en Guardar.
Configura un feed en Google SecOps para transferir los registros de AWS Elastic Load Balancer
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Agregar nueva.
- En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Registros de AWS Elastic Load Balancer).
- Selecciona Amazon S3 como el Tipo de fuente.
- Selecciona AWS Elastic Load Balancer como el Tipo de registro.
- Haz clic en Siguiente.
Especifica valores para los siguientes parámetros de entrada:
- Región: Es la región en la que se encuentra el bucket de Amazon S3.
- URI de S3: Es el URI del bucket.
s3:/BUCKET_NAME
- Reemplaza
BUCKET_NAME
por el nombre real del bucket.
- Reemplaza
- URI is a: Selecciona el TIPO DE URI según la configuración de la transmisión de registros (Archivo único | Directorio | Directorio que incluye subdirectorios).
- Opciones de eliminación de fuentes: Selecciona la opción de eliminación según tus preferencias.
- ID de clave de acceso: Es la clave de acceso del usuario con acceso al bucket de S3.
- Clave de acceso secreta: Es la clave secreta del usuario con acceso al bucket de S3.
- Espacio de nombres de recursos: Es el espacio de nombres de recursos.
- Etiquetas de transferencia: Es la etiqueta que se aplicará a los eventos de este feed.
Haz clic en Siguiente.
Revisa la configuración de tu nuevo feed en la pantalla Finalizar y, luego, haz clic en Enviar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
actions_executed |
security_result.action |
Si actions_executed es "waf,forward" o "waf,redirect", configúralo como "ALLOW". Si actions_executed es "waf", configúralo como "BLOCK". |
chosen_cert_arn |
principal.user.attribute.labels |
Si chosen_cert_arn contiene "session", asigna su valor a security_result.description . De lo contrario, crea una etiqueta con la clave "ARN" y el valor chosen_cert_arn , y agrégala al array principal.user.attribute.labels . |
chosen_cert_arn |
security_result.description |
Si chosen_cert_arn contiene "session", asigna su valor a este campo. |
client_ip |
principal.asset.ip |
Se asignan directamente. |
client_ip |
principal.ip |
Se asignan directamente. |
client_port |
principal.port |
Se asignan directamente. |
classification |
security_result.rule_name |
Se asigna directamente si no está vacío o si es “-”. |
classification_reason |
security_result.summary |
Se asigna directamente si no está vacío o si es “-”. |
Customer (CEF) |
principal.user.user_display_name |
Se asigna directamente desde el campo CEF. |
data |
Varios | Se analiza con patrones de grok para extraer varios campos. Consulta otras filas para ver asignaciones específicas. |
data.act (CEF) |
security_result.action_details |
Se asigna directamente desde el campo CEF. |
data.app (CEF) |
principal.application |
Se asigna directamente desde el campo CEF. |
data.ccode (CEF) |
principal.location.country |
Se asigna directamente desde el campo CEF. |
data.cicode (CEF) |
principal.location.city |
Se asigna directamente desde el campo CEF. |
data.cn1 (CEF) |
network.http.response_code |
Se asigna directamente desde el campo CEF. |
data.cpt (CEF) |
principal.port |
Se asigna directamente desde el campo CEF. |
data.cs1Label (CEF) |
additional.fields |
Crea un par clave-valor con la clave "Cap Support" y el valor de cs1Label . |
data.cs2Label (CEF) |
additional.fields |
Crea un par clave-valor con la clave "Compatibilidad con JavaScript" y el valor de cs2Label . |
data.cs3Label (CEF) |
additional.fields |
Crea un par clave-valor con la clave "CO Support" y el valor de cs3Label . |
data.cs4Label (CEF) |
additional.fields |
Crea un par clave-valor con la clave "VID" y el valor de cs4Label . |
data.cs5Label (CEF) |
additional.fields |
Crea un par clave-valor con la clave "clappsig" y el valor de cs5Label . |
data.cs6Label (CEF) |
additional.fields |
Crea un par clave-valor con la clave "clapp" y el valor de cs6Label . |
data.cs7Label (CEF) |
additional.fields |
Crea un par clave-valor con la clave "latitude" y el valor de cs7Label . |
data.deviceExternalId (CEF) |
about.asset.asset_id |
Se usa como parte del ID del activo: Incapsula.SIEMintegration:deviceExternalId . |
data.deviceFacility (CEF) |
principal.location.region |
Se asigna directamente desde el campo CEF. |
data.dproc (CEF) |
target.process.command_line |
Se asigna directamente desde el campo CEF. |
data.dst_ip |
target.asset.ip |
Se asignan directamente. |
data.dst_ip |
target.ip |
Se asignan directamente. |
data.dst_port |
target.port |
Se asignan directamente. |
data.elb |
target.resource.id |
Se asignan directamente. |
data.fileId (CEF) |
security_result.detection_fields |
Crea un par clave-valor con la clave "fileId" y el valor de fileId . |
data.in (CEF) |
network.received_bytes |
Se asigna directamente desde el campo CEF. |
data.request (CEF) |
target.url |
Se asigna directamente desde el campo CEF. |
data.requestClientApplication (CEF) |
network.http.user_agent |
Se asigna directamente desde el campo CEF. |
data.requestMethod (CEF) |
network.http.method |
Se asigna directamente desde el campo CEF. |
data.severity (CEF) |
security_result.severity |
Se asigna a BAJO si la gravedad es 0. |
data.sip (CEF) |
principal.asset.ip |
Se asigna directamente desde el campo CEF. |
data.sip (CEF) |
principal.ip |
Se asigna directamente desde el campo CEF. |
data.siteid (CEF) |
security_result.detection_fields |
Crea un par clave-valor con la clave "siteid" y el valor de siteid . |
data.sourceServiceName (CEF) |
principal.application |
Se asigna directamente desde el campo CEF. |
data.spt (CEF) |
principal.port |
Se asigna directamente desde el campo CEF. |
data.src (CEF) |
principal.ip |
Se asigna directamente desde el campo CEF. |
data.suid (CEF) |
principal.user.userid |
Se asigna directamente desde el campo CEF. |
data.ver (CEF) |
network.tls.version |
La parte de la versión se extrae con grok y se asigna. |
data.ver (CEF) |
network.tls.cipher |
La parte del algoritmo de cifrado se extrae con grok y se asigna. |
data.xff (CEF) |
principal.ip |
Se asigna directamente desde el campo CEF. |
domain_name |
principal.administrative_domain |
Se asignan directamente. |
http_method |
network.http.method |
Se asignan directamente. |
log_type |
metadata.log_type |
Se asignan directamente. |
message |
Varios | Se analiza con patrones de grok para extraer varios campos. Consulta otras filas para ver asignaciones específicas. |
received_bytes |
network.received_bytes |
Se asignan directamente. |
redirect_url |
network.application_protocol |
Si redirect_url comienza con "http", se extrae y asigna el protocolo. |
redirect_url |
target.asset.hostname |
Si redirect_url comienza con "http", se extrae y asigna el nombre de host. |
redirect_url |
target.hostname |
Si redirect_url comienza con "http", se extrae y asigna el nombre de host. |
redirect_url |
target.port |
Si redirect_url comienza con “http”, el puerto se extrae y se asigna. |
request_creation_time |
metadata.collected_timestamp |
Se asignan directamente después del análisis de fecha. |
request_processing_time |
security_result.detection_fields |
Crea un par clave-valor con la clave "request_processing_time" y el valor de este campo. |
response_processing_time |
security_result.detection_fields |
Crea un par clave-valor con la clave "response_processing_time" y el valor de este campo. |
sent_bytes |
network.sent_bytes |
Se asignan directamente. |
ssl_cipher |
network.tls.cipher |
Se asignan directamente. |
ssl_protocol |
network.tls.version |
Se asignan directamente. |
target_group_arn |
target.group.group_display_name |
Se asignan directamente. |
target_processing_time |
security_result.detection_fields |
Crea un par clave-valor con la clave "target_processing_time" y el valor de este campo. |
target_status_code |
target.labels |
Crea una etiqueta con la clave "target_status_code" y el valor de este campo, y la agrega al array target.labels . |
time |
metadata.event_timestamp |
Se asignan directamente después del análisis de fecha. |
trace_id |
metadata.product_log_id |
Se asignan directamente después de quitar "Root=". |
url |
network.http.referral_url |
Se asignan directamente. |
user_agent |
network.http.user_agent |
Se asignan directamente. |
(analizador) | metadata.event_type |
Se establece en "NETWORK_HTTP" si están presentes los IDs de la máquina principal y de destino, en "STATUS_UPDATE" si solo está presente el ID de la máquina principal, en "GENERIC_EVENT" si no hay IP de destino, nombre de host ni IP de destino, y en "NETWORK_HTTP" en caso contrario. |
(Analizador) | metadata.product_name |
Establece la opción en "AWS Elastic Load Balancer". |
(analizador) | metadata.vendor_name |
Se establece en "AMAZON". |
Cambios
2024-03-22
- Se agregó un nuevo patrón de Grok para admitir un nuevo patrón de registros JSON.
- Se agregó compatibilidad con los registros de patrones de CEF.
- Se asignó "dst_ip" a "target.ip".
- Se asignó "dst_port" a "target.port".
- Se asignó “sip” a “principal.ip”.
- Se asignaron "request_processing_time", "target_processing_time", "siteid", "fileId" y "response_processing_time" a "security_result.detection.fields".
- Asignaciones alineadas para "principal.ip" y "principal.asset.ip".
- Asignaciones alineadas para "target.ip" y "target.asset.ip".
- Asignaciones alineadas para "target.hostname" y "target.asset.hostname".
- Se asignó "cipher" a "network.tls.cipher".
- Se asignó “version” a “network.tls.version”.
- Se asignó "Cliente" a "principal.user.user_display_name".
2022-05-27
- Mejora: Se modificó el valor almacenado en metadata.product_name a "AWS Elastic Load Balancer".
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.