Recopila registros del área 1

Compatible con:

En este documento, se explica cómo transferir registros de Area 1 Email Security (de Cloudflare) a Google Security Operations con AWS S3. El analizador procesa los registros en formato JSON. Extrae los campos pertinentes de la estructura JSON anidada, los asigna al Modelo de datos unificado (UDM) y enriquece los datos con información geográfica y detalles de seguridad, como los hashes y la disposición de los archivos adjuntos.

Antes de comenzar

Asegúrate de cumplir con los siguientes requisitos previos:

  • Instancia de Google SecOps
  • Un host de Windows 2016 o posterior, o un host de Linux con systemd
  • Si se ejecuta detrás de un proxy, los puertos de firewall están abiertos.
  • Acceso privilegiado a Area 1 Email Security (de Cloudflare)

Configura IAM de AWS y el bucket de S3

  1. Crea un bucket de Amazon S3 siguiendo esta guía del usuario: Crea un bucket
  2. Accede a la consola de AWS.
  3. Ve a S3 > Crear bucket.
  4. Ingresa un nombre para el bucket (por ejemplo, area1-security-logs).
  5. Deja los otros valores predeterminados (o configura el encriptado y el control de versiones si es necesario).
  6. Haz clic en Crear.
  7. Guarda el Nombre y la Región del bucket para referencia futura.
  8. Crea un usuario siguiendo esta guía del usuario: Cómo crear un usuario de IAM.
  9. Selecciona el usuario creado.
  10. Selecciona la pestaña Credenciales de seguridad.
  11. Haz clic en Crear clave de acceso en la sección Claves de acceso.
  12. Selecciona Servicio de terceros como Caso de uso.
  13. Haz clic en Siguiente.
  14. Opcional: Agrega una etiqueta de descripción.
  15. Haz clic en Crear clave de acceso.
  16. Haz clic en Descargar archivo CSV y guarda la clave de acceso y la clave de acceso secreta para consultarlas en el futuro.
  17. Haz clic en Listo.
  18. Selecciona la pestaña Permisos.
  19. En Políticas de permisos, haz clic en Agregar permisos.
  20. Selecciona Adjuntar políticas directamente.
  21. Busca la política AmazonS3FullAccess.
  22. Selecciona la política.
  23. Haz clic en Siguiente.
  24. Haz clic en Agregar permisos.

Obtén credenciales de la API de Area 1

  1. Accede al panel de Area 1 Security (Cloudflare).
  2. Ve a Configuración > Acceso a la API.
  3. Genera la clave de API (token).
  4. Copia y guarda el token en un lugar seguro.

Configura los paquetes de Python necesarios

  1. Accede a tu host de recopilación de registros (por ejemplo, una VM de AWS) y ejecuta el siguiente comando para configurar las credenciales de AWS:

    pip install boto3 requests
    aws configure
    

Crea la secuencia de comandos de Area 1 Log Puller

  1. Para crear el siguiente archivo, ingresa sudo vi area1_to_s3.py y, luego, copia el siguiente código:

    • Ajusta lo siguiente:
    #!/usr/bin/env python3
    import os
    import requests
    import boto3
    import datetime
    import json
    
    # Configuration
    AREA1_API_TOKEN = os.environ.get("AREA1_API_TOKEN")  # Load securely from env
    AWS_PROFILE = os.environ.get("AWS_PROFILE", None)    # Optional, for named profiles
    S3_BUCKET_NAME = "area1-security-logs"
    LOG_TYPE = "events"
    
    # Time range
    end_time = datetime.datetime.utcnow()
    start_time = end_time - datetime.timedelta(days=1)
    
    def fetch_area1_logs():
        url = f"https://api.area1security.com/v1/{LOG_TYPE}"
        headers = {
            "Authorization": f"Bearer {AREA1_API_TOKEN}",
            "Accept": "application/json"
        }
        params = {
            "startDate": start_time.strftime("%Y-%m-%dT%H:%M:%SZ"),
            "endDate": end_time.strftime("%Y-%m-%dT%H:%M:%SZ")
        }
        response = requests.get(url, headers=headers, params=params)
        response.raise_for_status()
        return response.json()
    
    def upload_to_s3(data):
        filename = f"area1_{LOG_TYPE}_{start_time.strftime('%Y%m%d')}.json"
    
        session = boto3.Session(profile_name=AWS_PROFILE) if AWS_PROFILE else boto3.Session()
        s3 = session.client("s3")
    
        s3.put_object(
            Bucket=S3_BUCKET_NAME,
            Key=f"logs/{filename}",
            Body=json.dumps(data).encode("utf-8"),
            ContentType="application/json"
        )
        print(f"[✓] Uploaded {filename} to s3://{S3_BUCKET_NAME}/logs/")
    
    if __name__ == "__main__":
        logs = fetch_area1_logs()
        upload_to_s3(logs)
    
  2. Guardar y salir vi: Haz clic en esc y, luego, escribe :wq.

Almacena las variables de entorno

  1. Crea un archivo seguro para almacenar variables de entorno en /etc/area1.env (o /home/user/.area1.env)

    export AREA1_API_TOKEN="your_actual_area1_api_token"
    export AWS_PROFILE="<your_aws_programmatic_username>"
    
  2. Asegúrate de que el archivo sea seguro:

    chmod 600 /etc/area1.env
    

Ejecuta y prueba la secuencia de comandos

  1. Ejecuta la siguiente secuencia de comandos:

    python3 area1_to_s3.py
    
  2. Deberías ver lo siguiente:

    Uploaded area1_events_20250701.json to s3://area1-security-logs/logs/
    

Automatiza con Cron

  1. Ejecuta sudo vi /usr/local/bin/run_area1.sh y, luego, copia el siguiente código para crear el wrapper de la secuencia de comandos para Cron:

    #!/usr/bin/env bash
    set -euo pipefail
    
    source /etc/area1.env
    /usr/bin/python3 /opt/scripts/area1_to_s3.py
    
  2. Haz que el archivo sea ejecutable:

    chmod +x /usr/local/bin/run_area1.sh
    
  3. Programado para ejecutarse todos los días a las 01:00 UTC:

    crontab -e
    0 1 * * * /usr/local/bin/run_area1.sh >> /var/log/area1_to_s3.log 2>&1
    

Configura feeds

Existen dos puntos de entrada diferentes para configurar feeds en la plataforma de Google SecOps:

  • Configuración de SIEM > Feeds
  • Centro de contenido > Paquetes de contenido

Configura feeds desde Configuración del SIEM > Feeds

Para configurar un feed, sigue estos pasos:

  1. Ve a SIEM Settings > Feeds.
  2. Haz clic en Agregar feed nuevo.
  3. En la siguiente página, haz clic en Configurar un solo feed.
  4. En el campo Nombre del feed, ingresa un nombre para el feed (por ejemplo, Area1 Logs).
  5. Selecciona Amazon S3 como el Tipo de fuente.
  6. Selecciona Area1 Security como el Tipo de registro.
  7. Haz clic en Siguiente.
  8. 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 (el formato debe ser s3://<your-log-bucket-name>). Reemplaza lo siguiente:
      • your-log-bucket-name: el nombre del bucket.
    • El URI es un: Selecciona Directorio que incluye subdirectorios.
    • Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
    • 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.
  9. Haz clic en Siguiente.

  10. Revisa la nueva configuración del feed en la pantalla Finalizar y, luego, haz clic en Enviar.

Configura feeds desde el Centro de contenido

Especifica valores para los siguientes campos:

  • Región: Es la región en la que se encuentra el bucket de Amazon S3.

    • URI de S3: Es el URI del bucket (el formato debe ser s3://<your-log-bucket-name>). Reemplaza lo siguiente:
      • your-log-bucket-name: el nombre del bucket.
    • El URI es un: Selecciona Directorio que incluye subdirectorios.
    • Opciones de borrado de la fuente: Selecciona la opción de borrado según tu preferencia.
    • 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.§

Opciones avanzadas

  • Nombre del feed: Es un valor completado previamente que identifica el feed.
  • Tipo de fuente: Es el método que se usa para recopilar registros en Google SecOps.
  • 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.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
alert_id security_result.rule_id El valor se toma del campo alert_id.
alert_reasons security_result.description El valor se toma del campo alert_reasons.
attachments.att_size security_result.about.file.size El valor se toma del campo attachments.att_size y se convierte en un número entero sin signo.
attachments.disposition security_result.about.user.attribute.labels.value El valor se toma del campo attachments.disposition.
attachments.extension security_result.about.file.mime_type El valor se toma del campo attachments.extension.
attachments.md5 security_result.about.file.md5 El valor se toma del campo attachments.md5.
attachments.name security_result.about.file.full_path El valor se toma del campo attachments.name.
attachments.sha1 security_result.about.file.sha1 El valor se toma del campo attachments.sha1.
attachments.sha256 security_result.about.file.sha256 El valor se toma del campo attachments.sha256.
attachments.ssdeep security_result.about.file.ssdeep El valor se toma del campo attachments.ssdeep.
delivery_mode security_result.detection_fields.value El valor se toma del campo delivery_mode.
envelope_from principal.user.email_addresses, network.email.from El valor se toma del campo envelope_from.
envelope_to network.email.to, target.user.email_addresses El valor se toma del campo envelope_to.
final_disposition security_result.category_details El valor se toma del campo final_disposition.
message_id metadata.product_log_id El valor se toma del campo message_id después de quitar los caracteres "<" y ">".
replyto network.email.bounce_address El valor se toma del campo replyto.
smtp_helo_server_ip principal.ip El valor se toma del campo smtp_helo_server_ip.
smtp_helo_server_ip_as_name principal.location.name El valor se toma del campo smtp_helo_server_ip_as_name.
smtp_helo_server_ip_as_number principal.asset_id El valor se toma del campo smtp_helo_server_ip_as_number y se antepone con asset_id:.
smtp_helo_server_ip_geo principal.location.country_or_region, principal.location.state, principal.location.city El valor se extrae del campo smtp_helo_server_ip_geo con un patrón de Grok.
smtp_helo_server_name principal.administrative_domain El valor se toma del campo smtp_helo_server_name.
source metadata.vendor_name El valor se toma del campo source. Si el campo está vacío, el valor se establece en area1security.
asunto network.email.subject El valor se toma del campo subject.
hora metadata.event_timestamp El valor se toma del campo time y se convierte en una marca de tiempo.
metadata.event_type El valor se establece en EMAIL_TRANSACTION.
metadata.product_name El valor se establece en AREA1.
metadata.log_type El valor se establece en AREA1.
security_result.about.user.attribute.labels.key El valor se establece en disposition.
security_result.category El valor se establece en SOFTWARE_MALICIOUS.
security_result.detection_fields.key El valor se establece en delivery_mode.

¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.