Mengumpulkan log OpenCanary
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
- Buka Setelan SIEM > Feed.
- Klik Tambahkan baru.
- Di kolom Nama feed, masukkan nama untuk feed (misalnya, OpenCanary Logs).
- Pilih Webhook sebagai Jenis sumber.
- Pilih OpenCanary sebagai Jenis log.
- Klik Berikutnya.
- 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.
- Pemisah pemisahan: pembatas yang digunakan untuk memisahkan baris log, seperti
- Klik Berikutnya.
- Tinjau konfigurasi feed di layar Finalize, lalu klik Submit.
- Klik Buat Kunci Rahasia untuk membuat kunci rahasia guna mengautentikasi feed ini.
- 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.
- Dari tab Detail, salin URL endpoint feed dari kolom Endpoint Information. Anda perlu menentukan URL endpoint ini di aplikasi klien.
- Klik Done.
Membuat kunci API untuk feed webhook
Buka Konsol Google Cloud > Kredensial.
Klik Create credentials, lalu pilih API key.
Batasi akses kunci API ke Google Security Operations API.
Menentukan URL endpoint
- Di aplikasi klien, tentukan URL endpoint HTTPS yang diberikan di feed webhook.
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.
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
Temukan file konfigurasi OpenCanary,
config.json
.Buka file
config.json
dengan editor teks.Temukan bagian berlabel alerter dalam file konfigurasi.
Jika pemberitahuan
webhook
sudah ada, ubah. Jika tidak, tambahkan entri baru untuk pemberitahuanwebhook
.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>"
}
}
}
- Simpan file
config.json
tersebut. - 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.