Recoger registros de proxy web de Cisco Umbrella
En este documento se explica cómo recoger registros de proxy web de Cisco Umbrella en un feed de Google Security Operations mediante un contenedor de AWS S3. El analizador extrae campos de un registro CSV, cambia el nombre de las columnas para que sean más claras y gestiona las posibles variaciones de los datos de entrada. A continuación, usa los archivos incluidos (umbrella_proxy_udm.include
y umbrella_handle_identities.include
) para asignar los campos extraídos al UDM y procesar la información de identidad en función del campo identityType
.
Antes de empezar
- Asegúrate de que tienes una instancia de Google SecOps.
- Asegúrate de que tienes acceso privilegiado a AWS IAM y S3.
- Asegúrate de que tienes acceso con privilegios a Cisco Umbrella.
Configurar un segmento de Amazon S3 gestionado por Cisco
- Inicia sesión en el panel de control de Cisco Umbrella.
- Vaya a Administrar > Gestión de registros.
- Seleccione la opción Usar un segmento de Amazon S3 gestionado por Cisco.
- Proporcione los siguientes detalles de configuración:
- Selecciona una región: elige una región más cercana a tu ubicación para reducir la latencia.
- Seleccione un periodo de conservación: elija el periodo. La duración de la conservación es de 7, 14 o 30 días. Una vez transcurrido el periodo seleccionado, los datos se eliminan y no se pueden recuperar. Si tu ciclo de ingestión es regular, usa un periodo más corto. Puedes cambiar la duración de la conservación más adelante.
- Haz clic en Guardar.
- Haz clic en Continuar para confirmar tus selecciones y recibir la notificación de activación.
En la ventana Activación completada que aparece, se muestran los valores de Clave de acceso y Clave secreta. - Copia los valores de Clave de acceso y Clave secreta. Si pierdes estas claves, debes volver a generarlas.
- Haz clic en Entendido > Continuar.
- En una página de resumen se muestra la configuración y el nombre del segmento. Puedes activar o desactivar el registro según lo requiera tu organización. Sin embargo, los registros se purgan en función de la duración de la conservación, independientemente de si se añaden datos nuevos.
Opcional: Configurar claves de acceso de usuario para un segmento de AWS S3 autogestionado
- Inicia sesión en la consola de administración de AWS.
- 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.
Opcional: Configurar un segmento de Amazon S3 autogestionado
Inicia sesión en la consola de administración de AWS.
.Ve a S3.
Haz clic en Crear segmento.
Proporciona los siguientes detalles de configuración:
- Nombre del segmento: indica un nombre para el segmento de Amazon S3.
- Región: selecciona una región.
Haz clic en Crear.
Opcional: Configurar una política de segmentos para un segmento de AWS S3 autogestionado
- Haz clic en el nuevo contenedor para abrirlo.
- Selecciona Propiedades > Permisos.
- En la lista Permisos, haga clic en Añadir política de contenedor.
Introduce la política de contenedor preconfigurada de la siguiente manera:
{ "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*" }, { "Sid": "", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*"}, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::BUCKET_NAME" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::BUCKET_NAME" } ] }
- Sustituye
BUCKET_NAME
por el nombre del segmento de Amazon S3 que has indicado.
- Sustituye
Haz clic en Guardar.
Opcional: verificación obligatoria para el segmento de Amazon S3 autogestionado
- En el panel de control de Cisco Umbrella, selecciona Administrador > Gestión de registros > Amazon S3.
- En el campo Nombre del segmento, especifica el nombre exacto del segmento de Amazon S3 y, a continuación, haz clic en Verificar.
- Como parte del proceso de verificación, se sube un archivo llamado
README_FROM_UMBRELLA.txt
de Cisco Umbrella a tu segmento de Amazon S3. Es posible que tengas que actualizar el navegador para ver el archivo Léame cuando se haya subido. - Descarga el archivo
README_FROM_UMBRELLA.txt
y ábrelo con un editor de texto. - Copia y guarda el token único de Cisco Umbrella del archivo.
- Ve al panel de control de Cisco Umbrella.
- En el campo Número de token, especifica el token y haz clic en Guardar.
- Si se verifica correctamente, recibirás un mensaje de confirmación en el panel de control que indica que el contenedor se ha verificado correctamente. Si recibes un error que indica que no se puede verificar tu contenedor, vuelve a comprobar la sintaxis del nombre del contenedor y revisa la configuración.
Configurar un feed en Google SecOps para ingerir los registros del proxy web de Cisco Umbrella
- Ve a Configuración de SIEM > Feeds.
- Haz clic en Añadir nuevo.
- En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, Registros del proxy web de Cisco Umbrella).
- Selecciona Amazon S3 V2 como Tipo de fuente.
- Selecciona Proxy web de Cisco Umbrella como Tipo de registro.
- Haz clic en Siguiente.
Especifique los valores de los siguientes parámetros de entrada:
- URI de S3: el URI del segmento.
s3:/BUCKET_NAME
- Sustituye
BUCKET_NAME
por el nombre real del segmento.
- Sustituye
- Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
- URI de S3: el URI del segmento.
Haz clic en Siguiente.
Revise la configuración de la nueva fuente en la pantalla Finalizar y, a continuación, haga clic en Enviar.
Tabla de asignación de UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
ampDisposition |
security_result.detection_fields[].value |
El valor de ampDisposition del registro sin procesar. |
ampMalware |
security_result.detection_fields[].value |
El valor de ampMalware del registro sin procesar. |
ampScore |
security_result.detection_fields[].value |
El valor de ampScore del registro sin procesar. |
avDetections |
security_result.detection_fields[].value |
El valor de avDetections del registro sin procesar. |
blockedCategories |
security_result.threat_name |
El valor de blockedCategories del registro sin procesar. |
certificateErrors |
security_result.detection_fields[].value |
El valor de certificateErrors del registro sin procesar. |
contentType |
security_result.detection_fields[].value |
El valor de contentType del registro sin procesar. |
destinationIp |
target.ip |
El valor de destinationIp del registro sin procesar. |
destinationListID |
security_result.detection_fields[].value |
El valor de destinationListID del registro sin procesar. |
dlpstatus |
security_result.detection_fields[].value |
El valor de dlpstatus del registro sin procesar. |
externalIp |
principal.ip |
El valor de externalIp del registro sin procesar. |
fileAction |
security_result.detection_fields[].value |
El valor de fileAction del registro sin procesar. |
fileName |
target.file.names |
El valor de fileName del registro sin procesar. |
identitiesV8 |
principal.hostname |
El valor de identitiesV8 del registro sin procesar. |
identity |
principal.location.name |
El valor de identity del registro sin procesar. |
internalIp |
principal.ip |
El valor de internalIp del registro sin procesar. |
isolateAction |
security_result.detection_fields[].value |
El valor de isolateAction del registro sin procesar. |
referer |
network.http.referral_url |
El valor de referer del registro sin procesar. |
requestMethod |
network.http.method |
El valor de requestMethod del registro sin procesar. |
requestSize |
security_result.detection_fields[].value |
El valor de requestSize del registro sin procesar. |
responseBodySize |
security_result.detection_fields[].value |
El valor de responseBodySize del registro sin procesar. |
responseSize |
security_result.detection_fields[].value |
El valor de responseSize del registro sin procesar. |
ruleID |
security_result.rule_id |
El valor de ruleID del registro sin procesar. |
rulesetID |
security_result.detection_fields[].value |
El valor de rulesetID del registro sin procesar. |
sha |
security_result.about.file.sha256 |
El valor de sha del registro sin procesar. |
statusCode |
network.http.response_code |
El valor de statusCode del registro sin procesar. |
ts |
timestamp |
El valor de ts del registro sin procesar, analizado como una marca de tiempo. |
url |
target.url |
El valor de url del registro sin procesar. |
userAgent |
network.http.user_agent |
El valor de userAgent del registro sin procesar. |
verdict |
security_result.detection_fields[].value |
El valor de verdict del registro sin procesar. |
warnstatus |
security_result.detection_fields[].value |
El valor de warnstatus del registro sin procesar. El valor de collection_time del registro sin procesar. Valor fijo establecido en el código fuente NETWORK_HTTP . Valor fijo establecido en el código fuente Cisco . Valor fijo establecido en el código fuente Umbrella . Valor fijo establecido en el código fuente UMBRELLA_WEBPROXY . Se deriva del esquema del campo URL (http o https ). Se analiza a partir del campo userAgent mediante una biblioteca de análisis de user-agent. El valor de requestSize del registro sin procesar, convertido en un número entero. El valor de responseSize del registro sin procesar, convertido en un número entero. Se deriva del campo identity cuando identityType (o identityTypeV8 con identitiesV8 ) indica un usuario. Se analiza más a fondo para extraer detalles del usuario, como el nombre visible, el nombre, los apellidos y la dirección de correo. Se asigna desde el campo verdict : allowed o allowed -> ALLOW , otros valores -> BLOCK . Si categories no está vacío, asigna el valor NETWORK_CATEGORIZED_CONTENT . El valor de categories del registro sin procesar. En función de verdict y, posiblemente, de otros campos. Normalmente, Traffic allowed o Traffic blocked . Si verdict no es allowed ni blocked y statusCode está presente, el resumen es Traffic %{statusCode} . |
¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.