Mengumpulkan log Area 1

Versi Parser: 3.0

Didukung di:

Dokumen ini menjelaskan cara menyerap log Area 1 Email Security (oleh Cloudflare) ke Google Security Operations menggunakan AWS S3. Parser memproses log dalam format JSON. Parser ini mengekstrak kolom yang relevan dari struktur JSON bertingkat, memetakannya ke Unified Data Model (UDM), dan memperkaya data dengan informasi geografis dan detail keamanan seperti hash dan disposisi lampiran.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Windows 2016 atau yang lebih baru, atau host Linux dengan systemd
  • Jika beroperasi dari balik proxy, port firewall terbuka
  • Akses istimewa ke Area 1 Email Security (oleh Cloudflare)

Mengonfigurasi AWS IAM dan Bucket S3

  1. Buat bucket Amazon S3 dengan mengikuti panduan pengguna ini: Membuat bucket
  2. Login ke AWS Console.
  3. Buka S3 > Create bucket.
  4. Masukkan nama untuk bucket (misalnya, area1-security-logs).
  5. Biarkan setelan default lainnya (atau konfigurasikan enkripsi dan pembuatan versi jika diperlukan).
  6. Klik Create.
  7. Simpan Nama dan Region bucket untuk referensi di masa mendatang.
  8. Buat Pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
  9. Pilih User yang dibuat.
  10. Pilih tab kredensial keamanan.
  11. Klik Create Access Key di bagian Access Keys.
  12. Pilih Layanan pihak ketiga sebagai Kasus penggunaan.
  13. Klik Berikutnya.
  14. Opsional: Tambahkan tag deskripsi.
  15. Klik Create access key.
  16. Klik Download CSV file, lalu simpan Access Key dan Secret Access Key untuk referensi di masa mendatang.
  17. Klik Done.
  18. Pilih tab Izin.
  19. Di Kebijakan Izin, klik Tambahkan izin.
  20. Pilih Attach policies directly.
  21. Telusuri kebijakan AmazonS3FullAccess.
  22. Pilih kebijakan.
  23. Klik Berikutnya.
  24. Klik Add permissions.

Mendapatkan Kredensial API Area 1

  1. Login ke dasbor Area 1 Security (Cloudflare).
  2. Buka Setelan > Akses API.
  3. Buat Kunci API (Token).
  4. Salin dan Simpan Token di tempat yang aman.

Mengonfigurasi paket Python yang diperlukan

  1. Login ke host pengumpulan log Anda (misalnya, VM AWS) dan jalankan perintah berikut untuk mengonfigurasi kredensial AWS:

    pip install boto3 requests
    aws configure
    

Membuat skrip Area 1 Log Puller

  1. Buat file berikut dengan memasukkan sudo vi area1_to_s3.py, lalu salin kode berikut:

    • Sesuaikan hal berikut:
    #!/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. Simpan dan keluar dari vi: klik esc, lalu ketik :wq.

Menyimpan variabel lingkungan

  1. Membuat file aman untuk menyimpan variabel lingkungan di /etc/area1.env (atau /home/user/.area1.env)

    export AREA1_API_TOKEN="your_actual_area1_api_token"
    export AWS_PROFILE="<your_aws_programmatic_username>"
    
  2. Pastikan file tersebut aman:

    chmod 600 /etc/area1.env
    

Menjalankan dan menguji skrip

  1. Jalankan skrip berikut:

    python3 area1_to_s3.py
    
  2. Anda akan melihat:

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

Mengotomatiskan dengan Cron

  1. Buat Skrip Wrapper untuk Cron dengan menjalankan sudo vi /usr/local/bin/run_area1.sh, lalu salin kode berikut:

    #!/usr/bin/env bash
    set -euo pipefail
    
    source /etc/area1.env
    /usr/bin/python3 /opt/scripts/area1_to_s3.py
    
  2. Setel agar file dapat dieksekusi:

    chmod +x /usr/local/bin/run_area1.sh
    
  3. Tetapkan untuk berjalan setiap hari pada pukul 01.00 UTC:

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

Menyiapkan feed

Ada dua titik entri yang berbeda untuk menyiapkan feed di platform Google SecOps:

  • Settings > Data Management > Feeds > Add New Feed (Di platform khusus SIEM, Settings > Feeds > Add New Feed)
  • Content Hub > Paket Konten > Mulai

Siapkan feed dari Setelan > Pengelolaan Data > Feed

Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:

  1. Buka Setelan > Pengelolaan Data > Feed. Jika Anda menggunakan platform khusus SIEM, buka Settings > Feeds.
  2. Klik Tambahkan Feed Berita Baru.
  3. Di halaman berikutnya, klik Konfigurasi satu feed.
  4. Di kolom Nama feed, masukkan nama untuk feed (misalnya, Area1 Logs).
  5. Pilih Amazon S3 sebagai Source type.
  6. Pilih Area1 Security sebagai Log type.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut:

    • Region: Region tempat bucket Amazon S3 berada.
    • S3 URI: URI bucket (formatnya harus: s3://<your-log-bucket-name>). Ganti kode berikut:
      • your-log-bucket-name: nama bucket.
    • URI is a: Pilih Directory which includes subdirectories.
    • Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
    • Access Key ID: Kunci akses Pengguna dengan akses ke bucket s3.
    • Secret Access Key: Kunci rahasia Pengguna dengan akses ke bucket s3.
  9. Klik Berikutnya.

  10. Tinjau konfigurasi feed berita baru Anda di layar Finalize, lalu klik Submit.

Menyiapkan feed dari Hub Konten

Tentukan nilai untuk kolom berikut:

  • Region: Region tempat bucket Amazon S3 berada.

    • S3 URI: URI bucket (formatnya harus: s3://<your-log-bucket-name>). Ganti kode berikut:
      • your-log-bucket-name: nama bucket.
    • URI is a: Pilih Directory which includes subdirectories.
    • Opsi penghapusan sumber: pilih opsi penghapusan sesuai preferensi Anda.
    • Access Key ID: Kunci akses Pengguna dengan akses ke bucket s3.
    • Secret Access Key: Kunci rahasia Pengguna dengan akses ke bucket s3.§

Opsi lanjutan

  • Nama Feed: Nilai yang diisi otomatis yang mengidentifikasi feed.
  • Jenis Sumber: Metode yang digunakan untuk mengumpulkan log ke Google SecOps.
  • Namespace Aset: Namespace yang terkait dengan feed.
  • Label Penyerapan: Label yang diterapkan ke semua peristiwa dari feed ini.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
alert_id security_result.rule_id Nilai diambil dari kolom alert_id.
alert_reasons security_result.description Nilai diambil dari kolom alert_reasons.
attachments.att_size security_result.about.file.size Nilai diambil dari kolom attachments.att_size dan dikonversi menjadi bilangan bulat yang tidak bertanda tangan.
attachments.disposition security_result.about.user.attribute.labels.value Nilai diambil dari kolom attachments.disposition.
attachments.extension security_result.about.file.mime_type Nilai diambil dari kolom attachments.extension.
attachments.md5 security_result.about.file.md5 Nilai diambil dari kolom attachments.md5.
attachments.name security_result.about.file.full_path Nilai diambil dari kolom attachments.name.
attachments.sha1 security_result.about.file.sha1 Nilai diambil dari kolom attachments.sha1.
attachments.sha256 security_result.about.file.sha256 Nilai diambil dari kolom attachments.sha256.
attachments.ssdeep security_result.about.file.ssdeep Nilai diambil dari kolom attachments.ssdeep.
delivery_mode security_result.detection_fields.value Nilai diambil dari kolom delivery_mode.
envelope_from principal.user.email_addresses, network.email.from Nilai diambil dari kolom envelope_from.
envelope_to network.email.to, target.user.email_addresses Nilai diambil dari kolom envelope_to.
final_disposition security_result.category_details Nilai diambil dari kolom final_disposition.
message_id metadata.product_log_id Nilai diambil dari kolom message_id setelah menghapus karakter '<' dan '>'.
replyto network.email.bounce_address Nilai diambil dari kolom replyto.
smtp_helo_server_ip principal.ip Nilai diambil dari kolom smtp_helo_server_ip.
smtp_helo_server_ip_as_name principal.location.name Nilai diambil dari kolom smtp_helo_server_ip_as_name.
smtp_helo_server_ip_as_number principal.asset_id Nilai diambil dari kolom smtp_helo_server_ip_as_number dan diawali dengan asset_id:.
smtp_helo_server_ip_geo principal.location.country_or_region, principal.location.state, principal.location.city Nilai diekstrak dari kolom smtp_helo_server_ip_geo menggunakan pola Grok.
smtp_helo_server_name principal.administrative_domain Nilai diambil dari kolom smtp_helo_server_name.
sumber metadata.vendor_name Nilai diambil dari kolom source. Jika kolom kosong, nilainya akan ditetapkan ke area1security.
subject network.email.subject Nilai diambil dari kolom subject.
waktu metadata.event_timestamp Nilai diambil dari kolom time dan dikonversi menjadi stempel waktu.
metadata.event_type Nilai ditetapkan ke EMAIL_TRANSACTION.
metadata.product_name Nilai ditetapkan ke AREA1.
metadata.log_type Nilai ditetapkan ke AREA1.
security_result.about.user.attribute.labels.key Nilai ditetapkan ke disposition.
security_result.category Nilai ditetapkan ke SOFTWARE_MALICIOUS.
security_result.detection_fields.key Nilai ditetapkan ke delivery_mode.
envelope_to.0" instead of "replyto network.email.to Dipetakan dari log perubahan

Log Perubahan

Melihat Log Perubahan untuk parser ini

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.