Raccogliere i log di FortiWeb WAF

Supportato in:

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

Per ulteriori informazioni, consulta la Panoramica dell'importazione dei dati in Google Security Operations.

Un'etichetta di importazione identifica l'analizzatore sintattico che normalizza i dati dei log non elaborati in formato UDM strutturato. Le informazioni contenute in questo documento si applicano all'interprete con l'etichetta di importazione FORTINET_FORTIWEB.

Configura i log WAF di FortiWeb

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

Crea un criterio syslog

  1. Accedi alla console Fortinet FortiWeb.
  2. Nella console Fortinet FortiWeb, seleziona Log e report > Criterio di log > Criterio syslog.
  3. Fai clic su Crea nuova.
  4. Nella finestra Nuovo criterio 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 e report > Configurazione log > Impostazioni log globali.
  2. Nella finestra Impostazioni dei log globali visualizzata, seleziona la casella di controllo Syslog e svolgi i seguenti passaggi:

    • Nell'elenco Norma syslog, seleziona la norma syslog creata in precedenza.
    • Nell'elenco Livello log, scegli il livello di gravità minimo per i log da raccogliere.
    • Nell'elenco Strumento, seleziona lo strumento di log.
  3. Fai clic su Applica.

Crea un trigger

  1. Nella console Fortinet FortiWeb, seleziona Log e report > Criterio di log > Criterio di attivazione.
  2. Fai clic su Crea nuova.
  3. Nella finestra Nuovo criterio di attivazione visualizzata, procedi nel seguente modo:

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

    Aggiorna il criterio syslog con l'attivatore appena creato per assicurarti che tutti gli eventi richiesti vengano registrati nel forwarder syslog di Google Security Operations.

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

  1. Vai a Impostazioni SIEM > Inoltratori.
  2. Fai clic su Aggiungi nuovo mittente.
  3. Nel campo Nome del 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. Digita un nome nel campo Nome del raccoglitore.
  6. Seleziona Fortinet Web Application Firewall come Tipo di log.
  7. Seleziona Syslog come Tipo di collettore.
  8. Configura i seguenti parametri di input obbligatori:
    • Protocollo: specifica il protocollo di connessione utilizzato dal collector per ascoltare i dati syslog.
    • Indirizzo: specifica l'indirizzo IP o il nome host di destinazione in cui risiede il collector e ascolta i dati syslog.
    • Porta: specifica la porta di destinazione in cui risiede il raccoglitore e ascolta i dati syslog.
  9. Fai clic su Invia.

Per ulteriori informazioni sui forwarder di Google Security Operations, consulta Gestire le configurazioni dei forwarder tramite l'interfaccia utente di Google Security Operations.

Se riscontri problemi durante la creazione dei reindirizzamenti, contatta l'assistenza di 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 formattati sia CEF che 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 Logica
action additional.fields[].value.string_value Il valore è 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 scritto in maiuscolo. Solo se il valore è uno dei seguenti: HTTPS, HTTP, DNS, DHCP, SMB.
app_name additional.fields[].key La chiave è impostata su "appName".
app_name additional.fields[].value.string_value Il valore è mappato direttamente.
backend_service additional.fields[].key La chiave è impostata su "backend_service".
backend_service additional.fields[].value.string_value Il valore è mappato direttamente.
cat security_result.category_details Il valore è mappato direttamente.
client_level security_result.category Se client_level è "Malvagio", 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 Mappatura 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 è 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 è 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 "nomeUtente" (senza distinzione tra maiuscole e minuscole) e suid è vuoto.
cs3 additional.fields[].value.string_value Il valore è mappato direttamente.
cs3Label additional.fields[].key La chiave è impostata sul valore cs3Label.
cs3 metadata.severity Il valore viene mappato direttamente quando cs3Label è "livello" e cs3 non è vuoto.
cs4 additional.fields[].value.string_value Mappato al campo sottotipo.
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 secondi epoch.
dev_id principal.resource.id Il valore è mappato direttamente.
devname principal.resource.name Il valore è 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 è mappato direttamente.
dpt target.port Il valore viene mappato direttamente e convertito in numero intero.
dst target.ip Il valore è mappato direttamente.
dst_port target.port Il valore viene mappato direttamente e convertito in numero intero.
dstepid target.process.pid Il valore è mappato direttamente.
dsteuid target.user.userid Il valore è mappato direttamente.
event_name metadata.product_event_type Utilizzato nell'analisi CEF.
http_agent network.http.parsed_user_agent Il valore viene analizzato come stringa user agent.
http_method network.http.method Il valore è mappato direttamente.
http_refer network.http.referral_url Il valore è mappato direttamente.
http_session_id network.session_id Il valore è mappato direttamente.
http_url target.url Il valore è mappato direttamente.
http_version metadata.product_version Il valore è mappato direttamente.
length additional.fields[].key La chiave è impostata su "lunghezza".
length additional.fields[].value.string_value Il valore è mappato direttamente.
log_type metadata.log_type Hardcoded su "FORTINET_FORTIWEB".
main_type additional.fields[].key La chiave è impostata su "mainType".
main_type additional.fields[].value.string_value Il valore è mappato direttamente.
message Vari campi Analizzati utilizzando i filtri grok e kv per estrarre diversi campi.
ml_allow_method additional.fields[].key La chiave è impostata su "ml_allow_method".
ml_allow_method additional.fields[].value.string_value Il valore è 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 è 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 è 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 è 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 è 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 è 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 è 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 è 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 è 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 è 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 è mappato direttamente.
monitor_status additional.fields[].key La chiave è impostata su "monitor_status".
monitor_status additional.fields[].value.string_value Il valore è mappato direttamente.
msg metadata.description Il valore è mappato direttamente.
owasp_top10 additional.fields[].key La chiave è impostata su "owaspTop10".
owasp_top10 additional.fields[].value.string_value Il valore è mappato direttamente.
principal_app principal.application Il valore è mappato direttamente.
principal_host principal.hostname Il valore è mappato direttamente.
proto network.ip_protocol Il valore viene mappato direttamente dopo essere stato scritto in maiuscolo.
request target.url Il valore è mappato direttamente.
requestMethod network.http.method Il valore è mappato direttamente.
rt metadata.event_timestamp.seconds Analizzati come millisecondi dall'epoca e convertiti in secondi.
security_result.severity security_result.severity Derivata da severity_level. Mappato a 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 è mappato direttamente.
service network.application_protocol Il valore viene mappato direttamente dopo essere stato scritto in maiuscolo.
service target.application Il valore viene mappato direttamente dopo essere stato scritto 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. Poi viene mappato a un valore di gravità UDM (LOW, HIGH e così via).
signature_id security_result.rule_id Il valore è mappato direttamente.
signature_subclass security_result.detection_fields[].key La chiave è impostata su "signature_subclass".
signature_subclass security_result.detection_fields[].value Il valore è mappato direttamente.
src principal.ip Il valore è mappato direttamente.
src_country principal.location.country_or_region Il valore è mappato direttamente.
src_ip principal.ip Il valore è mappato direttamente.
src_port principal.port Il valore viene mappato direttamente e convertito in numero intero.
srccountry principal.location.country_or_region Il valore è mappato direttamente.
sub_type additional.fields[].key La chiave è impostata su "subType".
sub_type additional.fields[].value.string_value Il valore è mappato direttamente.
subtype target.resource.resource_subtype Il valore è mappato direttamente.
suid principal.user.userid Il valore è mappato direttamente.
threat_level additional.fields[].key La chiave è impostata su "threatLevel".
threat_level additional.fields[].value.string_value Il valore è mappato direttamente.
threat_weight security_result.detection_fields[].key La chiave è impostata su "threat_weight".
threat_weight security_result.detection_fields[].value Il valore è mappato direttamente.
time metadata.event_timestamp.seconds Combinato con date e analizzato per generare secondi epoch.
user_id principal.user.product_object_id Il valore è mappato direttamente.
user_name additional.fields[].key La chiave è impostata su "nomeUtente".
user_name additional.fields[].value.string_value Il valore è mappato direttamente.
user_name principal.user.userid Il valore è mappato direttamente.
N/D metadata.event_type Imposta su "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, impostalo su "GENERIC_EVENT".
N/D metadata.log_type Hardcoded su "FORTINET_FORTIWEB".
N/D metadata.product_name Hardcoded su "FORTINET FORTIWEB" o "FortiWEB Cloud" in base al formato del log.
N/D metadata.vendor_name Hardcoded su "FORTINET" o "Fortinet" in base al formato del log.
N/D principal.resource.resource_type Hardcoded su "DEVICE" se è presente dev_id.

Modifiche

2024-01-09

  • È stato aggiunto il supporto per i log nel formato CEF.
  • È stato aggiunto un pattern Grok per adattarsi al nuovo formato dei log CEF.
  • "principal_hostnamne" è stato mappato a "principal.hostname".
  • "principal.app" è stato mappato a "principal.application".

2023-05-18

  • Parser appena creato.