Recopila registros de Elastic Load Balancer de AWS
En este documento, se explica cómo recopilar registros de AWS Elastic Load Balancer configurando un feed de Google Security Operations. El analizador convierte los registros al formato UDM. Utiliza patrones de Grok para extraer campos de mensajes con formato CEF y sin formato CEF, los asigna a campos del UDM y controla varias transformaciones de datos, incluida la lógica específica para los campos relacionados con HTTP, TLS y la seguridad. También realiza un procesamiento condicional según la presencia o el formato de ciertos campos para garantizar una representación precisa del UDM.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Instancia de Google SecOps
- Acceso privilegiado a AWS
Configura el Elastic Load Balancer de AWS
- Habilita el registro de acceso para enviar 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 del usuario: 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 el 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 adelante.
- 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.
Cómo configurar el balanceador de cargas elástico de AWS para habilitar los registros de acceso
- Accede a la consola de administración de AWS.
- Busca y selecciona EC2.
- En el menú de navegación, selecciona Balanceadores de cargas.
- 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 identificar los registros con mayor facilidad (por ejemplo,
elb/access-logs/
). - Haz clic en Guardar.
Configura feeds
Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:
- Configuración del SIEM > Feeds > Agregar nuevo
- Centro de contenido > Paquetes de contenido > Comenzar
Cómo configurar el feed de AWS Elastic Load Balancer
- Haz clic en el paquete Amazon Cloud Platform.
- Ubica el tipo de registro AWS Elastic Load Balancer.
Especifica los valores en los siguientes campos.
- Especifica los valores en los siguientes campos.
- Tipo de fuente: Amazon SQS V2
- Nombre de la cola: Es el nombre de la cola de SQS desde la que se leerá.
- URI de S3: Es el URI del bucket.
s3://your-log-bucket-name/
- Reemplaza
your-log-bucket-name
por el nombre real de tu bucket de S3.
- Reemplaza
Opciones de eliminación de la fuente: Selecciona la opción de eliminación según tus preferencias de transferencia.
Antigüedad máxima del archivo: Incluye los archivos modificados en la cantidad de días especificada. El valor predeterminado es de 180 días.
ID de clave de acceso a la cola de SQS: Es una clave de acceso a la cuenta que es una cadena alfanumérica de 20 caracteres.
Clave de acceso secreta de la cola de SQS: Es una clave de acceso a la cuenta que es una cadena alfanumérica de 40 caracteres.
Opciones avanzadas
- Nombre del feed: Es un valor completado previamente que identifica el feed.
- Espacio de nombres del activo: Es el espacio de nombres asociado con el feed.
- Etiquetas de transferencia: Son las etiquetas que se aplican a todos los eventos de este feed.
Haz clic en Crear feed.
Para obtener más información sobre cómo configurar varios feeds para diferentes tipos de registros dentro de esta familia de productos, consulta Configura feeds por producto.
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", se debe establecer en "ALLOW". Si actions_executed es "waf", se establece en "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 como 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 asigna directamente. |
client_ip |
principal.ip |
Se asigna directamente. |
client_port |
principal.port |
Se asigna directamente. |
classification |
security_result.rule_name |
Se asigna directamente si no está vacío o es “-”. |
classification_reason |
security_result.summary |
Se asigna directamente si no está vacío o es “-”. |
Customer (CEF) |
principal.user.user_display_name |
Se asigna directamente desde el campo CEF. |
data |
Varios | Se analizan con patrones de Grok para extraer varios campos. Consulta otras filas para ver las 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 "Javascript Support" 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 asigna directamente. |
data.dst_ip |
target.ip |
Se asigna directamente. |
data.dst_port |
target.port |
Se asigna directamente. |
data.elb |
target.resource.id |
Se asigna 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 LOW 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 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 asigna directamente. |
http_method |
network.http.method |
Se asigna directamente. |
log_type |
metadata.log_type |
Se asigna directamente. |
message |
Varios | Se analizan con patrones de Grok para extraer varios campos. Consulta otras filas para ver las asignaciones específicas. |
received_bytes |
network.received_bytes |
Se asigna directamente. |
redirect_url |
network.application_protocol |
Si redirect_url comienza con "http", se extrae y se asigna el protocolo. |
redirect_url |
target.asset.hostname |
Si redirect_url comienza con "http", se extrae y se asigna el nombre de host. |
redirect_url |
target.hostname |
Si redirect_url comienza con "http", se extrae y se asigna el nombre de host. |
redirect_url |
target.port |
Si redirect_url comienza con "http", se extrae y se asigna el puerto. |
request_creation_time |
metadata.collected_timestamp |
Se asigna directamente después del análisis de la 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 asigna directamente. |
ssl_cipher |
network.tls.cipher |
Se asigna directamente. |
ssl_protocol |
network.tls.version |
Se asigna directamente. |
target_group_arn |
target.group.group_display_name |
Se asigna 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 asigna directamente después del análisis de la fecha. |
trace_id |
metadata.product_log_id |
Se asigna directamente después de quitar "Root=". |
url |
network.http.referral_url |
Se asigna directamente. |
user_agent |
network.http.user_agent |
Se asigna directamente. |
(Analizador) | metadata.event_type |
Se establece en "NETWORK_HTTP" si están presentes el ID de la máquina principal y el de destino, en "STATUS_UPDATE" si solo está presente el ID de la máquina principal, en "GENERIC_EVENT" si no hay una IP, un nombre de host o una IP de destino, y en "NETWORK_HTTP" en los demás casos. |
(Analizador) | metadata.product_name |
Se debe establecer en "AWS Elastic Load Balancer". |
(Analizador) | metadata.vendor_name |
Se debe establecer en "AMAZON". |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.