Mengumpulkan log F5 Shape

Didukung di:

Dokumen ini menjelaskan cara menyerap log F5 Shape ke Google Security Operations menggunakan Google Cloud Storage V2.

F5 Distributed Cloud Bot Defense (sebelumnya Shape Security) melindungi aplikasi dari serangan otomatis dengan mengidentifikasi dan mengurangi bot berbahaya. Bot Defense menggunakan JavaScript dan SDK Seluler native untuk mengumpulkan telemetri dari browser klien dan perangkat seluler, serta memeriksa telemetri ini sebelum permintaan mencapai aplikasi Anda. Layanan ini menyediakan dasbor dan pelaporan terintegrasi untuk melihat informasi mendetail tentang traffic yang dianalisis, termasuk peristiwa keamanan, log akses, dan log audit.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Project GCP dengan Cloud Storage API diaktifkan
  • Izin untuk membuat dan mengelola bucket GCS
  • Izin untuk mengelola kebijakan IAM di bucket GCS
  • Akses istimewa ke Konsol F5 Distributed Cloud
  • Akun F5 Distributed Cloud dengan akses layanan Multi-Cloud Network Connect atau Shared Configuration

Membuat bucket Google Cloud Storage

  1. Buka Konsol Google Cloud.
  2. Pilih project Anda atau buat project baru.
  3. Di menu navigasi, buka Cloud Storage > Buckets.
  4. Klik Create bucket.
  5. Berikan detail konfigurasi berikut:

    Setelan Nilai
    Beri nama bucket Anda Masukkan nama yang unik secara global (misalnya, f5-xc-logs).
    Location type Pilih berdasarkan kebutuhan Anda (Region, Dual-region, Multi-region).
    Location Pilih lokasi (misalnya, us-central1).
    Kelas penyimpanan Standar (direkomendasikan untuk log yang sering diakses).
    Access control Seragam (direkomendasikan).
    Alat perlindungan Opsional: Aktifkan pembuatan versi objek atau kebijakan retensi.
  6. Klik Create.

Buat kredensial F5 Shape API

F5 Distributed Cloud menggunakan Sertifikat API (mTLS) atau Token API untuk autentikasi. Sertifikat API direkomendasikan untuk meningkatkan keamanan.

Membuat Sertifikat API

  1. Login ke F5 Distributed Cloud Console.
  2. Dari halaman beranda Konsol, pilih Administrasi.
  3. Di menu navigasi sebelah kiri, buka Pengelolaan Pribadi > Kredensial.
  4. Klik Add Credentials.
  5. Di bagian Metadata, masukkan Nama untuk sertifikat Anda (misalnya, secops-integration).
  6. Dari daftar Credential Type, pilih API Certificate.
  7. Masukkan Sandi dan konfirmasi di kolom Konfirmasi Sandi.
  8. Pilih Tanggal Berakhir dari daftar kalender.

  9. Klik Download untuk membuat dan mendownload sertifikat dalam format file .p12.

  10. Simpan file sertifikat dan sandi yang didownload dengan aman untuk digunakan nanti.

Membuat Kredensial Cloud GCP di F5 Distributed Cloud

F5 Distributed Cloud memerlukan Google Cloud kredensial akun layanan untuk menulis log ke bucket GCS Anda.

Buat akun layanan Google Cloud

  1. Di GCP Console, buka IAM & Admin > Service Accounts.
  2. Klik Create Service Account.
  3. Berikan detail konfigurasi berikut:
    • Nama akun layanan: Masukkan f5-xc-log-writer (atau nama pilihan Anda).
    • Deskripsi akun layanan: Masukkan Service account for F5 Distributed Cloud to write logs to GCS.
  4. Klik Create and Continue.
  5. Di bagian Berikan akun layanan ini akses ke project:
    1. Klik Pilih peran.
    2. Telusuri dan pilih Storage Object Admin.
  6. Klik Lanjutkan.
  7. Klik Done.

Memberikan izin IAM pada bucket GCS

  1. Buka Cloud Storage > Buckets.
  2. Klik nama bucket Anda (misalnya, f5-xc-logs).
  3. Buka tab Izin.
  4. Klik Grant access.
  5. Berikan detail konfigurasi berikut:
    • Tambahkan prinsipal: Masukkan email akun layanan (misalnya, f5-xc-log-writer@PROJECT_ID.iam.gserviceaccount.com).
    • Tetapkan peran: Pilih Storage Object Admin.
  6. Klik Simpan.

Buat kunci akun layanan

  1. Di GCP Console, buka IAM & Admin > Service Accounts.
  2. Temukan akun layanan (misalnya, f5-xc-log-writer), lalu klik akun tersebut.
  3. Buka tab Kunci.
  4. Klik Tambahkan Kunci > Buat kunci baru.
  5. Pilih JSON sebagai jenis kunci.
  6. Klik Create.
  7. File kunci JSON akan didownload secara otomatis. Simpan file ini dengan aman.

Menambahkan Google Cloud Kredensial Cloud ke F5 Distributed Cloud

  1. Di F5 Distributed Cloud Console, dari halaman beranda, pilih Multi-Cloud Network Connect atau Shared Configuration.
  2. Di menu navigasi sebelah kiri, buka Kelola > Pengelolaan Situs > Kredensial Cloud.
  3. Klik Add Cloud Credentials.
  4. Di bagian Metadata, masukkan Nama (misalnya, gcp-secops-logs).
  5. Dari daftar Cloud Credentials Type, pilih GCP Credentials.
  6. Di bagian GCP Credentials, klik Configure.
  7. Di bagian Service Account Key:
    1. Dari daftar Secret Type, pilih Blindfolded Secret.
    2. Dari daftar Tindakan, pilih Blindfold New Secret.
    3. Dari daftar Jenis Kebijakan, pilih Bawaan.
    4. Di kolom Secret to Blindfold, tempel seluruh konten file kunci JSON yang Anda download.
  8. Klik Terapkan.
  9. Klik Simpan dan Keluar.

Mengonfigurasi Penerima Log Global untuk GCS

F5 Distributed Cloud Global Log Receiver melakukan streaming log ke GCS setiap 5 menit dalam format NDJSON (JSON yang dibatasi baris baru).

Membuat Penerima Log Global

  1. Di F5 Distributed Cloud Console, dari halaman beranda, pilih Multi-Cloud Network Connect atau Shared Configuration.
    • Untuk Multi-Cloud Network Connect: Buka Manage > Log Management > Global Log Receiver.
    • Untuk Konfigurasi Bersama: Buka Kelola > Penerima Log Global.
  2. Klik Tambahkan Penerima Log Global.
  3. Di bagian Metadata, masukkan Nama (misalnya, secops-gcs-receiver).
  4. Secara opsional, tambahkan Label dan Deskripsi.
  5. Dari daftar Jenis Log, pilih jenis log yang ingin Anda kumpulkan:

    • Log Permintaan: Log akses HTTP dari load balancer
    • Peristiwa Keamanan: Peristiwa keamanan Bot Defense dan WAF
    • Log Audit: Log audit konfigurasi dan administratif
    • Log Permintaan DNS: Log kueri DNS
  6. Dari daftar Log Message Selection:

    • Jika menggunakan layanan Multi-Cloud Network Connect, pilih Pilih log dari namespace saat ini (namespace sistem).
    • Jika menggunakan layanan Konfigurasi Bersama, pilih salah satu opsi berikut:
      • Pilih log dari namespace saat ini: Mengirim log hanya dari namespace yang dibagikan.
      • Pilih log dari semua namespace: Mengirim log dari semua namespace.
      • Pilih log di namespace tertentu: Masukkan nama namespace tertentu, lalu klik Tambahkan item untuk menambahkan lebih banyak.
  7. Dari daftar Receiver Configuration, pilih GCP Bucket.

  8. Di bagian GCP Bucket, berikan konfigurasi berikut:

    • Nama Bucket GCP: Masukkan nama bucket GCS Anda (misalnya, f5-xc-logs).
    • Kredensial Cloud GCP: Dari daftar, pilih kredensial cloud yang Anda buat (misalnya, gcp-secops-logs).

Mengonfigurasi setelan lanjutan (opsional)

  1. Klik tombol Show Advanced Fields.
  2. Di bagian Batch Options, konfigurasikan hal berikut (opsional):

    • Opsi Waktu Tunggu Batch: Pilih Waktu Tunggu dalam Detik dan masukkan nilai (default: 300 detik).
    • Peristiwa Maksimum Batch: Pilih Peristiwa Maksimum dan masukkan nilai antara 32 dan 2000 (opsional).
    • Batch Byte: Pilih Byte Maks dan masukkan nilai antara 4096 dan 1048576 (default: 10485760 byte / 10 MB).

Menyelesaikan dan menguji konfigurasi

  1. Klik Save and Exit untuk membuat Global Log Receiver.
  2. Dalam daftar Global Log Receiver, temukan penerima Anda (misalnya, secops-gcs-receiver).
  3. Di kolom Tindakan, klik tiga titik ..., lalu pilih Uji Koneksi.
  4. Tunggu hingga pengujian selesai. Pesan berhasil menunjukkan bahwa koneksi berfungsi.

  5. Verifikasi bahwa log sedang ditulis ke GCS:

    1. Buka Cloud Storage > Buckets di GCP Console.
    2. Klik nama bucket Anda (misalnya, f5-xc-logs).
    3. Dalam waktu 5-10 menit, Anda akan melihat folder yang dibuat dengan struktur berikut:
      • Folder harian: YYYY-MM-DD/
      • Subfolder per jam: YYYY-MM-DD/HH/
      • File log: YYYY-MM-DD/HH/logs_YYYYMMDDHHMMSS.ndjson.gz

Mengonfigurasi daftar yang diizinkan firewall

F5 Distributed Cloud memerlukan rentang IP tertentu yang diizinkan di firewall Anda untuk pengiriman log.

Tambahkan rentang alamat IP berikut ke daftar yang diizinkan firewall Anda:

  • 193.16.236.64/29
  • 185.160.8.152/29

Mengambil akun layanan Google SecOps

Google SecOps menggunakan akun layanan unik untuk membaca data dari bucket GCS Anda. Anda harus memberi akun layanan ini akses ke bucket Anda.

Dapatkan email akun layanan

  1. Buka Setelan SIEM > Feed.
  2. Klik Tambahkan Feed Baru.
  3. Klik Konfigurasi satu feed.
  4. Di kolom Nama feed, masukkan nama untuk feed (misalnya, F5 Distributed Cloud Bot Defense).
  5. Pilih Google Cloud Storage V2 sebagai Source type.
  6. Pilih F5_SHAPE sebagai Jenis log.
  7. Klik Get Service Account. Email akun layanan yang unik akan ditampilkan, misalnya:

    secops-12345678@secops-gcp-prod.iam.gserviceaccount.com
    
  8. Salin alamat email untuk digunakan di langkah berikutnya.

  9. Klik Berikutnya.

  10. Tentukan nilai untuk parameter input berikut:

    • URL bucket penyimpanan: Masukkan URI bucket GCS dengan jalur awalan:

      gs://f5-xc-logs/
      
      • Ganti f5-xc-logs dengan nama bucket GCS Anda yang sebenarnya.
      • Jika Anda mengonfigurasi awalan tertentu di Penerima Log Global, sertakan awalan tersebut dalam jalur (misalnya, gs://f5-xc-logs/bot-defense/).
    • Opsi penghapusan sumber: Pilih opsi penghapusan sesuai preferensi Anda:

      • Jangan pernah: Tidak pernah menghapus file apa pun setelah transfer (direkomendasikan untuk pengujian).
      • Hapus file yang ditransfer: Menghapus file setelah transfer berhasil.
      • Hapus file yang ditransfer dan direktori kosong: Menghapus file dan direktori kosong setelah transfer berhasil.

    • Usia File Maksimum: Menyertakan file yang dimodifikasi dalam beberapa hari terakhir (defaultnya adalah 180 hari).

    • Namespace aset: Namespace aset.

    • Label penyerapan: Label yang akan diterapkan ke peristiwa dari feed ini.

  11. Klik Berikutnya.

  12. Tinjau konfigurasi feed baru Anda di layar Selesaikan, lalu klik Kirim.

Memberikan izin IAM ke akun layanan Google SecOps

Akun layanan Google SecOps memerlukan peran Storage Object Viewer di bucket GCS Anda.

  1. Buka Cloud Storage > Buckets.
  2. Klik nama bucket Anda (misalnya, f5-xc-logs).
  3. Buka tab Izin.
  4. Klik Grant access.
  5. Berikan detail konfigurasi berikut:
    • Add principals: Tempel email akun layanan Google SecOps
    • Tetapkan peran: Pilih Storage Object Viewer
  6. Klik Simpan.

Tabel pemetaan UDM

Kolom log Pemetaan UDM Logika
msg.requestHeaders.Proxy-Client-IP, msg.requestHeaders.WF-Forwarded-For, msg.requestHeaders.X-Forwarded-For, msg.requestHeaders.wl-proxy-client-ip, msg.hashedUserAgent, msg.transactionId, msg.hashedUsername, msg.dcgShapeFailedOn, ShapeShifterId, eventType, eventId, latRequest, latResponse, latTotal, latRspWait, count, latEccWait additional.fields Digabungkan dari label yang dibuat dari berbagai kolom
perantara perantara Nilai disalin secara langsung jika tidak kosong
deskripsi metadata.description Nilai disalin secara langsung
target, has_principal_machine metadata.event_type Ditetapkan ke NETWORK_HTTP jika target != "", atau STATUS_UPDATE jika has_principal_machine == true, atau GENERIC_EVENT
aplikasi network.application_protocol Nilai huruf besar
requestMethod, msg.method network.http.method Nilai dari requestMethod jika tidak kosong, atau msg.method
requestClientApplication, msg.requestHeaders.User-Agent network.http.parsed_user_agent Nilai dari requestClientApplication jika tidak kosong, atau msg.requestHeaders.User-Agent, yang dikonversi menjadi agen pengguna yang diuraikan
requestContext, msg.requestHeaders.Referer network.http.referral_url Nilai dari requestContext jika tidak kosong, atau msg.requestHeaders.Referer
msg.sseResponseCode, prCode network.http.response_code Nilai dari msg.sseResponseCode jika tidak kosong, atau prCode, dikonversi menjadi bilangan bulat
requestClientApplication, msg.requestHeaders.User-Agent network.http.user_agent Nilai dari requestClientApplication jika tidak kosong, atau msg.requestHeaders.User-Agent
requestHeader.x-shape-src-virtual observer.ip Nilai disalin secara langsung
utama utama Nilai disalin secara langsung
msg.host principal.asset.hostname Nilai disalin secara langsung
src, msg.src, msg.trueClientIP, requestHeader.X-Forwarded-For principal.asset.ip Nilai dari src jika tidak kosong, jika tidak, msg.src, jika tidak, msg.trueClientIP, jika tidak, IP pertama dari X-Forwarded-For jika != src
msg.host principal.hostname Nilai disalin secara langsung
src, msg.src, msg.trueClientIP, requestHeader.X-Forwarded-For principal.ip Nilai dari src jika tidak kosong, jika tidak, msg.src, jika tidak, msg.trueClientIP, jika tidak, IP pertama dari X-Forwarded-For jika != src
msg.requestHeaders principal.resource.attribute.labels Digabungkan dari key-value pair di msg.requestHeaders
msg.uri principal.url Nilai disalin secara langsung
security_result security_result Nilai disalin secara langsung
deviceExternalId security_result.about.asset_id Nilai disalin secara langsung
flowLabel, agentLabel, requestHeader.Content-Length, requestHeader.Content-Type, requestHeader.Accept, requestHeader.Accept-Encoding, browserType, accountInfo, requestHeader.Via, asn, tid, ctag, requestHeader.Cache-Control, transactionResult security_result.about.labels Digabungkan dari label yang dibuat dari berbagai kolom
act, msg.transactionResult security_result.action Ditetapkan ke ALLOW jika act cocok dengan PASS dan isAttack, jika tidak UNKNOWN_ACTION; atau ALLOW jika msg.transactionResult == Success, BLOCK jika Failure
act, msg.transactionResult security_result.action_details Nilai dari act jika tidak kosong, atau msg.transactionResult
tingkat keseriusan, security_result.severity Setel ke TINGGI jika dalam Error, error, warning; KRITIS jika cocok dengan critical; SEDANG jika notice; RENDAH jika dalam information, info, INFO
tingkat keseriusan, security_result.severity_details Nilai disalin secara langsung
attackCause security_result.threat_name Nilai disalin secara langsung
target target Nilai disalin secara langsung
appName target.application Nilai disalin secara langsung
dst, msg.dst target.asset.ip Nilai dari dst jika tidak kosong, atau msg.dst
dhost target.hostname Nilai disalin secara langsung
dst, msg.dst target.ip Nilai dari dst jika tidak kosong, atau msg.dst
countryName target.location.country_or_region Nilai disalin secara langsung
dpt target.port Dikonversi ke bilangan bulat
msg.responseHeaders target.resource.attribute.labels Digabungkan dari key-value pair di msg.responseHeaders
permintaan target.url Nilai disalin secara langsung
requestHeader.X-Forwarded-For intermediary.ip Ditetapkan ke IP berikutnya dari array X-Forwarded-For
metadata.product_name Tetapkan ke "Bentuk"
metadata.vendor_name Disetel ke "F5"

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