Mengumpulkan log Symantec VIP Authentication Hub

Didukung di:

Dokumen ini menjelaskan cara menyerap log Symantec VIP Authentication Hub ke Google Security Operations menggunakan Bindplane. Kode parser pertama-tama membersihkan dan memproses pesan log input, mengonversi kolom tertentu, dan menyusun ulang data dari key-value pair. Kemudian, ekstrak informasi yang relevan dari berbagai kolom menggunakan pola grok dan logika bersyarat, lalu petakan ke atribut yang sesuai dalam Model Data Terpadu (UDM) untuk representasi peristiwa keamanan yang standar.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Windows 2016 atau yang lebih baru atau host Linux dengan systemd
  • Jika dijalankan di belakang proxy, port firewall terbuka
  • Akses istimewa ke Symantec VIP Authentication Hub

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat BindPlane akan diinstal.

Mendapatkan ID pelanggan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Profil.
  3. Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.

Menginstal agen Bindplane

Penginstalan Windows

  1. Buka Command Prompt atau PowerShell sebagai administrator.
  2. Jalankan perintah berikut:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Penginstalan Linux

  1. Buka terminal dengan hak istimewa root atau sudo.
  2. Jalankan perintah berikut:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Referensi penginstalan tambahan

Untuk opsi penginstalan tambahan, lihat panduan penginstalan.

Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps

  1. Akses file konfigurasi:
    • Cari file config.yaml. Biasanya, file ini berada di direktori /etc/bindplane-agent/ di Linux atau di direktori penginstalan di Windows.
    • Buka file menggunakan editor teks (misalnya, nano, vi, atau Notepad).
  2. Edit file config.yaml sebagai berikut:

    receivers:
        udplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:514"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: 'SYMANTEC_VIP_AUTHHUB'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Ganti port dan alamat IP sesuai kebutuhan di infrastruktur Anda.

  4. Ganti <customer_id> dengan ID pelanggan yang sebenarnya.

  5. Perbarui /path/to/ingestion-authentication-file.json ke jalur tempat file autentikasi disimpan di bagian Dapatkan file autentikasi penyerapan Google SecOps.

Mulai ulang agen Bindplane untuk menerapkan perubahan

  • Untuk memulai ulang agen Bindplane di Linux, jalankan perintah berikut:

    sudo systemctl restart bindplane-agent
    
  • Untuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services atau memasukkan perintah berikut:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Mengonfigurasi Syslog di Symantec VIP Authentication Hub

  1. Login ke UI web Symantec VIP Gateway Anda.
  2. Buka Logs > Syslog Configuration.
  3. Jika Anda mengonfigurasi Syslog untuk pertama kalinya, Anda akan diminta untuk mengonfigurasi setelan Syslog. Pilih Ya.
  4. Jika Anda telah mengonfigurasi Syslog, klik Edit di bagian bawah halaman.
  5. Berikan detail konfigurasi berikut:
    • Fasilitas Syslog: Pilih LOG_LOCAL0.
    • Host Syslog: Masukkan alamat IP agen Bindplane.
    • Port Syslog: Masukkan nomor port agen Bindplane (misalnya, 514 untuk UDP).
  6. Klik Simpan.
  7. Buka Identity providers > Self Service Portal Configuration.
  8. Edit detail konfigurasi berikut:
    • Tingkat Logging: Pilih Info.
    • Enable Syslog: Pilih Yes.
  9. Klik Kirim.
  10. Buka Identity providers > VIP Manager Authentication Configuration.
  11. Edit detail konfigurasi berikut:
    • Tingkat Logging: Pilih Info.
    • Enable Syslog: Pilih Yes.
  12. Klik Kirim.
  13. Buka User Store > LDAP Directory Synchronization.
  14. Edit detail konfigurasi berikut:
    • Tingkat Log: Pilih Info.
    • Enable Syslog: Pilih Yes.
  15. Klik Kirim.

Tabel pemetaan UDM

Kolom log Pemetaan UDM Logika
/auth/v1/authenticate security_result.detection_fields[].value Nilai diambil dari kolom /auth/v1/authenticate dalam log mentah dan ditetapkan ke objek security_result.detection_fields dengan kunci api.
__isAuditIdLcmIdStore additional.fields[].value.string_value Nilai diambil dari kolom __isAuditIdLcmIdStore dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci __isAuditIdLcmIdStore.
accessTokenScopes security_result.detection_fields[].value Nilai diambil dari kolom accessTokenScopes dalam log mentah dan ditetapkan ke objek security_result.detection_fields dengan kunci accessTokenScopes.
accessTokenTid security_result.detection_fields[].value Nilai diambil dari kolom accessTokenTid dalam log mentah dan ditetapkan ke objek security_result.detection_fields dengan kunci accessTokenTid.
api security_result.detection_fields[].value Nilai diambil dari kolom api dalam log mentah dan ditetapkan ke objek security_result.detection_fields dengan kunci api.
appId additional.fields[].value.string_value Nilai diambil dari kolom appId dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci appId.
appName principal.application Nilai diambil dari kolom appName dalam log mentah.
azpName additional.fields[].value.string_value Nilai diambil dari kolom azpName dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci azpName.
bytes_sent network.sent_bytes Nilai diambil dari kolom bytes_sent dalam log mentah.
client principal.asset.ip, principal.ip Alamat IP diekstrak dari kolom client di log mentah menggunakan pola grok dan ditambahkan ke kolom principal.ip dan principal.asset.ip.
clientId additional.fields[].value.string_value, principal.user.userid Nilai diambil dari kolom clientId dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci clientId. Jika kolom clientId tidak kosong, kolom tersebut juga digunakan untuk mengisi kolom principal.user.userid.
clientIp principal.asset.ip, principal.ip Nilai diambil dari kolom clientIp di log mentah dan ditambahkan ke kolom principal.ip dan principal.asset.ip.
clientTid additional.fields[].value.string_value Nilai diambil dari kolom clientTid dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci clientTid.
clientTxnId additional.fields[].value.string_value Nilai diambil dari kolom clientTxnId dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci clientTxnId.
contentType additional.fields[].value.string_value Nilai diambil dari kolom contentType dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci contentType.
countryISO principal.location.country_or_region Nilai diambil dari kolom countryISO dalam log mentah.
eventId metadata.product_event_type Nilai diambil dari kolom eventId dalam log mentah.
flowStateId additional.fields[].value.string_value Nilai diambil dari kolom flowStateId dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci flowStateId.
geo.city_name principal.location.city Nilai diambil dari kolom geo.city_name dalam log mentah.
geo.country_name principal.location.country_or_region Nilai diambil dari kolom geo.country_name dalam log mentah.
geo.location.lat principal.location.region_coordinates.latitude Nilai diambil dari kolom geo.location.lat di log mentah, dikonversi menjadi float, dan diganti namanya menjadi principal.location.region_coordinates.latitude.
geo.location.lon principal.location.region_coordinates.longitude Nilai diambil dari kolom geo.location.lon di log mentah, dikonversi menjadi float, dan diganti namanya menjadi principal.location.region_coordinates.longitude.
guid metadata.product_log_id Nilai diambil dari kolom guid dalam log mentah.
host principal.asset.hostname, principal.hostname Nilai diambil dari kolom host dalam log mentah, tanpa tanda petik, dan ditambahkan ke kolom principal.hostname dan principal.asset.hostname.
httpMethod network.http.method Nilai diambil dari kolom httpMethod dalam log mentah.
httpReferrer network.http.referral_url Nilai diambil dari kolom httpReferrer dalam log mentah.
identitySourceId additional.fields[].value.string_value Nilai diambil dari kolom identitySourceId dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci identitySourceId.
internal-user-sync-ext-resourceGuid target.user.userid Nilai diambil dari kolom internal-user-sync-ext-resourceGuid dalam log mentah.
internal-user-sync-ext-resourceName target.user.email_addresses Nilai diambil dari kolom internal-user-sync-ext-resourceName di log mentah dan ditambahkan ke kolom target.user.email_addresses.
issuerUrl target.url Nilai diambil dari kolom issuerUrl dalam log mentah.
kubernetes.annotations.cni.projectcalico.org_containerID target.resource.product_object_id Nilai diambil dari kolom kubernetes.annotations.cni.projectcalico.org_containerID dalam log mentah.
kubernetes.annotations.cni.projectcalico.org_podIP target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.annotations.cni.projectcalico.org_podIP dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci podIP.
kubernetes.annotations.cni.projectcalico.org_podIPs target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.annotations.cni.projectcalico.org_podIPs dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci podIPs.
kubernetes.container_hash target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.container_hash dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci container_hash.
kubernetes.container_image target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.container_image dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci container_image.
kubernetes.container_name target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.container_name dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci container_name.
kubernetes.docker_id target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.docker_id dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci docker_id.
kubernetes.host principal.asset.hostname, principal.hostname Nilai diambil dari kolom kubernetes.host di log mentah dan ditambahkan ke kolom principal.hostname dan principal.asset.hostname.
kubernetes.labels.app Kolom ini tidak dipetakan ke objek IDM di UDM.
kubernetes.labels.app.kubernetes.io/component target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.labels.app.kubernetes.io/component dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci io_component.
kubernetes.labels.app.kubernetes.io/instance target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.labels.app.kubernetes.io/instance dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci io_instance.
kubernetes.labels.app.kubernetes.io/managed-by target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.labels.app.kubernetes.io/managed-by dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci io_managed-by.
kubernetes.labels.app.kubernetes.io/name target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.labels.app.kubernetes.io/name dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci io_name.
kubernetes.labels.app.kubernetes.io/part-of target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.labels.app.kubernetes.io/part-of dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci io_part-of.
kubernetes.labels.app.kubernetes.io/version target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.labels.app.kubernetes.io/version dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci io_version.
kubernetes.labels.helm.sh/chart target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.labels.helm.sh/chart dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci helm_sh_chart.
kubernetes.labels.helmChartName target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.labels.helmChartName dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci helmChartName.
kubernetes.labels.imageTag target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.labels.imageTag dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci imageTag.
kubernetes.labels.pod-template-hash target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.labels.pod-template-hash dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci pod-template-hash.
kubernetes.namespace_name target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.namespace_name dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci namespace_name.
kubernetes.pod_id target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.pod_id dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci pod_id.
kubernetes.pod_name target.resource.attribute.labels[].value Nilai diambil dari kolom kubernetes.pod_name dalam log mentah dan ditetapkan ke objek target.resource.attribute.labels dengan kunci pod_name.
level security_result.severity Jika kolom level dalam log mentah cocok dengan notice atau info (tidak peka huruf besar/kecil), kolom security_result.severity akan ditetapkan ke INFORMATIONAL.
log security_result.description, level, kv_data Kolom level dan kv_data diekstrak dari kolom log di log mentah menggunakan pola grok. Kolom security_result.description diisi dengan seluruh kolom log.
logtag additional.fields[].value.string_value Nilai diambil dari kolom logtag dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci logtag.
method network.http.method Nilai diambil dari kolom method dalam log mentah.
msg metadata.event_type, security_result.description Nilai diambil dari kolom msg dalam log mentah dan digunakan untuk mengisi kolom security_result.description. Kolom metadata.event_type ditentukan berdasarkan konten kolom msg: * USER_CREATION jika msg berisi Internal user created or updated. * USER_LOGIN jika msg berisi Authorization Initiated Succesfully, Authentication Initiated Successfully, atau Authentication Successful. * USER_RESOURCE_ACCESS jika msg berisi Token Generated atau token verified. * NETWORK_CONNECTION jika has_principal dan has_target benar. * STATUS_UPDATE jika has_principal benar. * GENERIC_EVENT jika tidak.
path principal.file.full_path Nilai diambil dari kolom path dalam log mentah.
principalId additional.fields[].value.string_value, principal.user.userid Nilai diambil dari kolom principalId dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci principalId. Jika kolom principalId bukan clientId dan tidak kosong, kolom tersebut juga digunakan untuk mengisi kolom principal.user.userid.
principalType additional.fields[].value.string_value Nilai diambil dari kolom principalType dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci principalType.
protocol network.application_protocol Jika kolom protocol dalam log mentah cocok dengan HTTP (tidak peka huruf besar/kecil), kolom network.application_protocol akan ditetapkan ke HTTP.
referrer network.http.referral_url Nilai diambil dari kolom referrer di log mentah, tanpa tanda petik, dan ditetapkan ke kolom network.http.referral_url.
relVersion metadata.product_version Nilai diambil dari kolom relVersion dalam log mentah.
remoteAddr additional.fields[].value.string_value Nilai diambil dari kolom remoteAddr dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci remoteAddr.
requestId additional.fields[].value.string_value Nilai diambil dari kolom requestId dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci requestId.
requestTime additional.fields[].value.string_value Nilai diambil dari kolom requestTime dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci requestTime.
responseCode network.http.response_code Nilai numerik diekstrak dari kolom responseCode dalam log mentah menggunakan pola grok, dikonversi menjadi bilangan bulat, dan ditetapkan ke kolom network.http.response_code.
request method, path, protocol Kolom method, path, dan protocol diekstrak dari kolom request dalam log mentah menggunakan pola grok setelah menghapus tanda kutip.
server target.asset.hostname, target.hostname Nilai diambil dari kolom server di log mentah dan ditambahkan ke kolom target.hostname dan target.asset.hostname.
service additional.fields[].value.string_value Nilai diambil dari kolom service dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci service.
status network.http.response_code Nilai diambil dari kolom status di log mentah, dikonversi menjadi bilangan bulat, dan ditetapkan ke kolom network.http.response_code.
stream additional.fields[].value.string_value Nilai diambil dari kolom stream dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci stream.
sub additional.fields[].value.string_value Nilai diambil dari kolom sub dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci sub.
subType additional.fields[].value.string_value Nilai diambil dari kolom subType dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci subType.
tid additional.fields[].value.string_value Nilai diambil dari kolom tid dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci tid.
timestamp metadata.event_timestamp Nilai diambil dari kolom timestamp dalam log mentah dan diuraikan sebagai stempel waktu ISO8601.
tname additional.fields[].value.string_value Nilai diambil dari kolom tname dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci tname.
txnId additional.fields[].value.string_value Nilai diambil dari kolom txnId dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci txnId.
type additional.fields[].value.string_value Nilai diambil dari kolom type dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci type.
userAgent network.http.parsed_user_agent, network.http.user_agent Nilai diambil dari kolom userAgent di log mentah dan ditetapkan ke kolom network.http.user_agent dan network.http.parsed_user_agent. Kolom network.http.parsed_user_agent kemudian dikonversi menjadi objek agen pengguna yang diuraikan.
userDN additional.fields[].value.string_value Nilai diambil dari kolom userDN dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci userDN.
userGuid additional.fields[].value.string_value Nilai diambil dari kolom userGuid dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci userGuid.
userIdpGuid additional.fields[].value.string_value Nilai diambil dari kolom userIdpGuid dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci userIdpGuid.
userIP principal.asset.ip, principal.ip, target.asset.ip, target.ip, intermediary.ip Alamat IP diekstrak dari kolom userIP dalam log mentah menggunakan pola grok. Alamat IP pertama ditambahkan ke kolom principal.ip dan principal.asset.ip. Alamat IP kedua ditambahkan ke kolom target.ip dan target.asset.ip. Alamat IP ketiga ditambahkan ke kolom intermediary.ip.
userLoginId target.user.email_addresses Jika kolom userLoginId dalam log mentah tidak kosong dan cocok dengan pola alamat email, kolom tersebut akan ditambahkan ke kolom target.user.email_addresses.
userLoginIdAttributeMappingName target.user.user_display_name Nilai diambil dari kolom userLoginIdAttributeMappingName dalam log mentah.
userRiskLevel additional.fields[].value.string_value Nilai diambil dari kolom userRiskLevel dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci userRiskLevel.
userRiskScore additional.fields[].value.string_value Nilai diambil dari kolom userRiskScore dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci userRiskScore.
userIp principal.asset.ip, principal.ip Nilai diambil dari kolom userIp di log mentah dan ditambahkan ke kolom principal.ip dan principal.asset.ip.
userUniversalId additional.fields[].value.string_value Nilai diambil dari kolom userUniversalId dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci userUniversalId.
vhost additional.fields[].value.string_value Nilai diambil dari kolom vhost dalam log mentah dan ditetapkan ke objek additional.fields dengan kunci vhost.
T/A extensions.auth.type Nilai ditetapkan ke SSO jika kolom metadata.event_type adalah USER_LOGIN.
T/A metadata.log_type Nilai ditetapkan ke SYMANTEC_VIP_AUTHHUB.

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