Details zu Web Application Firewall-Logs
Protokollierungsdetails für Web Application Firewall-Logs (WAF-Logs).
Ressourcen
- Web Application Firewall
Logkategorien
API-Wert (ID): | Konsole (Anzeigename) | Beschreibung |
---|---|---|
alle | Alle Logs | Alle WAF-Logs |
Verfügbarkeit
WAF-Logs sind in allen Regionen der kommerziellen Realms verfügbar.
Inhalt eines Web Application Firewall-Logs
Ein WAF-Logdatensatz enthält die folgenden Felder:
Feld | Beschreibung | Beispiel |
---|---|---|
action | Die von WAF ausgeführte Aktion, die entweder "zulassen" sein kann, wenn eine weitere Verarbeitung der Anforderung zulässig war, oder "block", wenn dies nicht der Fall war. | allow |
clientAddr | Client-IP-Adresse. Nginx-Variable $remote_addr. | 192.168.0.33:7870 |
countryCode | Client-ISO-Ländercode alpha-2. | "ca" |
host | In dieser Prioritätsreihenfolge: Hostname aus der Anforderungszeile, Hostname aus dem Anforderungsheaderfeld "Host" oder Servername, der einer Anforderung entspricht. Nginx-Variable $host. | 192.168.0.103 |
listenerPort | Port des Servers, der eine Anforderung akzeptiert hat. Nginx-Variable $server_port. | "80" |
Request.httpVersion | Anforderungsprotokoll, in der Regel "HTTP/1.0", "HTTP/1.1" oder "HTTP/2.0". Nginx-Variable $server_protocol. | "HTTP/1.1" |
Request.id | Eindeutiger Anforderungsbezeichner, der aus 16 zufälligen Byte im Hexadezimalformat generiert wurde. Nginx-Variable $request_id. | "f8860949459e94181e650d4049615a01" |
request.method | Anforderungsmethode, in der Regel "GET" oder "POST". Nginx-Variable $request_method. | “GET” |
Anforderungspfad | Vollständige ursprüngliche Anforderungs-URI (mit Argumenten). Nginx-Variable $request_uri. | "/console/css/%252e%252e%252fconsole.portal" |
RequestProtection.matchData | Daten, die Regelaktionen ausgelöst haben, als die Anforderung geprüft wurde. Die Zeichenfolge enthält in der URI vorhandene Daten, getrennt durch ein Semikolon. | 'Test_data_1;Test_data_2;Test_data_3' |
requestProtection.matchIds | Zeichenfolge mit übereinstimmenden Schutzregel-IDs und -Versionen (für Anforderungsprüfung). Bei der Berichterstellung werden IDs durch 3 Versionssymbole angehängt, sodass ID=123 und Version=4 als 123004 gemeldet wird. Einträge werden durch ein Semikolon getrennt. | "9301000_v001;9301100_v001;9301100_v001;9300000_v001" |
RequestProtection.matchingRules | Regelnamen von Anforderungsschutzregeln, die bei der Prüfung der Anforderung übereinstimmen. Die Zeichenfolge enthält Regelnamen, die durch ein Semikolon getrennt sind. | 'Rule_name_1;Rule_name_2;Rule_name_3' |
ResponseProtection.matchingData | Daten, die Regelaktionen ausgelöst haben (in der Antwortprüfung). Die Zeichenfolge enthält in der URI vorhandene Daten, getrennt durch ein Semikolon. | 'Test_data_1;Test_data_2;Test_data_3' |
Response.code | Endgültiger Antwortcode an Client gesendet. Nginx-Variable $status. | "401" |
Response.size | Vollständige Antwortgröße (Header + Body) in Byte. Nginx-Variable $bytes_sent. | "139" |
RequestAccessControl.matchingRules | Regelnamen von Anforderungszugriffsregeln, die übereinstimmen. Zeichenfolgen enthalten Regelnamen, die durch ein Semikolon getrennt sind. | 'Rule_name_1;Rule_name_2;Rule_name_3' |
ResponseAccessControl.matchingRules | Regelnamen von Antwortzugriffsregeln, die übereinstimmen. Zeichenfolgen enthalten Regelnamen, die durch ein Semikolon getrennt sind. | 'Rule_name_1;Rule_name_2;Rule_name_3' |
backendStatusCode | Behält einen Statuscode der vom Upstreamserver abgerufenen Antwort bei. Statuscodes mehrerer Antworten werden durch Kommas und Doppelpunkte getrennt. Dies ist eine Nginx-Variable $upstream_status. | "200" |
ResponseProtection.matchingIds | Zeichenfolge mit übereinstimmenden Schutzregel-IDs und -Versionen (für Anforderungsprüfung). Bei der Berichterstellung werden IDs durch 3 Versionssymbole angehängt, sodass ID=123 und Version=4 als 123004 gemeldet wird. Einträge werden durch ein Semikolon getrennt. | '300_v004;25_v002;123_v001' |
ResponseProtection.matchingRules | Regelnamen von Antwortschutzregeln, die übereinstimmen. Zeichenfolgen mit Regelnamen, die durch ein Semikolon getrennt sind. Beispiel: 'Rule name 1;Rule name 2;Rule name 3'. |
"Recomended Rules" |
requestRateLimiting.matchingRules | Regelnamen der Satzbegrenzungsregeln, die übereinstimmen. Zeichenfolge mit Regelnamen, die durch ein Semikolon getrennt sind. | 'Rule_name_1;Rule_name_2;Rule_name_3'. |
responseProvider |
Enthält Informationen darüber, woher die Antwort stammt:
|
"requestProtection/Recomended Rules" |
timestamp | ES-Zeitstempel des Empfangs der Anforderung, Ortszeit im ISO 8601-Format. | "2021-12-02T08:39:05Z" |
Beispiel-Web Application Firewall-Log
{
"datetime": 1638434349351,
"logContent": {
"data": {
"clientAddr": "192.168.0.33",
"countryCode": "ca",
"host": "192.168.0.103",
"listenerPort": "80",
"request": {
"httpVersion": "HTTP/1.1",
"id": "f8860949459e94181e650d4049615a01",
"method": "GET",
"path": "/console/css/%252e%252e%252fconsole.portal"
},
"requestProtection": {
"matchedData": "Matched Data: /%252e%252e%252f found within REQUEST_URI_RAW: /console/css/%252e%252e%252fconsole.portal;Matched Data: ../ found within REQUEST_URI: /console/css/../console.portal;Matched Data: ../ found within REQUEST_URI: /console/css/../console.portal",
"matchedIds": "9301000_v001;9301100_v001;9301100_v001;9300000_v001",
"matchedRules": "Recomended Rules"
},
"response": {
"code": "401",
"size": "139"
},
"responseProtection": {},
"responseProvider": "requestProtection/Recomended Rules",
"timestamp": "2021-12-02T08:39:05Z"
},
"id": "6ddc2351-d6a7-4a5e-b057-c04e50003f78-waf-388469",
"oracle": {
"compartmentid": "ocid1.compartment.oc1..<unique_ID>",
"ingestedtime": "2021-12-02T08:39:15.367Z",
"loggroupid": "ocid1.loggroup.oc1.iad.<unique_ID>",
"logid": "ocid1.log.oc1.iad.<unique_ID>",
"resourceid": "ocid1.webappfirewall.oc1.iad.<unique_ID>",
"tenantid": "ocid1.tenancy.oc1..<unique_ID>"
},
"source": "lb_shapetest2-400",
"specversion": "1.0",
"subject": "",
"time": "2021-12-02T08:39:09.351Z",
"type": "com.oraclecloud.loadbalancer.waf"
}
}