FortiWeb-WAF-Protokolle erfassen
In diesem Dokument wird beschrieben, wie Sie die FortiWeb-WAF-Logs (Web Application Firewall) mit einem Google Security Operations-Weiterleiter erfassen.
Weitere Informationen finden Sie unter Datenaufnahme in Google Security Operations.
Mit einem Datenaufnahmelabel wird der Parser angegeben, der Roh-Logdaten in das strukturierte UDM-Format normalisiert. Die Informationen in diesem Dokument beziehen sich auf den Parser mit dem Datenaufnahmelabel FORTINET_FORTIWEB
.
FortiWeb-WAF-Logs konfigurieren
So konfigurieren Sie die FortiWeb-WAF, damit Protokolle an einen Google Security Operations-Weiterleiter gesendet werden:
- Erstellen Sie eine Syslog-Richtlinie.
- Aktivieren Sie die syslog-Typen und die Protokollebene.
- Erstellen Sie einen Trigger.
Syslog-Richtlinie erstellen
- Melden Sie sich in der Fortinet FortiWeb-Konsole an.
- Wählen Sie in der Fortinet FortiWeb-Konsole Loggen und melden > Protokollrichtlinie > Syslog-Richtlinie 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 ein, die Sie in der Konfiguration verwenden möchten.
- Geben Sie im Feld IP-Adresse die IP-Adresse oder den Hostnamen des Remote-Syslog-Servers 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 ‑Ebene aktivieren
- Wählen Sie in der Fortinet FortiWeb-Konsole Loggen und melden > Protokollkonfiguration > Globale Protokolleinstellungen aus.
Klicken Sie im Fenster Globale Protokolleinstellungen das Kästchen Syslog an und führen Sie dann die folgenden Schritte aus:
- 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 Protokolle aus.
- Wählen Sie in der Liste Facility die Protokolleinrichtung aus.
Klicken Sie auf Anwenden.
Trigger erstellen
- Wählen Sie in der Fortinet FortiWeb-Konsole Loggen und melden > Protokollierungsrichtlinie > Triggerrichtlinie 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 ein, 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-Weiterleiter von Google Security Operations protokolliert werden.
Google Security Operations-Weiterleiter für die Aufnahme von FortiWeb-WAF-Logs konfigurieren
- Gehen Sie zu SIEM-Einstellungen > Weiterleitungen.
- Klicken Sie auf Neuen Weiterleiter hinzufügen.
- Geben Sie im Feld Name des Absenders einen eindeutigen Namen für den Absender ein.
- Klicken Sie auf Senden. Der Weiterleiter wird hinzugefügt und das Fenster Aufnehmerkonfiguration hinzufügen wird angezeigt.
- Geben Sie im Feld Name des Datensammlers einen Namen ein.
- Wählen Sie als Logtyp Fortinet Web Application Firewall aus.
- Wählen Sie Syslog als Typ des Collectors aus.
- Konfigurieren Sie die folgenden obligatorischen Eingabeparameter:
- Protokoll: Geben Sie das Verbindungsprotokoll an, das der Collector zum Abhören von syslog-Daten verwendet.
- Address (Adresse): Geben Sie die Ziel-IP-Adresse oder den Ziel-Hostnamen an, an dem sich der Collector befindet und auf syslog-Daten wartet.
- Port: Geben Sie den Zielport an, an dem sich der Collector befindet und auf Syslog-Daten wartet.
- Klicken Sie auf Senden.
Weitere Informationen zu den Google Security Operations-Weiterleitungen finden Sie unter Weiterleitungskonfigurationen ü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 für die Feldzuordnung
Dieser Parser verarbeitet FORTINET FORTIWEB-Protokolle im Schlüssel/Wert-Format (KV) und wandelt sie in UDM um. Es werden sowohl CEF- als auch nicht CEF-formatierte Protokolle verarbeitet, Felder extrahiert, Werte normalisiert und basierend auf dem Protokollformat 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 „Akzeptieren“ ist, ist security_result.action_details auf „ALLOW“ (ZULASSEN) festgelegt. Wenn action „Abgelehnt“, „deny“, „block“ oder „Blockieren“ 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 einer der folgenden Werte ist: HTTPS, HTTP, DNS, DHCP, SMB. |
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 „Malware“ ist, wird security_result.category auf „NETWORK_MALICIOUS“ gesetzt. |
cn1 |
additional.fields[].value.string_value |
Wird dem Feld „threatWeight“ zugeordnet. |
cn1Label |
additional.fields[].key |
Der Schlüssel ist auf den Wert „cn1Label“ festgelegt. |
cn2 |
additional.fields[].value.string_value |
Wird dem Längenfeld zugeordnet. |
cn2Label |
additional.fields[].key |
Der Schlüssel ist auf den Wert „cn2Label“ festgelegt. |
cn3 |
additional.fields[].value.string_value |
Wird dem Feld „signatureID“ zugeordnet. |
cn3Label |
additional.fields[].key |
Der Schlüssel ist auf den Wert „cn3Label“ festgelegt. |
cs1 |
additional.fields[].value.string_value |
Der Wert wird direkt zugeordnet. |
cs1Label |
additional.fields[].key |
Der Schlüssel ist auf den Wert „cs1Label“ festgelegt. |
cs1 |
principal.user.product_object_id |
Der Wert wird direkt zugeordnet, wenn cs1Label mit „userID“ übereinstimmt (Groß- und Kleinschreibung wird dabei 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 „cs2Label“ gesetzt. |
cs2 |
principal.user.userid |
Der Wert wird direkt zugeordnet, wenn cs2Label mit „userName“ übereinstimmt (ohne Berücksichtigung der Groß- und Kleinschreibung) 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 „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 „cs4Label“ festgelegt. |
cs5 |
additional.fields[].value.string_value |
Dem Feld „threatLevel“ zugeordnet. |
cs5Label |
additional.fields[].key |
Der Schlüssel ist auf den Wert „cs5Label“ festgelegt. |
cs6 |
additional.fields[].value.string_value |
Dem Feld „owaspTop10“ zugeordnet. |
cs6Label |
additional.fields[].key |
Der Schlüssel ist auf den Wert „cs6Label“ festgelegt. |
date |
metadata.event_timestamp.seconds |
Wird mit time kombiniert und analysiert, um Epochensekunden 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-Parsen verwendet. |
device_product |
metadata.product_name |
Wird beim CEF-Parsen verwendet. |
device_vendor |
metadata.vendor_name |
Wird beim CEF-Parsen verwendet. |
device_version |
metadata.product_version |
Wird beim CEF-Parsen 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-Parsen 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 |
Hartcodiert 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 werden verschiedene Felder extrahiert. |
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“ festgelegt. |
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“ festgelegt. |
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 umgewandelt. |
security_result.severity |
security_result.severity |
Abgeleitet von severity_level . Wird basierend auf dem Rohprotokollwert verschiedenen UDM-Schweregraden zugeordnet. Wenn keine Übereinstimmung gefunden wird, wird standardmäßig UNKNOWN_SEVERITY zurückgegeben. |
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“ ist, wird der Wert von cs3 verwendet. Dieser wird dann 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 analysiert, um Epochensekunden 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 |
Legen Sie „NETWORK_CONNECTION“ fest, wenn sowohl principal.ip als auch target.ip vorhanden sind. Wird auf „USER_UNCATEGORIZED“ gesetzt, wenn principal.ip und principal.user vorhanden sind. Legen Sie „STATUS_UPDATE“ fest, wenn nur principal.ip vorhanden ist. Andernfalls setzen Sie „GENERIC_EVENT“ fest. |
– | metadata.log_type |
Hartcodiert auf „FORTINET_FORTIWEB“. |
– | metadata.product_name |
Je nach Protokollformat hartcodiert auf „FORTINET FORTIWEB“ oder „FortiWEB Cloud“. |
– | metadata.vendor_name |
Je nach Protokollformat hartcodiert auf „FORTINET“ oder „Fortinet“. |
– | principal.resource.resource_type |
Ist dev_id vorhanden, ist „DEVICE“ hartcodiert. |
Änderungen
2024-01-09
- Unterstützung für CEF-Format-Protokolle hinzugefügt
- Es wurde ein Grok-Muster hinzugefügt, das dem neuen Format von CEF-Protokollen entspricht.
- „principal_hostnamne“ wurde in „principal.hostname“ geändert.
- „principal.app“ wurde in „principal.application“ geändert.
2023-05-18
- Neu erstellter Parser.