Raccogliere i log WAF di FortiWeb

Supportato in:

Questo documento descrive come raccogliere i log del web application firewall (WAF) FortiWeb utilizzando un forwarder Google Security Operations.

Per saperne di più, consulta la Panoramica sull'importazione dei dati in Google Security Operations.

Un'etichetta di importazione identifica il parser che normalizza i dati di log non elaborati in formato UDM strutturato. Le informazioni contenute in questo documento si applicano al parser con l'etichetta di importazione FORTINET_FORTIWEB.

Configura i log WAF FortiWeb

Per configurare FortiWeb WAF in modo che invii i log a un forwarder Google Security Operations:

Crea una policy syslog

  1. Accedi alla console Fortinet FortiWeb.
  2. Nella console Fortinet FortiWeb, seleziona Log & report > Log policy (Criteri di log) > Syslog policy (Criteri Syslog).
  3. Fai clic su Crea nuova.
  4. Nella finestra Nuova policy syslog visualizzata, procedi nel seguente modo:

    • Nel campo Nome criterio, specifica un nome per il criterio che vuoi utilizzare nella configurazione.
    • Nel campo Indirizzo IP, specifica l'indirizzo IP o il nome host del server syslog remoto.
    • Nel campo Porta, specifica la porta per il server syslog.
    • Deseleziona la casella di controllo Abilita formato CSV, se è selezionata.
  5. Fai clic su OK.

Attiva i tipi di syslog e il livello di log

  1. Nella console Fortinet FortiWeb, seleziona Log & report > Log config > Global log settings.
  2. Nella finestra Impostazioni log globali visualizzata, seleziona la casella di controllo Syslog e procedi nel seguente modo:

    • Nell'elenco Policy Syslog, seleziona la policy Syslog creata in precedenza.
    • Nell'elenco Livello log, scegli il livello di gravità minimo per i log da raccogliere.
    • Nell'elenco Struttura, seleziona la struttura di log.
  3. Fai clic su Applica.

Crea un trigger

  1. Nella console Fortinet FortiWeb, seleziona Log & report > Log policy > Trigger policy.
  2. Fai clic su Crea nuova.
  3. Nella finestra Nuova policy di attivazione visualizzata, procedi nel seguente modo:

    • Nel campo Nome criterio, specifica un nome per il criterio che vuoi utilizzare nella configurazione.
    • Nell'elenco Policy Syslog, seleziona la policy Syslog creata in precedenza.
  4. Fai clic su OK.

    Aggiorna le norme syslog con il trigger appena creato per assicurarti che tutti gli eventi richiesti vengano registrati nel programma di inoltro syslog di Google Security Operations.

Configura il programma di inoltro di Google Security Operations per importare i log WAF di FortiWeb

  1. Vai a Impostazioni SIEM > Forwarder.
  2. Fai clic su Aggiungi nuovo inoltro.
  3. Nel campo Nome forwarder, inserisci un nome univoco per il forwarder.
  4. Fai clic su Invia. Il forwarder viene aggiunto e viene visualizzata la finestra Aggiungi configurazione del raccoglitore.
  5. Nel campo Nome del raccoglitore, digita un nome.
  6. Seleziona Fortinet Web Application Firewall come Tipo di log.
  7. Seleziona Syslog come Tipo di raccoglitore.
  8. Configura i seguenti parametri di input obbligatori:
    • Protocollo: specifica il protocollo di connessione utilizzato dal raccoglitore per ascoltare i dati syslog.
    • Indirizzo: specifica l'indirizzo IP o il nome host di destinazione in cui risiede il raccoglitore e ascolta i dati syslog.
    • Porta: specifica la porta di destinazione in cui risiede e ascolta il raccoglitore i dati syslog.
  9. Fai clic su Invia.

Per ulteriori informazioni sui forwarder di Google Security Operations, consulta Gestire le configurazioni dei forwarder tramite la UI di Google Security Operations.

Se riscontri problemi durante la creazione degli inoltri, contatta l'assistenza Google Security Operations.

Riferimento alla mappatura dei campi

Questo parser gestisce i log di FORTINET FORTIWEB in formato chiave-valore (KV), trasformandoli in UDM. Elabora i log in formato CEF e non CEF, estraendo i campi, normalizzando i valori e mappandoli ai campi UDM appropriati in base al formato del log.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
action additional.fields[].value.string_value Il valore viene mappato direttamente.
action security_result.action_details Se action è "Consenti" o "Accetta", security_result.action_details è impostato su "ALLOW". Se action è "Denied", "deny", "block" o "Block", security_result.action_details è impostato su "BLOCK".
app network.application_protocol Il valore viene mappato direttamente dopo essere stato convertito in maiuscolo. Solo se il valore è HTTPS, HTTP, DNS, DHCP o SMB.
app_name additional.fields[].key La chiave è impostata su "appName".
app_name additional.fields[].value.string_value Il valore viene mappato direttamente.
backend_service additional.fields[].key La chiave è impostata su "backend_service".
backend_service additional.fields[].value.string_value Il valore viene mappato direttamente.
cat security_result.category_details Il valore viene mappato direttamente.
client_level security_result.category Se client_level è "Malicious", security_result.category è impostato su "NETWORK_MALICIOUS".
cn1 additional.fields[].value.string_value Mappato al campo threatWeight.
cn1Label additional.fields[].key La chiave è impostata sul valore cn1Label.
cn2 additional.fields[].value.string_value Mappato al campo Lunghezza.
cn2Label additional.fields[].key La chiave è impostata sul valore cn2Label.
cn3 additional.fields[].value.string_value Mappato al campo signatureID.
cn3Label additional.fields[].key La chiave è impostata sul valore cn3Label.
cs1 additional.fields[].value.string_value Il valore viene mappato direttamente.
cs1Label additional.fields[].key La chiave è impostata sul valore cs1Label.
cs1 principal.user.product_object_id Il valore viene mappato direttamente quando cs1Label corrisponde a "userID" (senza distinzione tra maiuscole e minuscole).
cs2 additional.fields[].value.string_value Il valore viene mappato direttamente.
cs2Label additional.fields[].key La chiave è impostata sul valore cs2Label.
cs2 principal.user.userid Il valore viene mappato direttamente quando cs2Label corrisponde a "userName" (senza distinzione tra maiuscole e minuscole) e suid è vuoto.
cs3 additional.fields[].value.string_value Il valore viene mappato direttamente.
cs3Label additional.fields[].key La chiave è impostata sul valore cs3Label.
cs3 metadata.severity Il valore viene mappato direttamente quando cs3Label è "level" e cs3 non è vuoto.
cs4 additional.fields[].value.string_value Mappato al campo subType.
cs4Label additional.fields[].key La chiave è impostata sul valore cs4Label.
cs5 additional.fields[].value.string_value Mappato al campo threatLevel.
cs5Label additional.fields[].key La chiave è impostata sul valore cs5Label.
cs6 additional.fields[].value.string_value Mappato al campo owaspTop10.
cs6Label additional.fields[].key La chiave è impostata sul valore cs6Label.
date metadata.event_timestamp.seconds Combinato con time e analizzato per generare i secondi trascorsi da epoca.
dev_id principal.resource.id Il valore viene mappato direttamente.
devname principal.resource.name Il valore viene mappato direttamente.
device_event_class_id metadata.product_event_type Utilizzato nell'analisi CEF.
device_product metadata.product_name Utilizzato nell'analisi CEF.
device_vendor metadata.vendor_name Utilizzato nell'analisi CEF.
device_version metadata.product_version Utilizzato nell'analisi CEF.
dhost target.hostname Il valore viene mappato direttamente.
dpt target.port Il valore viene mappato e convertito direttamente in un numero intero.
dst target.ip Il valore viene mappato direttamente.
dst_port target.port Il valore viene mappato e convertito direttamente in un numero intero.
dstepid target.process.pid Il valore viene mappato direttamente.
dsteuid target.user.userid Il valore viene mappato direttamente.
event_name metadata.product_event_type Utilizzato nell'analisi CEF.
http_agent network.http.parsed_user_agent Il valore viene analizzato come una stringa user agent.
http_method network.http.method Il valore viene mappato direttamente.
http_refer network.http.referral_url Il valore viene mappato direttamente.
http_session_id network.session_id Il valore viene mappato direttamente.
http_url target.url Il valore viene mappato direttamente.
http_version metadata.product_version Il valore viene mappato direttamente.
length additional.fields[].key La chiave è impostata su "length".
length additional.fields[].value.string_value Il valore viene mappato direttamente.
log_type metadata.log_type Codificato come "FORTINET_FORTIWEB".
main_type additional.fields[].key La chiave è impostata su "mainType".
main_type additional.fields[].value.string_value Il valore viene mappato direttamente.
message Vari campi Analizzato utilizzando i filtri grok e kv per estrarre campi diversi.
ml_allow_method additional.fields[].key La chiave è impostata su "ml_allow_method".
ml_allow_method additional.fields[].value.string_value Il valore viene mappato direttamente.
ml_arg_dbid additional.fields[].key La chiave è impostata su "ml_arg_dbid".
ml_arg_dbid additional.fields[].value.string_value Il valore viene mappato direttamente.
ml_domain_index additional.fields[].key La chiave è impostata su "ml_domain_index".
ml_domain_index additional.fields[].value.string_value Il valore viene mappato direttamente.
ml_log_arglen additional.fields[].key La chiave è impostata su "ml_log_arglen".
ml_log_arglen additional.fields[].value.string_value Il valore viene mappato direttamente.
ml_log_hmm_probability additional.fields[].key La chiave è impostata su "ml_log_hmm_probability".
ml_log_hmm_probability additional.fields[].value.string_value Il valore viene mappato direttamente.
ml_log_sample_arglen_mean additional.fields[].key La chiave è impostata su "ml_log_sample_arglen_mean".
ml_log_sample_arglen_mean additional.fields[].value.string_value Il valore viene mappato direttamente.
ml_log_sample_prob_mean additional.fields[].key La chiave è impostata su "ml_log_sample_prob_mean".
ml_log_sample_prob_mean additional.fields[].value.string_value Il valore viene mappato direttamente.
ml_svm_accuracy additional.fields[].key La chiave è impostata su "ml_svm_accuracy".
ml_svm_accuracy additional.fields[].value.string_value Il valore viene mappato direttamente.
ml_svm_log_main_types additional.fields[].key La chiave è impostata su "ml_svm_log_main_types".
ml_svm_log_main_types additional.fields[].value.string_value Il valore viene mappato direttamente.
ml_svm_log_match_types additional.fields[].key La chiave è impostata su "ml_svm_log_match_types".
ml_svm_log_match_types additional.fields[].value.string_value Il valore viene mappato direttamente.
ml_url_dbid additional.fields[].key La chiave è impostata su "ml_url_dbid".
ml_url_dbid additional.fields[].value.string_value Il valore viene mappato direttamente.
monitor_status additional.fields[].key La chiave è impostata su "monitor_status".
monitor_status additional.fields[].value.string_value Il valore viene mappato direttamente.
msg metadata.description Il valore viene mappato direttamente.
owasp_top10 additional.fields[].key La chiave è impostata su "owaspTop10".
owasp_top10 additional.fields[].value.string_value Il valore viene mappato direttamente.
principal_app principal.application Il valore viene mappato direttamente.
principal_host principal.hostname Il valore viene mappato direttamente.
proto network.ip_protocol Il valore viene mappato direttamente dopo essere stato convertito in maiuscolo.
request target.url Il valore viene mappato direttamente.
requestMethod network.http.method Il valore viene mappato direttamente.
rt metadata.event_timestamp.seconds Analizzato come millisecondi trascorsi da epoca e convertito in secondi.
security_result.severity security_result.severity Derivato da severity_level. Mappato su diversi valori di gravità UDM in base al valore del log non elaborato. Se non viene trovata alcuna corrispondenza, il valore predefinito è UNKNOWN_SEVERITY.
server_pool_name additional.fields[].key La chiave è impostata su "server_pool_name".
server_pool_name additional.fields[].value.string_value Il valore viene mappato direttamente.
service network.application_protocol Il valore viene mappato direttamente dopo essere stato convertito in maiuscolo.
service target.application Il valore viene mappato direttamente dopo essere stato convertito in maiuscolo se non è HTTPS, HTTP, DNS, DHCP o SMB.
severity security_result.severity Se severity è vuoto e cs3Label è "livello", viene utilizzato il valore di cs3. Quindi, viene mappato a un valore di gravità UDM (LOW, HIGH e così via).
signature_id security_result.rule_id Il valore viene mappato direttamente.
signature_subclass security_result.detection_fields[].key La chiave è impostata su "signature_subclass".
signature_subclass security_result.detection_fields[].value Il valore viene mappato direttamente.
src principal.ip Il valore viene mappato direttamente.
src_country principal.location.country_or_region Il valore viene mappato direttamente.
src_ip principal.ip Il valore viene mappato direttamente.
src_port principal.port Il valore viene mappato e convertito direttamente in un numero intero.
srccountry principal.location.country_or_region Il valore viene mappato direttamente.
sub_type additional.fields[].key La chiave è impostata su "subType".
sub_type additional.fields[].value.string_value Il valore viene mappato direttamente.
subtype target.resource.resource_subtype Il valore viene mappato direttamente.
suid principal.user.userid Il valore viene mappato direttamente.
threat_level additional.fields[].key La chiave è impostata su "threatLevel".
threat_level additional.fields[].value.string_value Il valore viene mappato direttamente.
threat_weight security_result.detection_fields[].key La chiave è impostata su "threat_weight".
threat_weight security_result.detection_fields[].value Il valore viene mappato direttamente.
time metadata.event_timestamp.seconds Combinato con date e analizzato per generare i secondi trascorsi da epoca.
user_id principal.user.product_object_id Il valore viene mappato direttamente.
user_name additional.fields[].key La chiave è impostata su "userName".
user_name additional.fields[].value.string_value Il valore viene mappato direttamente.
user_name principal.user.userid Il valore viene mappato direttamente.
N/D metadata.event_type Imposta "NETWORK_CONNECTION" se sono presenti sia principal.ip che target.ip. Imposta su "USER_UNCATEGORIZED" se sono presenti principal.ip e principal.user. Impostato su "STATUS_UPDATE" se è presente solo principal.ip. In caso contrario, imposta "GENERIC_EVENT".
N/D metadata.log_type Codificato come "FORTINET_FORTIWEB".
N/D metadata.product_name Codificato in modo permanente su "FORTINET FORTIWEB" o "FortiWEB Cloud" in base al formato del log.
N/D metadata.vendor_name Codificato in modo permanente su "FORTINET" o "Fortinet" in base al formato del log.
N/D principal.resource.resource_type Codificato come "DEVICE" se è presente dev_id.

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.