Mengumpulkan log OpenCanary

Didukung di:

Ringkasan

Parser ini mengekstrak kolom dari log SYSLOG dan JSON OpenCanary, menormalisasinya ke dalam format UDM, dan memperkaya data dengan kolom turunan seperti metadata.event_type dan security_result.severity. Fungsi ini menangani berbagai format log, melakukan validasi alamat IP, dan memetakan kolom ke objek UDM yang sesuai seperti principal, target, dan network.

Sebelum memulai

  • Pastikan Anda memiliki instance Google Chronicle.
  • Pastikan Anda memiliki akses dengan hak istimewa ke OpenCanary.

Mengonfigurasi feed di Google SecOps untuk menyerap log OpenCanary

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan baru.
  3. Di kolom Nama feed, masukkan nama untuk feed (misalnya, OpenCanary Logs).
  4. Pilih Webhook sebagai Jenis sumber.
  5. Pilih OpenCanary sebagai Jenis log.
  6. Klik Berikutnya.
  7. Opsional: Tentukan nilai untuk parameter input berikut:
    • Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti \n.
    • Namespace aset: namespace aset.
    • Label penyerapan: label yang diterapkan ke peristiwa dari feed ini.
  8. Klik Berikutnya.
  9. Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
  10. Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
  11. Salin dan simpan kunci rahasia. Anda tidak dapat melihat kunci rahasia ini lagi. Jika perlu, Anda dapat membuat ulang kunci rahasia baru, tetapi tindakan ini akan membuat kunci rahasia sebelumnya tidak berlaku lagi.
  12. Dari tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
  13. Klik Done.

Membuat kunci API untuk feed webhook

  1. Buka Konsol Google Cloud > Kredensial.

    Buka Kredensial

  2. Klik Create credentials, lalu pilih API key.

  3. Batasi akses kunci API ke Google Security Operations API.

Menentukan URL endpoint

  1. Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
  2. Aktifkan autentikasi dengan menentukan kunci API dan kunci secret sebagai bagian dari header kustom dalam format berikut:

    X-goog-api-key = API_KEY
    X-Webhook-Access-Key = SECRET
    

    Rekomendasi: Tentukan kunci API sebagai header, bukan menentukannya di URL.

  3. Jika klien webhook Anda tidak mendukung header kustom, Anda dapat menentukan kunci API dan kunci rahasia menggunakan parameter kueri dalam format berikut:

    ENDPOINT_URL?key=API_KEY&secret=SECRET
    

    Ganti kode berikut:

    • ENDPOINT_URL: URL endpoint feed.
    • API_KEY: kunci API untuk mengautentikasi ke Google Security Operations.
    • SECRET: kunci rahasia yang Anda buat untuk mengautentikasi feed.

Menyiapkan Webhook OpenCanary untuk Google SecOps

  1. Temukan file konfigurasi OpenCanary, config.json.

  2. Buka file config.json dengan editor teks.

  3. Temukan bagian berlabel alerter dalam file konfigurasi.

  4. Jika pemberitahuan webhook sudah ada, ubah. Jika tidak, tambahkan entri baru untuk pemberitahuan webhook.

  5. Gunakan konfigurasi berikut (ganti ENDPOINT_URL, SECRET, dan API_KEY dengan nilai Anda):

"handlers": {
    "Webhook": {
        "class": "opencanary.logger.WebhookHandler",
        "url": "<ENDPOINT_URL>",
        "method": "POST",
        "data": {"message": "%(message)s"},
        "status_code": 200,
        "headers": {
            "X-Webhook-Access-Key": "<SECRET>",
            "X-goog-api-key": "<API_KEY>"
         }
    }
}
  1. Simpan file config.json tersebut.
  2. Mulai ulang layanan OpenCanary untuk menerapkan perubahan. (misalnya, sudo systemctl restart opencanary).

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
dst_host target.asset.ip Kolom dst_host log mentah dipetakan ke UDM. Juga dipetakan ke target.ip.
dst_host target.ip Kolom dst_host log mentah dipetakan ke UDM. Juga dipetakan ke target.asset.ip.
dst_port target.port Kolom dst_port log mentah dikonversi menjadi string, lalu menjadi bilangan bulat dan dipetakan ke UDM.
local_time metadata.event_timestamp Kolom local_time log mentah digunakan untuk mengisi metadata.event_timestamp di UDM. Parser menggunakan create_time dari objek batch jika kolom local_time tidak ada.
local_time_adjusted security_result.detection_fields Kolom local_time_adjusted log mentah ditambahkan sebagai pasangan nilai kunci ke array security_result.detection_fields di UDM.
logdata.COMMUNITY_STRING security_result.detection_fields Kolom logdata.COMMUNITY_STRING log mentah ditambahkan sebagai pasangan nilai kunci ke array security_result.detection_fields di UDM.
logdata.DOMAIN principal.administrative_domain Kolom logdata.DOMAIN log mentah dipetakan ke UDM.
logdata.FILENAME target.file.full_path Kolom logdata.FILENAME log mentah dipetakan ke UDM.
logdata.HOSTNAME principal.asset.hostname Jika bukan alamat IP, kolom logdata.HOSTNAME akan dipetakan ke UDM. Juga dipetakan ke principal.hostname.
logdata.HOSTNAME principal.asset.ip Jika kolom logdata.HOSTNAME adalah alamat IP, kolom tersebut akan dipetakan ke UDM. Juga dipetakan ke principal.ip.
logdata.HOSTNAME principal.hostname Jika bukan alamat IP, kolom logdata.HOSTNAME akan dipetakan ke UDM. Juga dipetakan ke principal.asset.hostname.
logdata.HOSTNAME principal.ip Jika kolom logdata.HOSTNAME adalah alamat IP, kolom tersebut akan dipetakan ke UDM. Juga dipetakan ke principal.asset.ip.
logdata.LOCALNAME principal.asset.hostname Kolom logdata.LOCALNAME log mentah dipetakan ke UDM. Juga dipetakan ke principal.hostname.
logdata.LOCALNAME principal.hostname Kolom logdata.LOCALNAME log mentah dipetakan ke UDM. Juga dipetakan ke principal.asset.hostname.
logdata.LOCALVERSION principal.platform_version Kolom logdata.LOCALVERSION log mentah dipetakan ke UDM.
logdata.PASSWORD extensions.auth.mechanism Kehadiran kolom logdata.PASSWORD memicu parser untuk menetapkan extensions.auth.mechanism ke USERNAME_PASSWORD di UDM.
logdata.PATH network.http.referral_url Kolom logdata.PATH log mentah dipetakan ke UDM.
logdata.REMOTENAME target.asset.hostname Kolom logdata.REMOTENAME log mentah dipetakan ke UDM. Juga dipetakan ke target.hostname.
logdata.REMOTENAME target.hostname Kolom logdata.REMOTENAME log mentah dipetakan ke UDM. Juga dipetakan ke target.asset.hostname.
logdata.REMOTEVERSION target.platform_version Kolom logdata.REMOTEVERSION log mentah dipetakan ke UDM.
logdata.SMBVER network.application_protocol Kehadiran kolom logdata.SMBVER memicu parser untuk menetapkan network.application_protocol ke SMB di UDM.
logdata.USERAGENT network.http.parsed_user_agent Kolom logdata.USERAGENT log mentah dikonversi menjadi agen pengguna yang diuraikan dan dipetakan ke UDM.
logdata.USERAGENT network.http.user_agent Kolom logdata.USERAGENT log mentah dipetakan ke UDM.
logdata.USERNAME target.user.userid Kolom logdata.USERNAME log mentah dipetakan ke UDM.
loglevel security_result.severity Kolom loglevel log mentah menentukan security_result.severity di UDM. WARNING dipetakan ke HIGH, INFO/INFORMATION dipetakan ke LOW.
logtype security_result.detection_fields Kolom logtype log mentah ditambahkan sebagai pasangan nilai kunci ke array security_result.detection_fields di UDM.
node_id principal.asset.asset_id Kolom node_id log mentah diawali dengan "id:" dan dipetakan ke UDM.
src_host principal.asset.ip Kolom src_host log mentah dipetakan ke UDM. Juga dipetakan ke principal.ip.
src_host principal.ip Kolom src_host log mentah dipetakan ke UDM. Juga dipetakan ke principal.asset.ip.
src_port principal.port Kolom src_port log mentah dikonversi menjadi bilangan bulat dan dipetakan ke UDM.
utc_time security_result.detection_fields Kolom utc_time log mentah ditambahkan sebagai pasangan nilai kunci ke array security_result.detection_fields di UDM.

Perubahan

2024-03-11

  • Menghapus karakter yang tidak valid di akhir log JSON untuk mengurai log yang tidak diuraikan.
  • Menyelaraskan pemetaan "principal.ip" dan "principal.asset.ip".
  • Pemetaan "target.ip" dan "target.asset.ip" yang diselaraskan.

2024-02-08

  • Parser yang baru dibuat.