Raccogli i log di Area 1

Versione parser: 3.0

Supportata in:

Questo documento spiega come importare i log di Area 1 Email Security (by 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 allo Unified Data Model (UDM) e arricchisce i dati con informazioni geografiche e dettagli di sicurezza come gli hash e la disposizione degli allegati.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

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

Configura AWS IAM e il bucket S3

  1. Crea un bucket Amazon S3 seguendo questa guida dell'utente: Creazione di un bucket
  2. Accedi alla console AWS.
  3. Vai a S3 > Create bucket (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 dell'utente: Creazione di un utente IAM.
  9. Seleziona l'utente creato.
  10. Seleziona la scheda Credenziali di sicurezza.
  11. Fai clic su Create Access Key (Crea chiave di accesso) nella sezione Access Keys (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 Download CSV file (Scarica file CSV) e memorizza la Access Key (Chiave di accesso) e la Secret Access Key (Chiave di accesso segreta) per riferimento futuro.
  17. Fai clic su Fine.
  18. Seleziona la scheda Autorizzazioni.
  19. In Policy sulle autorizzazioni, fai clic su Aggiungi autorizzazioni.
  20. Seleziona Collega direttamente i criteri.
  21. Cerca la policy AmazonS3FullAccess.
  22. Seleziona la policy.
  23. Fai clic su Avanti.
  24. Fai clic su Aggiungi autorizzazioni.

Ottieni le credenziali API di 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 seguente comando 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:

    • Regola 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 da vi: fai clic su esc e poi digita :wq.

Archivia 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/
    

Automatizza 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 essere eseguita ogni giorno alle ore 01:00 UTC:

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

Configura i feed

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

  • Impostazioni > Gestione dei dati > Feed > Aggiungi nuovo feed (sulla piattaforma solo SIEM, Impostazioni > Feed > Aggiungi nuovo feed)
  • Hub dei contenuti > Pacchetti di contenuti > Inizia

Configura i feed da Impostazioni > Gestione dei dati > Feed

Per configurare un feed:

  1. Vai a Impostazioni > Gestione dei dati > Feed. Se utilizzi una piattaforma solo SIEM, vai a Impostazioni > 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 es. 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:

    • 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.
    • L'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 di notizie nella schermata Finalizza e poi fai clic su Invia.

Configura i feed dall'hub dei contenuti

Specifica i valori per i seguenti campi:

  • 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.
    • L'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 del feed: un valore precompilato che identifica il feed.
  • Tipo di origine: metodo utilizzato per raccogliere i log in Google SecOps.
  • Spazio dei nomi degli 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 Logica
alert_id security_result.rule_id Il valore viene preso dal campo alert_id.
alert_reasons security_result.description Il valore viene preso dal campo alert_reasons.
attachments.att_size security_result.about.file.size Il valore viene preso 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 preso dal campo attachments.disposition.
attachments.extension security_result.about.file.mime_type Il valore viene preso dal campo attachments.extension.
attachments.md5 security_result.about.file.md5 Il valore viene preso dal campo attachments.md5.
attachments.name security_result.about.file.full_path Il valore viene preso dal campo attachments.name.
attachments.sha1 security_result.about.file.sha1 Il valore viene preso dal campo attachments.sha1.
attachments.sha256 security_result.about.file.sha256 Il valore viene preso dal campo attachments.sha256.
attachments.ssdeep security_result.about.file.ssdeep Il valore viene preso dal campo attachments.ssdeep.
delivery_mode security_result.detection_fields.value Il valore viene preso dal campo delivery_mode.
envelope_from principal.user.email_addresses, network.email.from Il valore viene preso dal campo envelope_from.
envelope_to network.email.to, target.user.email_addresses Il valore viene preso dal campo envelope_to.
final_disposition security_result.category_details Il valore viene preso dal campo final_disposition.
message_id metadata.product_log_id Il valore viene preso dal campo message_id dopo aver rimosso i caratteri "<" e ">".
replyto network.email.bounce_address Il valore viene preso dal campo replyto.
smtp_helo_server_ip principal.ip Il valore viene preso dal campo smtp_helo_server_ip.
smtp_helo_server_ip_as_name principal.location.name Il valore viene preso 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 anteposto a 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 preso dal campo smtp_helo_server_name.
origine metadata.vendor_name Il valore viene preso dal campo source. Se il campo è vuoto, il valore viene impostato su area1security.
subject network.email.subject Il valore viene preso dal campo subject.
tempo metadata.event_timestamp Il valore viene preso 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.
envelope_to.0" instead of "replyto network.email.to Mappato dal log delle modifiche

Log delle modifiche

Visualizza il log delle modifiche per questo parser

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