FortiWeb-WAF-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie die Protokolle der FortiWeb-Webanwendungsfirewall (WAF) mithilfe eines Google Security Operations-Forwarders erfassen können.
Weitere Informationen finden Sie unter Übersicht über die Datenaufnahme in Google Security Operations.
Mit einem Ingestion-Label wird der Parser identifiziert, der Rohdaten in das strukturierte UDM-Format normalisiert. Die Informationen in diesem Dokument beziehen sich auf den Parser mit dem Ingestion-Label FORTINET_FORTIWEB
.
FortiWeb WAF-Logs konfigurieren
So konfigurieren Sie die FortiWeb WAF, damit Logs an einen Google Security Operations-Forwarder gesendet werden:
Syslog-Richtlinie erstellen
- Melden Sie sich in der Fortinet FortiWeb-Konsole an.
- Wählen Sie in der Fortinet FortiWeb-Konsole Log & report > Log policy > Syslog policy aus.
- Klicken Sie auf Neu erstellen.
Führen Sie im angezeigten Fenster Neue Syslog-Richtlinie die folgenden Schritte aus:
- Geben Sie im Feld Richtlinienname einen Namen für die Richtlinie an, die Sie in der Konfiguration verwenden möchten.
- Geben Sie im Feld IP-Adresse die IP-Adresse oder den Hostnamen für den Remote-Syslog-Server an.
- Geben Sie im Feld Port den Port für den Syslog-Server an.
- Entfernen Sie das Häkchen aus dem Kästchen CSV-Format aktivieren, falls es ausgewählt ist.
Klicken Sie auf OK.
Syslog-Typen und ‑Schweregrad aktivieren
- Wählen Sie in der Fortinet FortiWeb-Konsole Log & report > Log config > Global log settings aus.
Wählen Sie im angezeigten Fenster Globale Protokolleinstellungen das Kästchen Syslog aus und gehen Sie so vor:
- Wählen Sie in der Liste Syslog-Richtlinie die zuvor erstellte Syslog-Richtlinie aus.
- Wählen Sie in der Liste Logebene die Mindestwichtigkeitsstufe für die zu erfassenden Logs aus.
- Wählen Sie in der Liste Einrichtung die Logeinrichtung aus.
Klicken Sie auf Übernehmen.
Trigger erstellen
- Wählen Sie in der Fortinet FortiWeb-Konsole Log & report > Log policy > Trigger policy aus.
- Klicken Sie auf Neu erstellen.
Führen Sie im angezeigten Fenster Neue Triggerrichtlinie die folgenden Schritte aus:
- Geben Sie im Feld Richtlinienname einen Namen für die Richtlinie an, die Sie in der Konfiguration verwenden möchten.
- Wählen Sie in der Liste Syslog-Richtlinie die zuvor erstellte Syslog-Richtlinie aus.
Klicken Sie auf OK.
Aktualisieren Sie Ihre Syslog-Richtlinie mit dem neu erstellten Trigger, damit alle erforderlichen Ereignisse im Syslog-Forwarder von Google Security Operations protokolliert werden.
Google Security Operations-Forwarder zum Erfassen von FortiWeb WAF-Logs konfigurieren
- Rufen Sie die SIEM-Einstellungen > Weiterleitungen auf.
- Klicken Sie auf Neuen Weiterleitungsdienst hinzufügen.
- Geben Sie im Feld Name des Forwarders einen eindeutigen Namen für den Forwarder ein.
- Klicken Sie auf Senden. Der Forwarder wird hinzugefügt und das Fenster Collector-Konfiguration hinzufügen wird angezeigt.
- Geben Sie im Feld Name des Collectors einen Namen ein.
- Wählen Sie Fortinet Web Application Firewall als Logtyp aus.
- Wählen Sie Syslog als Collector-Typ aus.
- Konfigurieren Sie die folgenden obligatorischen Eingabeparameter:
- Protokoll: Geben Sie das Verbindungsprotokoll an, das der Collector verwendet, um Syslog-Daten zu empfangen.
- Adresse: Geben Sie die Ziel-IP-Adresse oder den Hostnamen an, auf dem sich der Collector befindet und auf Syslog-Daten wartet.
- Port: Geben Sie den Zielport an, an dem sich der Collector befindet und an dem er auf Syslog-Daten wartet.
- Klicken Sie auf Senden.
Weitere Informationen zu den Google Security Operations-Forwardern finden Sie unter Forwarder-Konfigurationen über die Google Security Operations-Benutzeroberfläche verwalten.
Wenn beim Erstellen von Weiterleitungen Probleme auftreten, wenden Sie sich an den Google Security Operations-Support.
Referenz zur Feldzuordnung
Dieser Parser verarbeitet Logs von FORTINET FORTIWEB im Schlüssel/Wert-Format und wandelt sie in UDM um. Es werden sowohl CEF- als auch Nicht-CEF-formatierte Logs verarbeitet. Dabei werden Felder extrahiert, Werte normalisiert und basierend auf dem Logformat den entsprechenden UDM-Feldern zugeordnet.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
action |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
action |
security_result.action_details |
Wenn action „Zulassen“ oder „Annehmen“ ist, wird security_result.action_details auf „ALLOW“ gesetzt. Wenn action „Denied“, „deny“, „block“ oder „Block“ ist, wird security_result.action_details auf „BLOCK“ gesetzt. |
app |
network.application_protocol |
Der Wert wird direkt zugeordnet, nachdem er in Großbuchstaben umgewandelt wurde. Nur wenn der Wert HTTPS, HTTP, DNS, DHCP oder SMB ist. |
app_name |
additional.fields[].key |
Der Schlüssel ist auf „appName“ festgelegt. |
app_name |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
backend_service |
additional.fields[].key |
Der Schlüssel ist auf „backend_service“ festgelegt. |
backend_service |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
cat |
security_result.category_details |
Der Wert wird direkt zugeordnet. |
client_level |
security_result.category |
Wenn client_level „Bösartig“ ist, wird security_result.category auf „NETWORK_MALICIOUS“ festgelegt. |
cn1 |
additional.fields[].value.string_value |
Wird dem Feld „threatWeight“ zugeordnet. |
cn1Label |
additional.fields[].key |
Der Schlüssel wird auf den Wert von cn1Label festgelegt. |
cn2 |
additional.fields[].value.string_value |
Dem Längenfeld zugeordnet. |
cn2Label |
additional.fields[].key |
Der Schlüssel wird auf den cn2Label-Wert festgelegt. |
cn3 |
additional.fields[].value.string_value |
Dem Feld „signatureID“ zugeordnet. |
cn3Label |
additional.fields[].key |
Der Schlüssel wird auf den cn3Label-Wert festgelegt. |
cs1 |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
cs1Label |
additional.fields[].key |
Der Schlüssel ist auf den Wert von „cs1Label“ festgelegt. |
cs1 |
principal.user.product_object_id |
Der Wert wird direkt zugeordnet, wenn cs1Label mit „userID“ übereinstimmt (Groß-/Kleinschreibung wird nicht berücksichtigt). |
cs2 |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
cs2Label |
additional.fields[].key |
Der Schlüssel ist auf den Wert von „cs2Label“ festgelegt. |
cs2 |
principal.user.userid |
Der Wert wird direkt zugeordnet, wenn cs2Label mit „userName“ (Groß-/Kleinschreibung wird nicht berücksichtigt) übereinstimmt und suid leer ist. |
cs3 |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
cs3Label |
additional.fields[].key |
Der Schlüssel ist auf den Wert von „cs3Label“ festgelegt. |
cs3 |
metadata.severity |
Der Wert wird direkt zugeordnet, wenn cs3Label „level“ ist und cs3 nicht leer ist. |
cs4 |
additional.fields[].value.string_value |
Wird dem Feld „subType“ zugeordnet. |
cs4Label |
additional.fields[].key |
Der Schlüssel ist auf den Wert von „cs4Label“ festgelegt. |
cs5 |
additional.fields[].value.string_value |
Wird dem Feld „threatLevel“ zugeordnet. |
cs5Label |
additional.fields[].key |
Der Schlüssel wird auf den Wert von „cs5Label“ festgelegt. |
cs6 |
additional.fields[].value.string_value |
Dem Feld „owaspTop10“ zugeordnet. |
cs6Label |
additional.fields[].key |
Der Schlüssel ist auf den Wert von „cs6Label“ festgelegt. |
date |
metadata.event_timestamp.seconds |
Wird mit time kombiniert und geparst, um Sekunden seit der UNIX-Epoche zu generieren. |
dev_id |
principal.resource.id |
Der Wert wird direkt zugeordnet. |
devname |
principal.resource.name |
Der Wert wird direkt zugeordnet. |
device_event_class_id |
metadata.product_event_type |
Wird beim CEF-Parsing verwendet. |
device_product |
metadata.product_name |
Wird beim CEF-Parsing verwendet. |
device_vendor |
metadata.vendor_name |
Wird beim CEF-Parsing verwendet. |
device_version |
metadata.product_version |
Wird beim CEF-Parsing verwendet. |
dhost |
target.hostname |
Der Wert wird direkt zugeordnet. |
dpt |
target.port |
Der Wert wird direkt zugeordnet und in eine Ganzzahl konvertiert. |
dst |
target.ip |
Der Wert wird direkt zugeordnet. |
dst_port |
target.port |
Der Wert wird direkt zugeordnet und in eine Ganzzahl konvertiert. |
dstepid |
target.process.pid |
Der Wert wird direkt zugeordnet. |
dsteuid |
target.user.userid |
Der Wert wird direkt zugeordnet. |
event_name |
metadata.product_event_type |
Wird beim CEF-Parsing verwendet. |
http_agent |
network.http.parsed_user_agent |
Der Wert wird als User-Agent-String geparst. |
http_method |
network.http.method |
Der Wert wird direkt zugeordnet. |
http_refer |
network.http.referral_url |
Der Wert wird direkt zugeordnet. |
http_session_id |
network.session_id |
Der Wert wird direkt zugeordnet. |
http_url |
target.url |
Der Wert wird direkt zugeordnet. |
http_version |
metadata.product_version |
Der Wert wird direkt zugeordnet. |
length |
additional.fields[].key |
Der Schlüssel ist auf „length“ festgelegt. |
length |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
log_type |
metadata.log_type |
Fest codiert auf „FORTINET_FORTIWEB“. |
main_type |
additional.fields[].key |
Der Schlüssel ist auf „mainType“ festgelegt. |
main_type |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
message |
Verschiedene Felder | Mit grok- und kv-Filtern geparst, um verschiedene Felder zu extrahieren. |
ml_allow_method |
additional.fields[].key |
Der Schlüssel ist auf „ml_allow_method“ gesetzt. |
ml_allow_method |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
ml_arg_dbid |
additional.fields[].key |
Der Schlüssel ist auf „ml_arg_dbid“ gesetzt. |
ml_arg_dbid |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
ml_domain_index |
additional.fields[].key |
Der Schlüssel ist auf „ml_domain_index“ festgelegt. |
ml_domain_index |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
ml_log_arglen |
additional.fields[].key |
Der Schlüssel ist auf „ml_log_arglen“ gesetzt. |
ml_log_arglen |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
ml_log_hmm_probability |
additional.fields[].key |
Der Schlüssel ist auf „ml_log_hmm_probability“ festgelegt. |
ml_log_hmm_probability |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
ml_log_sample_arglen_mean |
additional.fields[].key |
Der Schlüssel ist auf „ml_log_sample_arglen_mean“ gesetzt. |
ml_log_sample_arglen_mean |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
ml_log_sample_prob_mean |
additional.fields[].key |
Der Schlüssel ist auf „ml_log_sample_prob_mean“ festgelegt. |
ml_log_sample_prob_mean |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
ml_svm_accuracy |
additional.fields[].key |
Der Schlüssel ist auf „ml_svm_accuracy“ festgelegt. |
ml_svm_accuracy |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
ml_svm_log_main_types |
additional.fields[].key |
Der Schlüssel ist auf „ml_svm_log_main_types“ festgelegt. |
ml_svm_log_main_types |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
ml_svm_log_match_types |
additional.fields[].key |
Der Schlüssel ist auf „ml_svm_log_match_types“ festgelegt. |
ml_svm_log_match_types |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
ml_url_dbid |
additional.fields[].key |
Der Schlüssel ist auf „ml_url_dbid“ festgelegt. |
ml_url_dbid |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
monitor_status |
additional.fields[].key |
Der Schlüssel ist auf „monitor_status“ festgelegt. |
monitor_status |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
msg |
metadata.description |
Der Wert wird direkt zugeordnet. |
owasp_top10 |
additional.fields[].key |
Der Schlüssel ist auf „owaspTop10“ festgelegt. |
owasp_top10 |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
principal_app |
principal.application |
Der Wert wird direkt zugeordnet. |
principal_host |
principal.hostname |
Der Wert wird direkt zugeordnet. |
proto |
network.ip_protocol |
Der Wert wird direkt zugeordnet, nachdem er in Großbuchstaben umgewandelt wurde. |
request |
target.url |
Der Wert wird direkt zugeordnet. |
requestMethod |
network.http.method |
Der Wert wird direkt zugeordnet. |
rt |
metadata.event_timestamp.seconds |
Wird als Millisekunden seit der Epoche geparst und in Sekunden umgerechnet. |
security_result.severity |
security_result.severity |
Abgeleitet von severity_level . Entspricht je nach Rohlogwert unterschiedlichen UDM-Schweregradwerten. Der Standardwert ist UNKNOWN_SEVERITY , wenn keine Übereinstimmung gefunden wird. |
server_pool_name |
additional.fields[].key |
Der Schlüssel ist auf „server_pool_name“ festgelegt. |
server_pool_name |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
service |
network.application_protocol |
Der Wert wird direkt zugeordnet, nachdem er in Großbuchstaben umgewandelt wurde. |
service |
target.application |
Der Wert wird direkt zugeordnet, nachdem er in Großbuchstaben umgewandelt wurde, sofern er nicht HTTPS, HTTP, DNS, DHCP oder SMB ist. |
severity |
security_result.severity |
Wenn severity leer ist und cs3Label „level“ lautet, wird der Wert von cs3 verwendet. Anschließend wird der Wert einem UDM-Schweregradwert (LOW, HIGH usw.) zugeordnet. |
signature_id |
security_result.rule_id |
Der Wert wird direkt zugeordnet. |
signature_subclass |
security_result.detection_fields[].key |
Der Schlüssel ist auf „signature_subclass“ festgelegt. |
signature_subclass |
security_result.detection_fields[].value |
Der Wert wird direkt zugeordnet. |
src |
principal.ip |
Der Wert wird direkt zugeordnet. |
src_country |
principal.location.country_or_region |
Der Wert wird direkt zugeordnet. |
src_ip |
principal.ip |
Der Wert wird direkt zugeordnet. |
src_port |
principal.port |
Der Wert wird direkt zugeordnet und in eine Ganzzahl konvertiert. |
srccountry |
principal.location.country_or_region |
Der Wert wird direkt zugeordnet. |
sub_type |
additional.fields[].key |
Der Schlüssel ist auf „subType“ festgelegt. |
sub_type |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
subtype |
target.resource.resource_subtype |
Der Wert wird direkt zugeordnet. |
suid |
principal.user.userid |
Der Wert wird direkt zugeordnet. |
threat_level |
additional.fields[].key |
Der Schlüssel ist auf „threatLevel“ festgelegt. |
threat_level |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
threat_weight |
security_result.detection_fields[].key |
Der Schlüssel ist auf „threat_weight“ festgelegt. |
threat_weight |
security_result.detection_fields[].value |
Der Wert wird direkt zugeordnet. |
time |
metadata.event_timestamp.seconds |
Wird mit date kombiniert und geparst, um Sekunden seit der UNIX-Epoche zu generieren. |
user_id |
principal.user.product_object_id |
Der Wert wird direkt zugeordnet. |
user_name |
additional.fields[].key |
Der Schlüssel ist auf „userName“ festgelegt. |
user_name |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
user_name |
principal.user.userid |
Der Wert wird direkt zugeordnet. |
– | metadata.event_type |
Wird auf „NETWORK_CONNECTION“ gesetzt, wenn sowohl principal.ip als auch target.ip vorhanden sind. Wird auf „USER_UNCATEGORIZED“ gesetzt, wenn principal.ip und principal.user vorhanden sind. Auf „STATUS_UPDATE“ festgelegt, wenn nur principal.ip vorhanden ist. Andernfalls auf „GENERIC_EVENT“ setzen. |
– | metadata.log_type |
Fest codiert auf „FORTINET_FORTIWEB“. |
– | metadata.product_name |
Je nach Protokollformat fest codiert auf „FORTINET FORTIWEB“ oder „FortiWEB Cloud“. |
– | metadata.vendor_name |
Je nach Protokollformat fest codiert als „FORTINET“ oder „Fortinet“. |
– | principal.resource.resource_type |
Wenn dev_id vorhanden ist, ist der Wert fest auf „DEVICE“ codiert. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten