Recoger registros de auditoría de Cisco Umbrella

Disponible en:

En este documento se explica cómo recoger registros de auditoría de Cisco Umbrella en un feed de Google Security Operations mediante un contenedor de AWS S3. El analizador normaliza los datos de registro CSV sin procesar, gestionando diferentes delimitadores y posibles incoherencias de formato. A continuación, en función del tipo de registro (DNS o Auditoría), asigna los campos extraídos al esquema de UDM correspondiente, lo que enriquece los datos con contexto adicional y estandariza la representación para su posterior análisis.

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

  1. Inicia sesión en el panel de control de Cisco Umbrella.
  2. Vaya a Administrar > Gestión de registros.
  3. Seleccione la opción Usar un segmento de Amazon S3 gestionado por Cisco.
  4. 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.
  5. Haz clic en Guardar.
  6. 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.
  7. Copia los valores de Clave de acceso y Clave secreta. Si pierdes estas claves, debes volver a generarlas.
  8. Haz clic en Entendido > Continuar.
  9. 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

  1. Inicia sesión en la consola de administración de AWS.
  2. Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
  3. Selecciona el usuario creado.
  4. Selecciona la pestaña Credenciales de seguridad.
  5. En la sección Claves de acceso, haz clic en Crear clave de acceso.
  6. Selecciona Servicio de terceros como Caso práctico.
  7. Haz clic en Siguiente.
  8. Opcional: añade una etiqueta de descripción.
  9. Haz clic en Crear clave de acceso.
  10. Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para usarlas más adelante.
  11. Haz clic en Listo.
  12. Selecciona la pestaña Permisos.
  13. En la sección Políticas de permisos, haz clic en Añadir permisos.
  14. Selecciona Añadir permisos.
  15. Seleccione Adjuntar políticas directamente.
  16. Busca y selecciona la política AmazonS3FullAccess.
  17. Haz clic en Siguiente.
  18. Haz clic en Añadir permisos.

Opcional: Configurar un segmento de Amazon S3 autogestionado

  1. Inicia sesión en la consola de administración de AWS.

    .
  2. Ve a S3.

  3. Haz clic en Crear segmento.

  4. 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.
  5. Haz clic en Crear.

Opcional: Configurar una política de segmentos para un segmento de AWS S3 autogestionado

  1. Haz clic en el nuevo contenedor para abrirlo.
  2. Selecciona Propiedades > Permisos.
  3. En la lista Permisos, haga clic en Añadir política de contenedor.
  4. 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.
  5. Haz clic en Guardar.

Opcional: verificación obligatoria para el segmento de Amazon S3 autogestionado

  1. En el panel de control de Cisco Umbrella, selecciona Administrador > Gestión de registros > Amazon S3.
  2. En el campo Nombre del segmento, especifica el nombre exacto del segmento de Amazon S3 y, a continuación, haz clic en Verificar.
  3. 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.
  4. Descarga el archivo README_FROM_UMBRELLA.txt y ábrelo con un editor de texto.
  5. Copia y guarda el token único de Cisco Umbrella del archivo.
  6. Ve al panel de control de Cisco Umbrella.
  7. En el campo Número de token, especifica el token y haz clic en Guardar.
  8. 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 de auditoría de Cisco Umbrella

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir nuevo.
  3. En el campo Nombre del feed, escriba un nombre para el feed; por ejemplo, Registros de auditoría de Cisco Umbrella.
  4. Selecciona Amazon S3 V2 como Tipo de fuente.
  5. Seleccione Auditoría de Cisco Umbrella como Tipo de registro.
  6. Haz clic en Siguiente.
  7. 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.
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
  8. Haz clic en Siguiente.

  9. 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
action_type security_result.action_details Se asigna directamente desde el campo de registro sin procesar action_type.
action_type security_result.action Si action_type contiene allow (sin distinguir entre mayúsculas y minúsculas), se asigna el valor ALLOW. Si action_type contiene block (sin distinguir entre mayúsculas y minúsculas), se asigna el valor BLOCK.
additionalValue additional.fields{}.key Su valor debe ser Additional Value.
additionalValue additional.fields{}.value.string_value Se asigna directamente desde el campo de registro sin procesar additionalValue.
blocked_categories additional.fields{}.key Su valor debe ser blocked_categories.
blocked_categories additional.fields{}.value.string_value Se asigna directamente desde el campo de registro sin procesar blocked_categories.
categorías security_result.category_details Se asigna directamente desde el campo de registro sin procesar categories, después de dividirse por comas.
columna1 metadata.product_log_id Se asigna desde el campo de registro sin procesar column1 si el registro es un registro de auditoría.
columna1 date_time Se asigna desde el campo de registro sin procesar column1 si el registro es un registro DNS.
column10 categorías Se asigna directamente desde el campo de registro sin procesar column10.
column11 most_granular_identity_type Se asigna directamente desde el campo de registro sin procesar column11.
column12 identity_types Se asigna directamente desde el campo de registro sin procesar column12.
column13 blocked_categories Se asigna directamente desde el campo de registro sin procesar column13.
columna2 date_time Se asigna desde el campo de registro sin procesar column2 si el registro es un registro de auditoría.
columna2 most_granular_identity Se asigna desde el campo de registro sin procesar column2 si el registro es un registro DNS.
columna3 principal.user.email_addresses Se asigna desde el campo de registro sin procesar column3 si el registro es un registro de auditoría.
columna3 identidades Se asigna desde el campo de registro sin procesar column3 si el registro es un registro DNS.
column4 principal.user.userid Se asigna desde el campo de registro sin procesar column4 si el registro es un registro de auditoría.
column4 internal_ip Se asigna desde el campo de registro sin procesar column4 si el registro es un registro DNS.
column5 security_result.rule_name Se asigna desde el campo de registro sin procesar column5 si el registro es un registro de auditoría.
column5 external_ip Se asigna desde el campo de registro sin procesar column5 si el registro es un registro DNS.
column6 action_type Se asigna directamente desde el campo de registro sin procesar column6.
column7 principal.ip Se asigna desde el campo de registro sin procesar column7 si el registro es un registro de auditoría.
column7 dns_query_type Se asigna desde el campo de registro sin procesar column7 si el registro es un registro DNS.
column8 additionalValue Se asigna desde el campo de registro sin procesar column8 si el registro es un registro de auditoría.
column8 dns_response_code Se asigna desde el campo de registro sin procesar column8 si el registro es un registro DNS.
column9 dominio Se asigna directamente desde el campo de registro sin procesar column9.
date_time metadata.event_timestamp.seconds Marca de tiempo de época extraída del campo date_time.
dns_query_type network.dns.questions.type Se extrae del campo dns_query_type mediante una expresión regular y se convierte en un número entero.
dns_response_code network.dns.response_code Se asigna desde el campo dns_response_code y se convierte en un número entero en función de los valores del código de respuesta DNS.
dominio network.dns.questions.name Se asigna directamente desde el campo domain.
external_ip principal.ip Se asigna desde el campo external_ip si no está vacío y es diferente de internal_ip.
identidades principal.location.name Se asigna desde el campo identities si el campo identity_types correspondiente es Networks.
identidades principal.hostname Se asigna desde el campo identities si el campo identity_types correspondiente es AD Computers, Roaming Computers o Anyconnect Roaming Client.
identidades principal.asset.hostname Se asigna desde el campo identities si el campo identity_types correspondiente es AD Computers, Roaming Computers o Anyconnect Roaming Client.
identidades principal.location.city Se asigna desde el campo identities si el campo identity_types correspondiente es Sites.
identity_types additional.fields{}.key Su valor debe ser identities_types.
identity_types additional.fields{}.value.string_value Se asigna directamente desde el campo de registro sin procesar identity_types.
internal_ip principal.ip Se asigna desde el campo internal_ip si no está vacío.
most_granular_identity additional.fields{}.key Su valor debe ser most_granular_identity.
most_granular_identity additional.fields{}.value.string_value Se asigna directamente desde el campo de registro sin procesar most_granular_identity.
most_granular_identity_type additional.fields{}.key Su valor debe ser most_granular_identity_type.
most_granular_identity_type additional.fields{}.value.string_value Se asigna directamente desde el campo de registro sin procesar most_granular_identity_type.
metadata.event_type Se establece en NETWORK_DNS si el registro es un registro DNS.
metadata.event_type Se define como STATUS_UPDATE si el registro es un registro de auditoría y principal_ip no está vacío.
metadata.event_type Se define como GENERIC_EVENT si el registro es un registro de auditoría y principal_ip está vacío.
metadata.vendor_name Su valor debe ser CISCO UMBERLLA.
metadata.product_name Su valor debe ser CISCO UMBERLLA.
metadata.log_type Su valor debe ser AUDITD.
network.application_protocol Se establece en DNS si el registro es un registro DNS.

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