Mengumpulkan log Fortinet Firewall

Didukung di:

Dokumen ini menjelaskan cara mengumpulkan dan menyerap log Fortinet ke Google Security Operations menggunakan Bindplane. Parser mengekstrak kolom dari log, yang menangani format JSON dan SYSLOG (dengan key-value pair). Alat ini menormalisasi kolom yang diekstrak ke dalam Unified Data Model (UDM), termasuk koneksi jaringan, aktivitas pengguna, peristiwa DNS, dan temuan keamanan, sekaligus menangani berbagai format log dan kasus ekstrem.

Sebelum memulai

  • Pastikan Anda memiliki instance Google Security Operations.
  • Pastikan Anda menggunakan Windows 2016 atau yang lebih baru, atau host Linux dengan systemd.
  • Jika berjalan di balik proxy, pastikan port firewall terbuka.
  • Pastikan Anda memiliki akses dengan hak istimewa ke perangkat Fortinet Firewall.

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download File Autentikasi Proses Transfer. 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

Mengonfigurasi agen Bindplane untuk menyerap Syslog dan mengirim ke Google SecOps

  1. Akses file konfigurasi:

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

    ```yaml
    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: FORTINET_FIREWALL
                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 Mendapatkan 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 FortiGate menggunakan CLI

  1. Login ke antarmuka command line di perangkat Fortinet FortiGate Anda.
  2. Ketik perintah berikut dalam urutan yang sama (ganti variabel dengan nilai yang sesuai dengan lingkungan Anda).

    sh full-configuration | grep -f syslogd
    config log syslogd setting
        set status enable
        set server IP_ADDRESS
        set mode udp
        set port PORT
        set facility LOCAL
        set reliable enable or disable
        set source-ip FIEWALL_IP
    end
    
  3. Perbarui nilai berikut:

    • IP_ADDRESS: masukkan alamat IPv4 agen Bindplane.
    • PORT: masukkan nomor port untuk agen Bindplane; misalnya, 514.
    • LOCAL: menetapkan tingkat fasilitas sebagai local6 (Anda juga dapat memilih lainnya sebagai local0, local1, local2, local3, local4, local5, atau local7 untuk log informasi).
    • enable or disable: masukkan disable untuk mengirim data sebagai UDP (Jika Anda menetapkan nilai andal sebagai enable, data akan dikirim sebagai TCP).
    • FIEWALL_IP: masukkan alamat IPv4 Firewall.

Mengonfigurasi Syslog di FortiGate menggunakan GUI

  1. Login ke UI web Fortinet Fortigate.
  2. Buka Log & Laporan > Setelan Log.
  3. Edit konfigurasi berikut:
    • Kirim log ke Syslog: pilih Aktifkan.
    • Alamat IP / FQDN: masukkan alamat IPv4 agen Bindplane.
    • Pembuatan Log Peristiwa: pilih Semua.
    • Local Traffic Log: pilih All.
  4. Buka Policy & Objects > Firewall Policy

    • Aktifkan level log ke Semua (jangan tetapkan ke Nonaktifkan & UTM) untuk setiap kebijakan firewall.
    • Pastikan kebijakan Implicit Deny juga berada di level log All.
  5. Buka CLI dan masukkan perintah berikut.

    1. Dapatkan IP aplikasi firewall Anda:

      Show full-configuration | grep -f syslogd
      
    2. Tetapkan IP & Fasilitas sumber:

      • LOCAL: Tetapkan tingkat fasilitas sebagai local6 (Anda juga dapat memilih lainnya sebagai local0, local1, local2, local3, local4, local5, atau local7 untuk log informasi).
      • FIEWALL_IP: Masukkan alamat IPv4 Firewall.

        config log syslogd setting
        set source-ip FIEWALL_IP
        set facility LOCAL
        end
        
    3. Aktifkan resolve-ip untuk setiap perangkat fortigate:

      config log setting
      set resolve-ip enable
      
  6. Ulangi proses ini untuk setiap perangkat yang perlu diaktifkan di Google SecOps.

Opsional: Opsi konfigurasi Syslog Fortigate tambahan

  1. Untuk FortiGate v5.X, jalankan perintah berikut untuk mengaktifkan log yang diperluas:

    config antivirus profile
        edit default
            set extended-utm-log enable
        end
    config application
        edit default
            set extended-utm-log enable
        end
    config webfilter
        edit default
            set extended-utm-log enable
        end
    config spamfilter
        edit default
            set extended-utm-log enable
        end
    config dlp
        edit default
            set extended-utm-log enable
        end
    config ips
        edit default
            set extended-utm-log enable
        end
    

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
action security_result.action_details Nilai diambil langsung dari kolom action dalam log mentah.
act security_result.action_details Jika kolom action kosong, nilai diambil dari kolom act dalam log mentah.
agent network.http.user_agent, network.http.parsed_user_agent Nilai diambil dari kolom agent. Kolom parsed_user_agent adalah versi kolom user_agent yang diuraikan.
appid security_result1.rule_id Nilai diambil dari kolom appid.
app target.application, network.application_protocol, additional.fields Jika kolom service kosong, nilai diambil dari kolom app. Jika service adalah salah satu dari HTTPS, HTTP, DNS, DHCP, atau SMB, nilai tersebut akan digunakan untuk mengisi network.application_protocol. Jika tidak, nilai ini akan digunakan untuk target.application. Kolom tambahan dengan kunci app dan nilai string kolom app ditambahkan ke additional.fields.
appact additional.fields Kolom tambahan dengan kunci appact dan nilai string kolom appact ditambahkan ke additional.fields.
appcat additional.fields Kolom tambahan dengan kunci appcat dan nilai string kolom appcat ditambahkan ke additional.fields.
applist additional.fields Kolom tambahan dengan kunci applist dan nilai string kolom applist ditambahkan ke additional.fields.
apprisk additional.fields Kolom tambahan dengan kunci apprisk dan nilai string kolom apprisk ditambahkan ke additional.fields.
attack security_result.category_details, security_result.threat_name, security_result.summary, security_result.detection_fields Nilai ditambahkan ke security_result.category_details. Untuk peristiwa IPS/Anomali, peristiwa ini juga digunakan untuk security_result.summary dan security_result.threat_name. Kolom deteksi dengan kunci attack dan nilai kolom attack ditambahkan ke security_result.detection_fields.
attackid security_result.threat_id, security_result1.rule_id, security_result.detection_fields Untuk peristiwa IPS, nilai ini digunakan untuk security_result.threat_id. Untuk peristiwa lainnya, nama ini digunakan untuk security_result1.rule_id. Kolom deteksi dengan kunci attackId dan nilai kolom attackid ditambahkan ke security_result.detection_fields.
cat security_result1.rule_id Untuk peristiwa webfilter, nilai ini digunakan untuk security_result1.rule_id.
catdesc security_result.description, security_result1.rule_name, security_result.category_details Jika ada, kolom ini akan ditambahkan ke kolom msg untuk membuat security_result.description. Ini juga digunakan untuk security_result1.rule_name. Nilai ditambahkan ke security_result.category_details.
changes security_result.summary Kolom changes diuraikan sebagai pasangan nilai kunci. Nilai mode dari changes yang diuraikan digunakan untuk security_result.summary.
connection_type metadata.product_event_type Nilai ditambahkan ke metadata.product_event_type jika ada.
craction security_result.about.labels Label dengan kunci craction dan nilai kolom craction ditambahkan ke security_result.about.labels.
crlevel security_result.severity, event.idm.is_alert, event.idm.is_significant Jika crlevel adalah CRITICAL atau level adalah alert, is_alert dan is_significant akan ditetapkan ke TRUE. Nilai dipetakan ke security_result.severity berdasarkan pemetaan berikut: TINGGI untuk HIGH, SEDANG untuk MEDIUM, RENDAH untuk LOW, KRITIS untuk CRITICAL.
crscore security_result.severity_details Untuk peristiwa IPS, nilai ini digunakan untuk security_result.severity_details.
cs6 principal.user.group_identifiers Nilai ditambahkan ke principal.user.group_identifiers.
date, time timestamp Kolom date dan time digabungkan dan diuraikan untuk membuat timestamp.
devid security_result.detection_fields Kolom deteksi dengan kunci devid dan nilai kolom devid ditambahkan ke security_result.detection_fields.
devname intermediary.hostname, target.hostname, target.asset.hostname, principal.hostname, principal.asset.hostname Jika dvchost ada, dvchost akan digunakan untuk intermediary.hostname. Jika tidak, devname akan digunakan. Untuk peristiwa VPN dengan type sebagai event, peristiwa tersebut digunakan untuk target.hostname. Untuk peristiwa pembuatan pengguna, peristiwa ini digunakan untuk principal.hostname.
deviceSeverity level Nilai ini digunakan untuk mengisi kolom level.
device_product metadata.product_name Nilai ini digunakan untuk metadata.product_name. Jika tidak ada, Fortigate akan digunakan sebagai default.
device_vendor metadata.vendor_name Nilai ini digunakan untuk metadata.vendor_name. Jika tidak ada, Fortinet akan digunakan sebagai default.
device_version metadata.product_version Nilai ini digunakan untuk metadata.product_version.
dhcp_msg network.dhcp.type, metadata.event_type, network.application_protocol Jika nilainya Ack, network.dhcp.type ditetapkan ke ACK, metadata.event_type ditetapkan ke NETWORK_DHCP, dan network.application_protocol ditetapkan ke DHCP.
dir direction Jika direction kosong, nilai diambil dari kolom dir.
direction network.direction Nilai dipetakan ke network.direction berdasarkan pemetaan berikut: INBOUND untuk incoming, inbound, dan response; OUTBOUND untuk outgoing, outbound, dan request.
dst target.ip, target.asset.ip Nilai diuraikan sebagai alamat IP dan digunakan untuk target.ip.
dstauthserver target.hostname, target.asset.hostname Nilai ini digunakan untuk target.hostname.
dstcountry target.location.country_or_region Jika nilainya bukan Reserved atau kosong, nilai tersebut akan digunakan untuk target.location.country_or_region.
dstip target.ip, target.asset.ip Nilai diuraikan sebagai alamat IP dan digunakan untuk target.ip.
dstinetsvc security_result.detection_fields Kolom deteksi dengan kunci dstinetsvc dan nilai kolom dstinetsvc ditambahkan ke security_result.detection_fields.
dstintf security_result.detection_fields Kolom deteksi dengan kunci dstintf dan nilai kolom dstintf ditambahkan ke security_result.detection_fields.
dstintfrole security_result.detection_fields Kolom deteksi dengan kunci dstintfrole dan nilai kolom dstintfrole ditambahkan ke security_result.detection_fields.
dstmac target.mac Nilai diuraikan sebagai alamat MAC dan digunakan untuk target.mac.
dstosname target.platform Jika nilainya adalah WINDOWS, target.platform akan ditetapkan ke WINDOWS.
dstport target.port Nilai dikonversi menjadi bilangan bulat dan digunakan untuk target.port.
dstswversion target.platform_version Nilai ini digunakan untuk target.platform_version.
dstuuid target.resource.product_object_id Nilai ini digunakan untuk target.resource.product_object_id.
dstuser target.user.userid Nilai ini digunakan untuk target.user.userid.
dtype security_result.category_details Nilai ditambahkan ke security_result.category_details.
duration network.session_duration.seconds Jika nilai tidak kosong atau 0, nilai tersebut akan dikonversi menjadi bilangan bulat dan digunakan untuk network.session_duration.seconds.
duser principal.user.userid, target.user.userid, target.user.user_display_name Untuk peristiwa endpoint/sistem, ini digunakan untuk principal.user.userid. Untuk peristiwa login pengguna, ini digunakan untuk target.user.userid. Untuk log berformat CEF, format ini digunakan untuk target.user.user_display_name.
dvchost devname Nilai ini digunakan untuk mengganti kolom devname.
d_uid target.user.userid Nilai yang diekstrak dari kolom request digunakan untuk target.user.userid.
error security_result.severity_details Jika level adalah error, dan error ada, nilai tersebut akan digunakan untuk security_result.severity_details.
eventtime timestamp, metadata.event_timestamp Nilai diuraikan untuk membuat timestamp dan metadata.event_timestamp.
eventtype security_result1.rule_type, security_result.detection_fields Nilai ini digunakan untuk security_result1.rule_type. Untuk peristiwa IPS, nama ini juga digunakan untuk security_result.detection_fields.
filename target.file.full_path Nilai ini digunakan untuk target.file.full_path.
group principal.user.group_identifiers Jika nilainya bukan N/A atau kosong, nilai tersebut akan ditambahkan ke principal.user.group_identifiers.
hostname target.hostname, target.asset.hostname, principal.hostname, principal.asset.hostname Nilai ini digunakan untuk target.hostname. Untuk peristiwa Ack DHCP, parameter ini digunakan untuk principal.hostname.
httpmethod network.http.method Nilai ini digunakan untuk network.http.method.
in network.received_bytes Nilai dikonversi menjadi bilangan bulat tanpa tanda tangan dan digunakan untuk network.received_bytes.
incidentserialno security_result.about.labels Label dengan kunci incidentserialno dan nilai kolom incidentserialno ditambahkan ke security_result.about.labels.
ip principal.ip, principal.asset.ip, network.dhcp.yiaddr Untuk peristiwa endpoint/sistem, nilai ditambahkan ke principal.ip. Untuk peristiwa Ack DHCP, parameter ini digunakan untuk network.dhcp.yiaddr.
ipaddr intermediary.ip Nilai diuraikan sebagai daftar alamat IP yang dipisahkan koma dan ditambahkan ke intermediary.ip.
level security_result.severity, security_result.severity_details, event.idm.is_alert, event.idm.is_significant Jika crlevel adalah CRITICAL atau level adalah alert, is_alert dan is_significant akan ditetapkan ke TRUE. Nilai dipetakan ke security_result.severity berdasarkan pemetaan berikut: TINGGI untuk warning, SEDANG untuk notice, RENDAH untuk information dan info, ERROR untuk error. security_result.severity_details disetel ke level: <value>.
locip principal.ip, principal.asset.ip Untuk peristiwa VPN, nilai ditambahkan ke principal.ip.
locport dstport Nilai ini digunakan untuk mengganti kolom dstport.
logdesc metadata.description Nilai ini digunakan untuk metadata.description.
logid metadata.product_log_id, additional.fields Nilai ini digunakan untuk metadata.product_log_id. Kolom tambahan dengan kunci logid dan nilai string kolom logid ditambahkan ke additional.fields.
log_id metadata.product_log_id Nilai ini digunakan untuk metadata.product_log_id.
metadata.event_type metadata.event_type Nilai ditetapkan berdasarkan jenis peristiwa dan kolom lainnya. Setelan defaultnya adalah GENERIC_EVENT. Dapat ditetapkan ke NETWORK_CONNECTION, USER_UNCATEGORIZED, NETWORK_HTTP, USER_LOGIN, USER_LOGOUT, NETWORK_DNS, NETWORK_DHCP, STATUS_UNCATEGORIZED, NETWORK_UNCATEGORIZED, USER_CREATION, USER_DELETION.
metadata.log_type metadata.log_type Nilai ditetapkan ke FORTINET_FIREWALL.
metadata.product_event_type metadata.product_event_type Nilai ditetapkan ke <type> - <subtype>. Jika ada, connection_type akan ditambahkan ke nilai. Untuk log berformat CEF, setelan ini ditetapkan ke [<device_event_class_id>] - <event_name> <severity>.
metadata.product_name metadata.product_name Nilai ini ditetapkan ke Fortigate secara default. Jika device_product ada, nilai tersebut akan digunakan.
metadata.product_version metadata.product_version Nilai diambil dari kolom device_version jika ada.
metadata.vendor_name metadata.vendor_name Nilai ini ditetapkan ke Fortinet secara default. Jika device_vendor ada, nilai tersebut akan digunakan.
mode security_result.summary Nilai yang diekstrak dari kolom changes digunakan untuk security_result.summary.
msg metadata.description, security_result.summary, security_result.description, security_result1.rule_name Jika logdesc tidak ada, nilai akan digunakan untuk metadata.description. Untuk peristiwa sistem, ini digunakan untuk security_result.summary. Untuk peristiwa webfilter, peristiwa ini ditambahkan di awal security_result.description. Untuk peristiwa virus dengan msg adalah File is infected., peristiwa ini digunakan bersama dengan virus untuk mengisi security_result.summary. Untuk peristiwa app-ctrl, peristiwa ini digunakan untuk security_result1.rule_name.
name principal.hostname, principal.asset.hostname Nilai ini digunakan untuk principal.hostname.
nas principal.nat_ip Nilai diuraikan sebagai alamat IP dan digunakan untuk principal.nat_ip.
operation security_result.action_details, security_result.action Nilai ini digunakan untuk security_result.action_details. Nilai ini juga dipetakan ke security_result.action berdasarkan pemetaan berikut: ALLOW untuk accept, passthrough, pass, permit, detected, close, dan edit; BLOCK untuk deny, dropped, dan blocked; FAIL untuk timeout; UNKNOWN_ACTION untuk nilai lainnya.
os principal.platform, principal.platform_version Jika nilai berisi Windows, principal.platform ditetapkan ke WINDOWS dan versi diekstrak serta digunakan untuk principal.platform_version.
osname principal.platform Jika nilainya adalah WINDOWS, principal.platform akan ditetapkan ke WINDOWS.
osversion principal.platform_version Nilai ini digunakan untuk principal.platform_version.
out network.sent_bytes Nilai dikonversi menjadi bilangan bulat tanpa tanda tangan dan digunakan untuk network.sent_bytes.
path security_result.description Nilai ini digunakan untuk security_result.description.
performed_on security_result.about.application Nilai ini digunakan untuk security_result.about.application.
policyid security_result.rule_id Nilai ini digunakan untuk security_result.rule_id.
policyname security_result.rule_name Nilai ini digunakan untuk security_result.rule_name.
policytype security_result.rule_type Nilai ini digunakan untuk security_result.rule_type.
poluuid additional.fields Kolom tambahan dengan kunci poluuid dan nilai string kolom poluuid ditambahkan ke additional.fields.
pri security_result.severity_details Nilai ini digunakan untuk security_result.severity_details.
profile target.resource.name, target.resource.resource_type Nilai ini digunakan untuk target.resource.name dan target.resource.resource_type ditetapkan ke ACCESS_POLICY.
proto network.ip_protocol Nilai dipetakan ke network.ip_protocol berdasarkan pemetaan berikut: UDP untuk 17, TCP untuk 6, IP6IN4 untuk 41, ICMP untuk 1, dan jika service adalah PING atau berisi ICMP.
protocol network.application_protocol Jika nilainya adalah udp, network.ip_protocol akan ditetapkan ke UDP. Jika nilainya adalah tcp, network.ip_protocol akan ditetapkan ke TCP. Jika tidak, jika tidak kosong, nilai akan diuraikan dan digunakan untuk network.application_protocol.
qclass network.dns.questions.class Jika nilainya adalah IN, network.dns.questions.class akan ditetapkan ke 1.
qname network.dns.questions.name Nilai ini digunakan untuk network.dns.questions.name.
qtypeval network.dns.questions.type Nilai dikonversi menjadi bilangan bulat tanpa tanda tangan dan diganti namanya menjadi network.dns.questions.type.
rcvdbyte network.received_bytes Nilai dikonversi menjadi bilangan bulat tanpa tanda tangan dan digunakan untuk network.received_bytes.
rcvdpkt additional.fields Kolom tambahan dengan kunci receivedPackets dan nilai string kolom rcvdpkt ditambahkan ke additional.fields.
reason security_result.description Jika nilainya bukan N/A atau kosong, nilai tersebut akan digunakan untuk security_result.description.
referralurl network.http.referral_url Nilai ini digunakan untuk network.http.referral_url.
ref metadata.url_back_to_product Nilai ini digunakan untuk metadata.url_back_to_product.
remip principal.ip, principal.asset.ip Untuk peristiwa VPN, nilai ditambahkan ke principal.ip.
remport srcport Nilai ini digunakan untuk mengganti kolom srcport.
request target.user.userid Jika nilai berisi duid, duid akan diekstrak dan digunakan untuk target.user.userid.
sentbyte network.sent_bytes Nilai dikonversi menjadi bilangan bulat tanpa tanda tangan dan digunakan untuk network.sent_bytes.
sentpkt additional.fields Kolom tambahan dengan kunci sentPackets dan nilai string kolom sentpkt ditambahkan ke additional.fields.
server target.hostname, target.asset.hostname Untuk peristiwa pengguna, nilai ini digunakan untuk target.hostname.
service network.application_protocol, target.application Jika nilainya adalah salah satu dari HTTPS, HTTP, DNS, DHCP, atau SMB, nilai tersebut akan digunakan untuk network.application_protocol. Jika tidak, nilai ini akan digunakan untuk target.application.
sessionid network.session_id Nilai ini digunakan untuk network.session_id.
session_id network.session_id Nilai ini digunakan untuk network.session_id.
severity security_result.severity, security_result.detection_fields Untuk log berformat CEF, nilai ini digunakan untuk security_result.severity. Kolom deteksi dengan kunci severity dan nilai kolom severity ditambahkan ke security_result.detection_fields.

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