Raccogliere i log dell'area 1

Supportato in:

Questo documento spiega come importare i log di Area 1 Email Security (di Cloudflare) in Google Security Operations utilizzando AWS S3. Il parser elabora i log in formato JSON. Estrae i campi pertinenti dalla struttura JSON nidificata, li mappa al modello di dati unificato (UDM) e arricchisce i dati con informazioni geografiche e dettagli di sicurezza come hash e disposizione degli allegati.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Istanza Google SecOps
  • Un host Windows 2016 o versioni successive oppure Linux con systemd
  • Se l'esecuzione avviene tramite un proxy, le porte del firewall sono aperte
  • Accesso con privilegi ad Area 1 Email Security (di Cloudflare)

Configura AWS IAM e il bucket S3

  1. Crea un bucket Amazon S3 seguendo questa guida utente: Creazione di un bucket
  2. Accedi alla console AWS.
  3. Vai a S3 > Crea bucket.
  4. Inserisci un nome per il bucket (ad esempio, area1-security-logs).
  5. Lascia invariate le altre impostazioni predefinite (o configura la crittografia e il controllo delle versioni, se necessario).
  6. Fai clic su Crea.
  7. Salva il Nome e la Regione del bucket per riferimento futuro.
  8. Crea un utente seguendo questa guida utente: Creazione di un utente IAM.
  9. Seleziona l'utente creato.
  10. Seleziona la scheda Credenziali di sicurezza.
  11. Fai clic su Crea chiave di accesso nella sezione Chiavi di accesso.
  12. Seleziona Servizio di terze parti come Caso d'uso.
  13. Fai clic su Avanti.
  14. (Facoltativo) Aggiungi un tag di descrizione.
  15. Fai clic su Crea chiave di accesso.
  16. Fai clic su Scarica file CSV e memorizza la chiave di accesso e la chiave di accesso segreta per riferimento futuro.
  17. Fai clic su Fine.
  18. Seleziona la scheda Autorizzazioni.
  19. In Norme relative alle autorizzazioni, fai clic su Aggiungi autorizzazioni.
  20. Seleziona Allega direttamente le norme.
  21. Cerca il criterio AmazonS3FullAccess.
  22. Seleziona la policy.
  23. Fai clic su Avanti.
  24. Fai clic su Aggiungi autorizzazioni.

Recuperare le credenziali API Area 1

  1. Accedi alla dashboard di Area 1 Security (Cloudflare).
  2. Vai a Impostazioni > Accesso API.
  3. Genera la chiave API (token).
  4. Copia e salva il token in un luogo sicuro.

Configura i pacchetti Python richiesti

  1. Accedi all'host di raccolta dei log (ad esempio, una VM AWS) ed esegui il comando seguente per configurare le credenziali AWS:

    pip install boto3 requests
    aws configure
    

Crea lo script Area 1 Log Puller

  1. Crea il seguente file inserendo sudo vi area1_to_s3.py, quindi copia il seguente codice:

    • Modifica quanto segue:
    #!/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. Salva ed esci vi: fai clic su esc e poi digita :wq.

Memorizza le variabili di ambiente

  1. Crea un file sicuro per archiviare le variabili di ambiente in /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. Assicurati che il file sia sicuro:

    chmod 600 /etc/area1.env
    

Esegui e testa lo script

  1. Esegui questo script:

    python3 area1_to_s3.py
    
  2. Dovresti vedere:

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

Automatizzare con Cron

  1. Crea lo script wrapper per Cron eseguendo sudo vi /usr/local/bin/run_area1.sh e poi copia il seguente codice:

    #!/usr/bin/env bash
    set -euo pipefail
    
    source /etc/area1.env
    /usr/bin/python3 /opt/scripts/area1_to_s3.py
    
  2. Rendi eseguibile il file:

    chmod +x /usr/local/bin/run_area1.sh
    
  3. Impostata per l'esecuzione giornaliera alle ore 01:00 UTC:

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

Configurare i feed

Esistono due diversi punti di accesso per configurare i feed nella piattaforma Google SecOps:

  • Impostazioni SIEM > Feed
  • Hub dei contenuti > Pacchetti di contenuti

Configurare i feed da Impostazioni SIEM > Feed

Per configurare un feed:

  1. Vai a Impostazioni SIEM > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Nella pagina successiva, fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad esempio, Area1 Logs).
  5. Seleziona Amazon S3 come Tipo di origine.
  6. Seleziona Area1 Security come Tipo di log.
  7. Fai clic su Avanti.
  8. Specifica i valori per i seguenti parametri di input:

    • Region (Regione): la regione in cui si trova il bucket Amazon S3.
    • URI S3: l'URI del bucket (il formato deve essere s3://<your-log-bucket-name>). Sostituisci quanto segue:
      • your-log-bucket-name: il nome del bucket.
    • URI è un: seleziona Directory che include sottodirectory.
    • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
    • ID chiave di accesso: la chiave di accesso utente con accesso al bucket S3.
    • Chiave di accesso segreta: la chiave segreta dell'utente con accesso al bucket S3.
  9. Fai clic su Avanti.

  10. Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.

Configurare i feed dall'hub dei contenuti

Specifica i valori per i seguenti campi:

  • Region (Regione): la regione in cui si trova il bucket Amazon S3.

    • URI S3: l'URI del bucket (il formato deve essere s3://<your-log-bucket-name>). Sostituisci quanto segue:
      • your-log-bucket-name: il nome del bucket.
    • URI è un: seleziona Directory che include sottodirectory.
    • Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
    • ID chiave di accesso: la chiave di accesso utente con accesso al bucket S3.
    • Chiave di accesso segreta: la chiave segreta dell'utente con accesso al bucket S3.§

Opzioni avanzate

  • Nome feed: un valore precompilato che identifica il feed.
  • Tipo di origine: metodo utilizzato per raccogliere i log in Google SecOps.
  • Spazio dei nomi dell'asset: lo spazio dei nomi associato al feed.
  • Etichette di importazione: etichette applicate a tutti gli eventi di questo feed.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
alert_id security_result.rule_id Il valore viene estratto dal campo alert_id.
alert_reasons security_result.description Il valore viene estratto dal campo alert_reasons.
attachments.att_size security_result.about.file.size Il valore viene estratto dal campo attachments.att_size e convertito in un numero intero senza segno.
attachments.disposition security_result.about.user.attribute.labels.value Il valore viene estratto dal campo attachments.disposition.
attachments.extension security_result.about.file.mime_type Il valore viene estratto dal campo attachments.extension.
attachments.md5 security_result.about.file.md5 Il valore viene estratto dal campo attachments.md5.
attachments.name security_result.about.file.full_path Il valore viene estratto dal campo attachments.name.
attachments.sha1 security_result.about.file.sha1 Il valore viene estratto dal campo attachments.sha1.
attachments.sha256 security_result.about.file.sha256 Il valore viene estratto dal campo attachments.sha256.
attachments.ssdeep security_result.about.file.ssdeep Il valore viene estratto dal campo attachments.ssdeep.
delivery_mode security_result.detection_fields.value Il valore viene estratto dal campo delivery_mode.
envelope_from principal.user.email_addresses, network.email.from Il valore viene estratto dal campo envelope_from.
envelope_to network.email.to, target.user.email_addresses Il valore viene estratto dal campo envelope_to.
final_disposition security_result.category_details Il valore viene estratto dal campo final_disposition.
message_id metadata.product_log_id Il valore viene estratto dal campo message_id dopo aver rimosso i caratteri "<" e ">".
replyto network.email.bounce_address Il valore viene estratto dal campo replyto.
smtp_helo_server_ip principal.ip Il valore viene estratto dal campo smtp_helo_server_ip.
smtp_helo_server_ip_as_name principal.location.name Il valore viene estratto dal campo smtp_helo_server_ip_as_name.
smtp_helo_server_ip_as_number principal.asset_id Il valore viene preso dal campo smtp_helo_server_ip_as_number e viene aggiunto il prefisso asset_id:.
smtp_helo_server_ip_geo principal.location.country_or_region, principal.location.state, principal.location.city Il valore viene estratto dal campo smtp_helo_server_ip_geo utilizzando un pattern Grok.
smtp_helo_server_name principal.administrative_domain Il valore viene estratto dal campo smtp_helo_server_name.
origine metadata.vendor_name Il valore viene estratto dal campo source. Se il campo è vuoto, il valore viene impostato su area1security.
subject network.email.subject Il valore viene estratto dal campo subject.
tempo metadata.event_timestamp Il valore viene estratto dal campo time e convertito in un timestamp.
metadata.event_type Il valore è impostato su EMAIL_TRANSACTION.
metadata.product_name Il valore è impostato su AREA1.
metadata.log_type Il valore è impostato su AREA1.
security_result.about.user.attribute.labels.key Il valore è impostato su disposition.
security_result.category Il valore è impostato su SOFTWARE_MALICIOUS.
security_result.detection_fields.key Il valore è impostato su delivery_mode.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.