Mengumpulkan log ManageEngine Exchange Reporter Plus

Didukung di:

Dokumen ini menjelaskan cara mengonfigurasi ManageEngine Exchange Reporter Plus untuk mengirimkan log ke Google Security Operations menggunakan webhook.

ManageEngine Exchange Reporter Plus adalah solusi pelaporan, audit, dan pemantauan berbasis web untuk lingkungan Microsoft Exchange Server dan Exchange Online. Alat ini memberikan laporan komprehensif tentang ukuran kotak surat, traffic email, folder publik, log Exchange ActiveSync, dan log audit untuk aktivitas administrator dan perubahan konfigurasi dalam deployment Exchange hybrid.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • ManageEngine Exchange Reporter Plus diinstal dan dikonfigurasi untuk memantau Exchange Server atau Exchange Online
  • Akses administratif ke konsol web ManageEngine Exchange Reporter Plus
  • Akses ke Konsol Google Cloud (untuk pembuatan kunci API)

Membuat feed webhook di Google SecOps

Buat feed

  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, ManageEngine Exchange Reporter Plus Logs).
  5. Pilih Webhook sebagai Jenis sumber.
  6. Pilih ManageEngine Exchange Reporter Plus sebagai Jenis log.
  7. Klik Berikutnya.
  8. Tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan (opsional): Masukkan \n untuk memisahkan peristiwa multi-baris.
    • Namespace aset: Namespace aset
    • Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini
  9. Klik Berikutnya.
  10. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Buat dan simpan kunci rahasia

Setelah membuat feed, Anda harus membuat kunci rahasia untuk autentikasi:

  1. Di halaman detail feed, klik Buat Kunci Rahasia.
  2. Dialog akan menampilkan kunci rahasia.
  3. Salin dan simpan kunci rahasia dengan aman.

Penting: Kunci rahasia hanya ditampilkan satu kali dan tidak dapat diambil lagi. Jika Anda kehilangan kunci ini, Anda harus membuat kunci rahasia baru.

Mendapatkan URL endpoint feed

  1. Buka tab Detail untuk feed tersebut.
  2. Di bagian Endpoint Information, salin Feed endpoint URL.
  3. Format URL-nya adalah:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    

    atau

    https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate
    
  4. Simpan URL ini untuk langkah berikutnya.

  5. Klik Done.

Membuat kunci Google Cloud API

Chronicle memerlukan kunci API untuk autentikasi. Buat kunci API terbatas di Konsol Google Cloud.

Buat kunci API

  1. Buka halaman Credentials Google Cloud Console.
  2. Pilih project Anda (project yang terkait dengan instance Chronicle Anda).
  3. Klik Create credentials > API key.
  4. Kunci API dibuat dan ditampilkan dalam dialog.
  5. Klik Edit API key untuk membatasi kunci.

Membatasi kunci API

  1. Di halaman setelan kunci API:
    • Nama: Masukkan nama deskriptif (misalnya, Chronicle Webhook API Key)
  2. Di bagian Pembatasan API:
    1. Pilih Restrict key.
    2. Di drop-down Select APIs, telusuri dan pilih Google SecOps API (atau Chronicle API).
  3. Klik Simpan.
  4. Salin nilai kunci API dari kolom Kunci API di bagian atas halaman.
  5. Simpan kunci API dengan aman.

Mengonfigurasi webhook ManageEngine Exchange Reporter Plus

Buat URL webhook

  • Gabungkan URL endpoint Chronicle, kunci API, dan kunci rahasia:

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    
  • Contoh:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
    

Mengonfigurasi penerusan log di Exchange Reporter Plus

  1. Login ke konsol web ManageEngine Exchange Reporter Plus sebagai administrator.
  2. Buka Setelan > Admin > Setelan Umum > Penerusan Log.
  3. Centang kotak Aktifkan Penerusan Log.
  4. Klik tab Webhook.
  5. Berikan detail konfigurasi berikut:
    • Metode HTTP: Pilih POST.
    • HTTP URL: Tempelkan URL webhook lengkap yang dibuat pada langkah sebelumnya (URL endpoint Chronicle dengan kunci API dan kunci rahasia yang ditambahkan sebagai parameter kueri).
  6. Di bagian Setelan Lanjutan:
    1. Klik Header Permintaan HTTP.
    2. Tambahkan header berikut:
      • Kunci: Content-Type
      • Nilai: application/json
  7. Klik Simpan.

Memverifikasi penerusan log

  1. Setelah menyimpan konfigurasi, Exchange Reporter Plus akan mulai meneruskan log audit ke Google SecOps melalui endpoint webhook.
  2. Login ke konsol Google SecOps dan pastikan log muncul di antarmuka Search dengan label penyerapan MANAGE_ENGINE_REPORTER_PLUS.

Konfigurasi firewall

Pastikan aturan firewall berikut dikonfigurasi.

Keluar dari server Exchange Reporter Plus:

  • Protokol: HTTPS (TCP 443)
  • Tujuan: Endpoint regional Chronicle (malachiteingestion-pa.googleapis.com atau endpoint regional Anda)
  • Tujuan: Pengiriman log ke Google SecOps melalui webhook

Referensi metode autentikasi

Feed webhook Chronicle mendukung beberapa metode autentikasi. Pilih metode yang didukung vendor Anda.

Jika vendor Anda mendukung header HTTP kustom, gunakan metode ini untuk keamanan yang lebih baik.

  • Format permintaan:

    POST <ENDPOINT_URL> HTTP/1.1
    Content-Type: application/json
    x-goog-chronicle-auth: <API_KEY>
    x-chronicle-auth: <SECRET_KEY>
    
    {
            "event": "data",
            "timestamp": "2025-01-15T10:30:00Z"
    }
    

Kelebihan:

  • Kunci dan rahasia API tidak terlihat di URL
  • Lebih aman (header tidak dicatat dalam log akses server web)
  • Metode pilihan jika didukung oleh vendor

Metode 2: Parameter kueri

Jika vendor Anda tidak mendukung header kustom, tambahkan kredensial ke URL.

  • Format URL:

    <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>
    
  • Contoh:

    https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
    
  • Format permintaan:

    POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1
    Content-Type: application/json
    
    {
            "event": "data",
            "timestamp": "2025-01-15T10:30:00Z"
    }
    

Kekurangan: - Kredensial terlihat di URL - Dapat dicatat dalam log akses server web - Kurang aman dibandingkan header

Metode 3: Hybrid (URL + Header)

Beberapa konfigurasi menggunakan kunci API di URL dan kunci rahasia di header.

  • Format permintaan:

    POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1
    Content-Type: application/json
    x-chronicle-auth: <SECRET_KEY>
    
    {
            "event": "data",
            "timestamp": "2025-01-15T10:30:00Z"
    }
    

Nama header autentikasi

Chronicle menerima nama header berikut untuk autentikasi:

Untuk kunci API:

  • x-goog-chronicle-auth (direkomendasikan)
  • X-Goog-Chronicle-Auth (tidak peka huruf besar/kecil)

Untuk kunci rahasia:

  • x-chronicle-auth (direkomendasikan)
  • X-Chronicle-Auth (tidak peka huruf besar/kecil)

Batasan dan praktik terbaik webhook

Batas permintaan

Batas Nilai
Ukuran permintaan maksimum 4 MB
QPS Maks (kueri per detik) 15.000
Waktu tunggu permintaan 30 seconds
Perilaku percobaan ulang Otomatis dengan backoff eksponensial

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
msg.OrganizationId additional.fields Label gabungan dengan kunci "OrganizationId" dan nilai dari msg.OrganizationId; kunci "MailboxGuid" dan nilai dari msg.MailboxGuid; kunci "RecordType" dan nilai dari msg.RecordType
msg.MailboxGuid additional.fields
msg.RecordType additional.fields
msg.CreationTime metadata.event_type Ditetapkan ke nilai dari event_type jika tidak kosong; jika tidak, "USER_UNCATEGORIZED" jika msg.Operation == "Update"; jika tidak, "USER_CREATION" jika msg.Operation == "Create" dan msg.MailboxOwnerUPN tidak kosong; jika tidak, "USER_UNCATEGORIZED" jika msg.Operation == "Create"; jika tidak, "USER_UNCATEGORIZED" jika msg.UserId tidak kosong; jika tidak, "STATUS_UPDATE" jika msg.ClientIP tidak kosong; jika tidak, "GENERIC_EVENT"
msg.Operation metadata.product_event_type Nilai disalin secara langsung
msg.Id metadata.product_log_id Nilai disalin secara langsung
msg.ClientVersion metadata.product_version Nilai dari msg.ClientVersion jika tidak kosong, atau msg.Version dikonversi menjadi string
msg.Version metadata.product_version
AffectedItems.0.InternetMessageId network.email.mail_id Gsub <
AffectedItems network.email.subject Diuraikan sebagai JSON, item yang diekstrak.Subjek, digabungkan jika ditemukan
msg.ClientInfoString network.http.user_agent Nilai dari msg.ClientInfoString jika tidak kosong, atau msg.Client
msg.Client network.http.user_agent
msg.ClientProcessName principal.application Nilai disalin secara langsung
msg.OriginatingServer principal.hostname Diekstrak menggunakan pola grok, jika berhasil, jika tidak, nilai disalin secara langsung
clientIP principal.ip Diekstrak dari msg.ClientIP menggunakan grok
clientPort principal.port Diekstrak dari msg.ClientIP menggunakan grok, dikonversi menjadi bilangan bulat
msg.UserKey principal.user.attribute.labels Tetapkan kunci label ke "UserKey", nilai ke msg.UserKey, digabungkan
msg.UserType principal.user.attribute.roles Menetapkan roles.name ke msg.UserType, digabungkan
msg.UserId principal.user.email_addresses Digabungkan jika msg.UserId cocok dengan regex email
msg.UserId principal.user.userid Nilai disalin secara langsung
msg.MailboxOwnerSid principal.user.windows_sid Nilai dari msg.MailboxOwnerSid jika tidak kosong, atau msg.LogonUserSid
msg.LogonUserSid principal.user.windows_sid
security_result security_result Digabungkan dari hash security_result
security_result_action security_result.action Digabungkan dari security_result_action
msg.ResultStatus security_result.action_details Nilai disalin secara langsung
msg.RecordType security_result.detection_fields Dikonversi menjadi string, tetapkan kunci "RecordType", nilai ke msg.RecordType, digabungkan
msg.OrganizationName target.administrative_domain Nilai disalin secara langsung
msg.DestFolder target.file.full_path Mengekstrak fileId dan filePath menggunakan grok, mengganti garis miring terbalik, menggabungkan sebagai fileId/filePath
host target.hostname Nilai disalin secara langsung
msg.Folder target.process.parent_process.file.full_path Mengekstrak parentFileId dan parentFilePath menggunakan grok, mengganti garis miring terbalik dengan gsubs, menggabungkan sebagai parentFileId/parentFilePath
msg.MailboxOwnerUPN target.user.email_addresses Digabungkan jika cocok dengan regex email
msg.MailboxOwnerUPN target.user.user_display_name Setel jika berisi spasi
msg.MailboxOwnerUPN target.user.userid Tetapkan jika bukan email dan tidak ada spasi
metadata.product_name metadata.product_name Tetapkan ke "Manage Engine"
metadata.vendor_name metadata.vendor_name Setel ke "Manage Engine Reporter Plus"

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