Recoger registros de AWS Elastic Load Balancer
En este documento se explica cómo recoger los registros de Elastic Load Balancer de AWS configurando un feed de Google Security Operations. El analizador convierte los registros al formato UDM. Utiliza patrones grok para extraer campos de mensajes con formato CEF y sin formato CEF, asignándolos a campos de UDM y gestionando varias transformaciones de datos, incluida la lógica específica de los campos HTTP, TLS y relacionados con la seguridad. También realiza un procesamiento condicional en función de la presencia o el formato de determinados campos para asegurar una representación precisa de UDM.
Antes de empezar
Asegúrate de que cumples los siguientes requisitos previos:
- Instancia de Google SecOps
- Acceso privilegiado a AWS
Configurar AWS Elastic Load Balancer
- Habilita el registro de acceso para enviar los registros de acceso a un segmento de almacenamiento de S3
- Crea un servicio de colas simple de Amazon (SQS) y adjúntalo a un segmento de almacenamiento de S3.
Configurar un segmento de Amazon S3
- Inicia sesión en la consola de AWS.
- Crea un segmento de Amazon S3 siguiendo esta guía del usuario: Crear un segmento.
- Guarda el nombre del contenedor (por ejemplo,
elb-logs
) y la región para usarlos más adelante. - Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
- Selecciona el usuario creado.
- Selecciona la pestaña Credenciales de seguridad.
- En la sección Claves de acceso, haz clic en Crear clave de acceso.
- Selecciona Servicio de terceros como Caso práctico.
- Haz clic en Siguiente.
- Opcional: añade 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.
- En la sección Políticas de permisos, haz clic en Añadir permisos.
- Selecciona Añadir permisos.
- Seleccione Adjuntar políticas directamente.
- Busca y selecciona la política AmazonS3FullAccess.
- Haz clic en Siguiente.
- Haz clic en Añadir permisos.
Cómo configurar AWS Elastic Load Balancer para habilitar los registros de acceso
- Inicia sesión en la consola de administración de AWS.
- Busca y selecciona EC2.
- En el menú de navegación, selecciona Balanceadores de carga.
- Selecciona el balanceador de carga para el que quieras habilitar el registro.
- En la pestaña Descripción, desplázate hasta Atributos.
- Haz clic en Editar atributos.
- Para habilitar los registros de acceso, selecciona Habilitar.
- Selecciona el segmento de S3 que has creado antes (por ejemplo,
elb-logs
). - Opcional: define el prefijo de registro para identificar los registros más fácilmente (por ejemplo,
elb/access-logs/
). - Haz clic en Guardar.
Configurar feeds
Hay dos puntos de entrada diferentes para configurar feeds en la plataforma Google SecOps:
- Configuración de SIEM > Feeds > Añadir nuevo
- Centro de contenido > Paquetes de contenido > Empezar
Cómo configurar el feed de AWS Elastic Load Balancer
- Haz clic en el paquete Amazon Cloud Platform.
- Busca el tipo de registro AWS Elastic Load Balancer.
Especifique los valores en los campos siguientes.
- Especifique los valores en los campos siguientes.
- Tipo de fuente: Amazon SQS V2
- Nombre de la cola: el nombre de la cola de SQS de la que se va a leer.
- URI de S3: el URI del segmento.
s3://your-log-bucket-name/
- Sustituye
your-log-bucket-name
por el nombre real de tu segmento de S3.
- Sustituye
Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras según tus preferencias de ingesta.
Antigüedad máxima del archivo: incluye los archivos modificados en los últimos días. El valor predeterminado es de 180 días.
ID de clave de acceso a la cola de SQS: una clave de acceso de cuenta que es una cadena alfanumérica de 20 caracteres.
Clave de acceso secreta de la cola de SQS: una clave de acceso de cuenta que es una cadena alfanumérica de 40 caracteres.
Opciones avanzadas
- Nombre del feed: valor rellenado automáticamente que identifica el feed.
- Espacio de nombres del recurso: espacio de nombres asociado al feed.
- Etiquetas de ingestión: etiquetas aplicadas a todos los eventos de este feed.
Haga clic en Crear feed.
Para obtener más información sobre cómo configurar varios feeds para diferentes tipos de registros en esta familia de productos, consulta el artículo Configurar 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 asigna el valor "ALLOW". Si actions_executed es "waf", asigna el valor "BLOCK". |
chosen_cert_arn |
principal.user.attribute.labels |
Si chosen_cert_arn contiene "session", asigna su valor a security_result.description . De lo contrario, cree una etiqueta con la clave "ARN" y el valor chosen_cert_arn , y añádala a la matriz principal.user.attribute.labels . |
chosen_cert_arn |
security_result.description |
Si chosen_cert_arn contiene "session", asigne su valor a este campo. |
client_ip |
principal.asset.ip |
Asignación directa. |
client_ip |
principal.ip |
Asignación directa. |
client_port |
principal.port |
Asignación directa. |
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 |
Varias | Se analiza con patrones 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 de recurso: 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 |
Asignación directa. |
data.dst_ip |
target.ip |
Asignación directa. |
data.dst_port |
target.port |
Asignación directa. |
data.elb |
target.resource.id |
Asignación directa. |
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 BAJA 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 mediante grok y se asigna. |
data.ver (CEF) |
network.tls.cipher |
La parte de la cifra se extrae mediante grok y se asigna. |
data.xff (CEF) |
principal.ip |
Se asigna directamente desde el campo CEF. |
domain_name |
principal.administrative_domain |
Asignación directa. |
http_method |
network.http.method |
Asignación directa. |
log_type |
metadata.log_type |
Asignación directa. |
message |
Varias | Se analiza con patrones grok para extraer varios campos. Consulta otras filas para ver las asignaciones específicas. |
received_bytes |
network.received_bytes |
Asignación directa. |
redirect_url |
network.application_protocol |
Si redirect_url empieza por "http", se extrae el protocolo y se asigna. |
redirect_url |
target.asset.hostname |
Si redirect_url empieza por "http", se extrae el nombre de host y se asigna. |
redirect_url |
target.hostname |
Si redirect_url empieza por "http", se extrae el nombre de host y se asigna. |
redirect_url |
target.port |
Si redirect_url empieza por "http", se extrae el puerto y se asigna. |
request_creation_time |
metadata.collected_timestamp |
Se asigna directamente después de analizar 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 |
Asignación directa. |
ssl_cipher |
network.tls.cipher |
Asignación directa. |
ssl_protocol |
network.tls.version |
Asignación directa. |
target_group_arn |
target.group.group_display_name |
Asignación directa. |
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 añade a la matriz target.labels . |
time |
metadata.event_timestamp |
Se asigna directamente después de analizar la fecha. |
trace_id |
metadata.product_log_id |
Asignado directamente después de eliminar "Root=". |
url |
network.http.referral_url |
Asignación directa. |
user_agent |
network.http.user_agent |
Asignación directa. |
(Analizador) | metadata.event_type |
Se asigna el valor "NETWORK_HTTP" si están presentes los IDs de la máquina principal y de la de destino, "STATUS_UPDATE" si solo está presente el ID de la máquina principal, "GENERIC_EVENT" si no están presentes la IP, el nombre de host o la IP de destino, y "NETWORK_HTTP" en los demás casos. |
(Analizador) | metadata.product_name |
Selecciona "Balanceador de carga de Elastic de AWS". |
(Analizador) | metadata.vendor_name |
Selecciona "AMAZON". |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.