Mengumpulkan log FortiClient Fortinet

Didukung di:

Dokumen ini menjelaskan cara menyerap log Fortinet FortiClient ke Google Security Operations menggunakan agen Bindplane.

FortiClient adalah solusi keamanan endpoint yang menyediakan kemampuan antivirus, pemfilteran web, VPN, pemindaian kerentanan, dan firewall aplikasi untuk endpoint Windows, macOS, Linux, dan Chromebook. FortiClient dikelola secara terpusat melalui FortiClient EMS (Endpoint Management Server), yang menerapkan kebijakan keamanan dan profil konfigurasi ke endpoint.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Windows Server 2016 atau yang lebih baru, atau host Linux dengan systemd
  • Konektivitas jaringan antara agen Bindplane dan endpoint FortiClient
  • Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
  • Akses istimewa ke konsol pengelolaan FortiClient EMS
  • FortiClient EMS versi 7.0 atau yang lebih baru dengan endpoint FortiClient berlisensi

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Klik Download untuk mendownload file autentikasi penyerapan.
  4. Simpan file dengan aman di sistem tempat agen 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

Instal agen Bindplane di sistem operasi Windows atau Linux Anda sesuai dengan petunjuk berikut.

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
    
  3. Tunggu hingga penginstalan selesai.

  4. Verifikasi penginstalan dengan menjalankan:

    sc query observiq-otel-collector
    

Layanan akan ditampilkan sebagai RUNNING.

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
    
  3. Tunggu hingga penginstalan selesai.

  4. Verifikasi penginstalan dengan menjalankan:

    sudo systemctl status observiq-otel-collector
    

Layanan akan ditampilkan sebagai aktif (berjalan).

Referensi penginstalan tambahan

Untuk opsi penginstalan dan pemecahan masalah tambahan, lihat Panduan penginstalan agen BindPlane.

Mengonfigurasi agen BindPlane untuk menyerap syslog dan mengirimkannya ke Google SecOps

Cari file konfigurasi

Linux:

sudo nano /etc/bindplane-agent/config.yaml

Windows:

notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"

Edit file konfigurasi

Ganti seluruh konten config.yaml dengan konfigurasi berikut:

receivers:
    udplog:
    listen_address: "0.0.0.0:514"

exporters:
    chronicle/forticlient:
    compression: gzip
    creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
    customer_id: 'your-customer-id-here'
    endpoint: malachiteingestion-pa.googleapis.com
    log_type: FORTINET_FORTICLIENT
    raw_log_field: body
    ingestion_labels:
        env: production
        source: forticlient

service:
    pipelines:
    logs/forticlient_to_chronicle:
        receivers:
        - udplog
        exporters:
        - chronicle/forticlient

Parameter konfigurasi

Ganti placeholder berikut:

Konfigurasi penerima:

  • listen_address: Alamat IP dan port yang akan diproses. Gunakan 0.0.0.0:514 untuk memantau semua antarmuka di port 514.

Konfigurasi eksportir:

  • creds_file_path: Jalur lengkap ke file autentikasi penyerapan:
    • Linux: /etc/bindplane-agent/ingestion-auth.json
    • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
  • customer_id: ID Pelanggan dari konsol Google SecOps
  • endpoint: URL endpoint regional:
    • Amerika Serikat: malachiteingestion-pa.googleapis.com
    • Eropa: europe-malachiteingestion-pa.googleapis.com
    • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
    • Lihat Endpoint Regional untuk mengetahui daftar lengkapnya
  • log_type: FORTINET_FORTICLIENT
  • ingestion_labels: Label opsional dalam format YAML

Simpan file konfigurasi

Setelah mengedit, simpan file:

  • Linux: Tekan Ctrl+O, lalu Enter, lalu Ctrl+X
  • Windows: Klik File > Save

Mulai ulang agen BindPlane untuk menerapkan perubahan

  • Linux

    sudo systemctl restart observiq-otel-collector
    
    1. Pastikan layanan sedang berjalan:

      sudo systemctl status observiq-otel-collector
      
    2. Periksa log untuk mengetahui error:

      sudo journalctl -u observiq-otel-collector -f
      
  • Windows

    Pilih salah satu opsi berikut:

    • Menggunakan Command Prompt atau PowerShell sebagai administrator:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • Menggunakan konsol Layanan:

      1. Tekan Win+R, ketik services.msc, lalu tekan Enter.
      2. Temukan observIQ OpenTelemetry Collector.
      3. Klik kanan, lalu pilih Mulai Ulang.

      4. Pastikan layanan sedang berjalan:

        sc query observiq-otel-collector
        
      5. Periksa log untuk mengetahui error:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

Mengonfigurasi logging endpoint FortiClient untuk mengirim log ke agen BindPlane

Pencatatan log endpoint FortiClient dikonfigurasi secara terpusat melalui FortiClient EMS dengan mengedit profil endpoint menggunakan konfigurasi XML. EMS mengirimkan konfigurasi logging ke endpoint FortiClient, yang kemudian mengirimkan log langsung ke pendengar syslog agen BindPlane.

Login ke FortiClient EMS

  1. Login ke konsol web FortiClient EMS.
  2. Buka Endpoint Profiles > Manage Profiles.

Mengedit atau membuat profil endpoint

  1. Pilih profil yang ada untuk diedit, atau klik Tambahkan untuk membuat profil baru.
  2. Di kolom Nama Profil, masukkan nama deskriptif (misalnya, Chronicle-Logging-Profile).
  3. Klik Lanjutan.
  4. Klik tab Konfigurasi XML.
  5. Klik Edit.

Mengonfigurasi logging jarak jauh di XML

EMS menampilkan dua panel. Gunakan panel di sebelah kanan untuk mengedit konfigurasi XML.

Temukan bagian <log_settings> dalam <system>. Jika tidak ada, tambahkan. Dalam <log_settings>, temukan atau tambahkan bagian <remote_logging> dan konfigurasikan sebagai berikut:

<forticlient_configuration>
    <system>
    <log_settings>
        <onnet_local_logging>1</onnet_local_logging>
        <level>6</level>
        <log_events>ipsecvpn,sslvpn,scheduler,update,firewall,av,proxy,shield,webfilter,endpoint,fssoma,configd,vuln,sandboxing,antiexploit</log_events>
        <remote_logging>
        <log_upload_enabled>1</log_upload_enabled>
        <log_protocol>syslog</log_protocol>
        <netlog_server>192.168.1.100</netlog_server>
        <netlog_categories>7</netlog_categories>
        <log_upload_freq_minutes>5</log_upload_freq_minutes>
        </remote_logging>
    </log_settings>
    </system>
</forticlient_configuration>

Parameter konfigurasi:

  • <log_upload_enabled>: Tetapkan ke 1 untuk mengaktifkan logging jarak jauh.
  • <log_protocol>: Setel ke syslog untuk mengirim log ke server syslog. Gunakan faz untuk mengirim log ke FortiAnalyzer.
  • <netlog_server>: Masukkan alamat IP host agen Bindplane (misalnya, 192.168.1.100). Parameter ini hanya digunakan jika <log_protocol> disetel ke syslog.
  • <netlog_categories>: Masukkan bitmask kategori log yang akan diupload:
    • 1 = Log traffic
    • 2 = Log kerentanan
    • 4 = Log peristiwa
    • 7 = Semua kategori (1 + 2 + 4)
  • <log_upload_freq_minutes>: Masukkan frekuensi upload log dalam menit (misalnya, 5 untuk setiap 5 menit).
  • <level>: Level logging FortiClient. Masukkan salah satu dari berikut ini:
    • 0 = Darurat
    • 1 = Pemberitahuan
    • 2 = Kritis
    • 3 = Error
    • 4 = Peringatan
    • 5 = Notifikasi
    • 6 = Informasi (direkomendasikan)
    • 7 = Debug
  • <log_events>: Daftar peristiwa atau proses FortiClient yang dipisahkan koma untuk dicatat. Sertakan peristiwa yang ingin Anda ambil (misalnya, ipsecvpn,sslvpn,firewall,av,webfilter,endpoint).

Simpan profil

  1. Klik Uji XML untuk memvalidasi konfigurasi XML.
  2. Klik Simpan untuk menyimpan profil.

Menerapkan profil ke endpoint

  1. Buka Endpoint Policies > Manage Policies.
  2. Pilih kebijakan yang ada atau klik Tambahkan untuk membuat kebijakan baru.
  3. Di dropdown Profile, pilih profil yang Anda buat atau edit.
  4. Di bagian Endpoint Groups, pilih grup endpoint tempat Anda ingin menerapkan kebijakan.
  5. Klik Simpan.

EMS mengirimkan konfigurasi profil ke endpoint dengan komunikasi Telemetry berikutnya. Endpoint FortiClient akan mulai mengirim log ke pemroses syslog agen BindPlane.

Memverifikasi penerusan log

  1. Di host agen Bindplane, periksa log agen untuk memverifikasi bahwa log sedang diterima:

    Linux:

    sudo journalctl -u observiq-otel-collector -f
    

    Windows:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    
  2. Di endpoint FortiClient, verifikasi bahwa logging jarak jauh diaktifkan dengan memeriksa log FortiClient:

    Windows:

    C:\Program Files\Fortinet\FortiClient\logs\
    

    macOS:

    /Library/Application Support/Fortinet/FortiClient/logs/
    

    Linux:

    /var/log/forticlient/
    
  3. Di konsol Google SecOps, pastikan log FortiClient sedang di-ingest:

    • Buka Penelusuran.
    • Masukkan kueri penelusuran untuk log FortiClient (misalnya, metadata.log_type = "FORTINET_FORTICLIENT").
    • Pastikan log muncul di hasil penelusuran.

Tabel pemetaan UDM

Kolom log Pemetaan UDM Logika
emsserial, devid, usingpolicy, itime, fctsn, logver, site, fctver, browsetime, event_id, SubjectUserName, SubjectLogonId, ThreadID additional.fields Label dibuat dengan kunci dan nilai dari setiap kolom, digabungkan ke additional.fields
timestamp metadata.collected_timestamp Diuraikan sebagai stempel waktu UNIX
ts metadata.event_timestamp Diuraikan dengan filter tanggal menggunakan format "MMM d HH:mm:ss", "MMM d HH:mm:ss", "yyyy-MM-dd HH:mm:ss"
deviceip, client_ip, devicemac, hostname, user, uid metadata.event_type Ditetapkan ke USER_RESOURCE_ACCESS jika user/uid ada dan machine id ada; USER_UNCATEGORIZED jika machine id ada; GENERIC_EVENT jika tidak
eventtype metadata.product_event_type Nilai disalin secara langsung
id metadata.product_log_id Dikonversi menjadi string, nilai disalin
pelanggan network.application_protocol Huruf besar, lalu ditetapkan ke protokol yang telah ditentukan jika cocok dengan daftar (misalnya, "SSH" untuk "22", "SSH", "SSHD"; "HTTP" untuk "80", "8080", "HTTP"), atau ke layanan jika ada dalam daftar yang diperluas, atau kosong
direction network.direction Setel ke INBOUND jika cocok dengan (?i)inbound; OUTBOUND jika cocok dengan (?i)outbound
proto network.ip_protocol Tetapkan ke "TCP" jika proto == "6"
rcvdbyte network.received_bytes Dikonversi menjadi uinteger, nilai disalin jika tidak kosong/0
sentbyte network.sent_bytes Dikonversi menjadi uinteger, nilai disalin jika tidak kosong/0
sessionid network.session_id Nilai disalin secara langsung
pcdomain principal.administrative_domain Nilai disalin secara langsung
srcproduct principal.application Nilai disalin secara langsung
hostname principal.hostname Nilai disalin secara langsung
deviceip, client_ip principal.ip Nilai dari deviceip jika tidak kosong, atau dari client_ip jika IP valid
devicemac principal.mac Dikonversi ke format MAC, nilai disalin jika valid
os, source principal.platform Setel ke WINDOWS jika os/source cocok dengan (?i)windows; MAC jika cocok dengan (?i)mac|ios; LINUX jika cocok dengan (?i)linux
source_ver principal.platform_version Nilai disalin secara langsung
srcport principal.port Dikonversi menjadi bilangan bulat, nilai disalin
ProcessId principal.process.pid Nilai disalin secara langsung
srcname, source_type, type principal.resource.attribute.labels Label yang dibuat dengan kunci dan nilai dari setiap kolom, digabungkan ke attribute.labels
devname principal.resource.name Nilai disalin secara langsung
ProviderGuid principal.resource.product_object_id Nilai disalin secara langsung
subtype principal.resource.resource_subtype Nilai disalin secara langsung
url principal.url Nilai disalin secara langsung
uid, fctuid principal.user.product_object_id Nilai dari uid jika tidak kosong, atau fctuid
pengguna principal.user.user_display_name Nilai disalin secara langsung
pengguna principal.user.userid Nilai disalin secara langsung
SubjectUserSid principal.user.windows_sid Nilai disalin jika cocok dengan regex SID
utmaction security_result.action Disetel ke ALLOW jika dalam [accept,allow,passthrough,pass,permit,detected]; BLOCK jika dalam [deny,dropped,blocked,block]; UNKNOWN_ACTION jika tidak
utmevent security_result.category_details Nilai disalin secara langsung
utmaction security_result.description Ditetapkan ke "utmaction:"
userinitiated security_result.detection_fields Label dibuat dengan kunci "userinitiated" dan nilai dari userinitiated, digabungkan
level security_result.severity Tetapkan ke INFORMATIONAL jika level == "info"
ancaman security_result.threat_name Nilai disalin secara langsung
emshostname, remotename target.hostname Nilai dari emshostname jika tidak kosong, atau remotename
dstip target.ip Mengekstrak IP yang valid dari dstip
dstport target.port Dikonversi menjadi bilangan bulat, nilai disalin jika bukan 0
metadata.product_name Tetapkan ke "FORTINET_FORTICLIENT"
metadata.vendor_name Tetapkan ke "FORTINET_FORTICLIENT"

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