Mengumpulkan log FortiClient Fortinet
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
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Klik Download untuk mendownload file autentikasi penyerapan.
Simpan file dengan aman di sistem tempat agen BindPlane akan diinstal.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Profil.
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
- Buka Command Prompt atau PowerShell sebagai administrator.
Jalankan perintah berikut:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietTunggu hingga penginstalan selesai.
Verifikasi penginstalan dengan menjalankan:
sc query observiq-otel-collector
Layanan akan ditampilkan sebagai RUNNING.
Penginstalan Linux
- Buka terminal dengan hak istimewa root atau sudo.
Jalankan perintah berikut:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shTunggu hingga penginstalan selesai.
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. Gunakan0.0.0.0:514untuk 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
- Linux:
customer_id: ID Pelanggan dari konsol Google SecOpsendpoint: 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
- Amerika Serikat:
log_type:FORTINET_FORTICLIENTingestion_labels: Label opsional dalam format YAML
Simpan file konfigurasi
Setelah mengedit, simpan file:
- Linux: Tekan
Ctrl+O, laluEnter, laluCtrl+X - Windows: Klik File > Save
Mulai ulang agen BindPlane untuk menerapkan perubahan
Linux
sudo systemctl restart observiq-otel-collectorPastikan layanan sedang berjalan:
sudo systemctl status observiq-otel-collectorPeriksa 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-collectorMenggunakan konsol Layanan:
- Tekan
Win+R, ketikservices.msc, lalu tekan Enter. - Temukan observIQ OpenTelemetry Collector.
Klik kanan, lalu pilih Mulai Ulang.
Pastikan layanan sedang berjalan:
sc query observiq-otel-collectorPeriksa log untuk mengetahui error:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Tekan
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
- Login ke konsol web FortiClient EMS.
- Buka Endpoint Profiles > Manage Profiles.
Mengedit atau membuat profil endpoint
- Pilih profil yang ada untuk diedit, atau klik Tambahkan untuk membuat profil baru.
- Di kolom Nama Profil, masukkan nama deskriptif (misalnya,
Chronicle-Logging-Profile). - Klik Lanjutan.
- Klik tab Konfigurasi XML.
- 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 ke1untuk mengaktifkan logging jarak jauh.<log_protocol>: Setel kesysloguntuk mengirim log ke server syslog. Gunakanfazuntuk 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 kesyslog.<netlog_categories>: Masukkan bitmask kategori log yang akan diupload:1= Log traffic2= Log kerentanan4= Log peristiwa7= Semua kategori (1 + 2 + 4)
<log_upload_freq_minutes>: Masukkan frekuensi upload log dalam menit (misalnya,5untuk setiap 5 menit).<level>: Level logging FortiClient. Masukkan salah satu dari berikut ini:0= Darurat1= Pemberitahuan2= Kritis3= Error4= Peringatan5= Notifikasi6= 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
- Klik Uji XML untuk memvalidasi konfigurasi XML.
- Klik Simpan untuk menyimpan profil.
Menerapkan profil ke endpoint
- Buka Endpoint Policies > Manage Policies.
- Pilih kebijakan yang ada atau klik Tambahkan untuk membuat kebijakan baru.
- Di dropdown Profile, pilih profil yang Anda buat atau edit.
- Di bagian Endpoint Groups, pilih grup endpoint tempat Anda ingin menerapkan kebijakan.
- 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
Di host agen Bindplane, periksa log agen untuk memverifikasi bahwa log sedang diterima:
Linux:
sudo journalctl -u observiq-otel-collector -fWindows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"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/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.