Kumpulkan log Area 1

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. Proses ini mengekstrak kolom yang relevan dari struktur JSON bertingkat, memetakannya ke Model Data Terpadu (UDM), dan memperkaya data dengan informasi geografis dan detail keamanan seperti hash lampiran dan disposisi.

Sebelum memulai

Pastikan Anda memenuhi prasyarat berikut:

  • Instance Google SecOps
  • Host Windows 2016 atau yang lebih baru, atau host Linux dengan systemd
  • Jika dijalankan di belakang 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 Konsol AWS.
  3. Buka S3 > Create bucket.
  4. Masukkan nama untuk bucket (misalnya, area1-security-logs).
  5. Biarkan setelan default lainnya (atau konfigurasi enkripsi dan pembuatan versi jika diperlukan).
  6. Klik Buat.
  7. Simpan Nama dan Region bucket untuk referensi di masa mendatang.
  8. Buat Pengguna dengan mengikuti panduan pengguna ini: Membuat pengguna IAM.
  9. Pilih Pengguna 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 file CSV, lalu simpan Kunci Akses dan Kunci Akses Rahasia untuk referensi di masa mendatang.
  17. Klik Selesai.
  18. Pilih tab Izin.
  19. Di Kebijakan izin, klik Tambahkan izin.
  20. Pilih Lampirkan kebijakan secara langsung.
  21. Cari kebijakan AmazonS3FullAccess.
  22. Pilih kebijakan.
  23. Klik Berikutnya.
  24. Klik Tambahkan izin.

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.

Konfigurasi 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
    

Buat 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.

Simpan variabel lingkungan

  1. Buat file yang 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 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. Ditetapkan untuk berjalan setiap hari 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 berbeda untuk menyiapkan feed di platform Google SecOps:

  • Setelan SIEM > Feed
  • Hub Konten > Paket Konten

Menyiapkan feed dari Setelan SIEM > Feed

Untuk mengonfigurasi feed, ikuti langkah-langkah berikut:

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed 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 Jenis sumber.
  6. Pilih Area1 Security sebagai Jenis log.
  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 berikut ini:
      • your-log-bucket-name: nama bucket.
    • URI adalah: Pilih Direktori yang menyertakan subdirektori.
    • 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 baru Anda di layar Selesaikan, lalu klik Kirim.

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 berikut ini:
      • your-log-bucket-name: nama bucket.
    • URI adalah: Pilih Direktori yang menyertakan subdirektori.
    • 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 telah 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 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.

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