AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Wie identifiziere ich Muster im Datenverkehr, die durch SQLi- und XSS-Regeln in AWS WAF aufgerufen werden?
Ich möchte Muster im Datenverkehr identifizieren, die durch Regeln für SQL-Injektion (SQLi) und Cross-Site-Scripting (XSS) in AWS WAF aufgerufen werden.
Kurzbeschreibung
Um Muster im Datenverkehr zu identifizieren, die durch SQLi- und XSS-Regeln aufgerufen werden, erstelle AWS-WAF-Regeln und aktiviere die AWS-WAF-Protokollierung. Sende Protokolle an eine Protokollgruppe in Amazon CloudWatch Logs oder in einem Amazon Simple Storage Service (Amazon S3)-Bucket. Verwende dann Amazon CloudWatch Log Insights oder Amazon Athena, um die Protokolle abzufragen.
Lösung
Die AWS-WAF-Protokolle enthalten die Muster, die SQLi- und XSS-Regeln aufgerufen haben, im Protokollfeld terminatingRuleMatchDetails. Du kannst die Muster verwenden, um Fehler bei falsch positiven Ergebnissen von SQLi- und XSS-Regeln zu beheben. Weitere Informationen findest du unter Protokollfelder für den Traffic des Protection Pack (Web-ACL) und Log examples for protection pack (web ACL) traffic (Protokollbeispiele für den Traffic des Protection Pack (Web-ACL).
Beispiel für ein AWS-WAF-Protokoll
Die AWS-WAF-Protokollierung zeichnet Details für jede geprüfte Anfrage auf, einschließlich der Regel, mit der die Anfrage evaluiert wurde, und gegebenenfalls Informationen über das übereinstimmende Muster.
Beispiel:
{ "terminatingRuleId": "CustomRule", "terminatingRuleType": "REGULAR", "action": "BLOCK", "terminatingRuleMatchDetails": [ { "conditionType": "SQL_INJECTION", "location": "BODY", "matchedData": ["<redacted>"], "matchedFieldName": "", "sensitivityLevel": "LOW" } ] }
conditionType definiert, welcher Inspektionstyp zutrifft. Im vorherigen Beispiel handelt es sich beim condtionType um SQL-Injektion.
location definiert, welchen Teil der Anfrage AWS WAF geprüft hat. Im vorherigen Beispiel lautet location BODY, URL oder QUERY_STRING.
matchedData enthält die spezifischen Zeichenfolgen in der Anfrage, die die Regel aufruft. Wenn die Unkenntlichmachung des Protokolls in AWS WAF aktiviert ist, können einige Felder in der Protokollausgabe teilweise oder vollständig unkenntlich gemacht werden.
sensitivityLevel definiert die von der Regel verwendete Inspektionsempfindlichkeitsstufe. Standardmäßig ist sensitivityLevel im Protokolleintrag für von AWS verwaltete Regelgruppen wie AWS Managed Rules für SQLi und XSS auf LOW (niedrig) gesetzt. Dies reduziert die Wahrscheinlichkeit falsch positiver Ergebnisse. Für benutzerdefinierte SQLi-Inspektionsanweisungen, die du in deinen eigenen Regelgruppen definierst, kannst du die Inspektionsempfindlichkeitsstufe entweder als Low (niedrig) oder High (hoch) konfigurieren.
Untersuche Felder wie terminatingRuleId, terminatingRuleMatchDetails und action, um Anfragen mit Regelevaluierungen und Ergebnissen zu korrelieren.
Wenn du AWS-verwaltete Regelgruppen verwendest, macht AWS WAF viele Erkennungen durch Regelbezeichnungen in den Protokollereignissen verfügbar. Um zu ermitteln, welche verwalteten Regelsignaturen eingehenden Anfragen entsprechen, frage sowohl die Informationen zur Beendigungsregel als auch die Regelbezeichnungen ab.
Abhängig von der für eine Regel konfigurierten Aktion kann eine Anfrage in den Protokollen erscheinen, auch wenn AWS WAF sie nicht blockiert. Verwende die Felder action und terminatingRuleId, um zwischen evaluierten, gezählten und blockierten Anfragen zu unterscheiden.
CloudWatch-Logs-Insights-Abfragen
Wenn die AWS-WAF-Protokolle in Amazon CloudWatch Logs gespeichert sind, verwende CloudWatch Logs Insights, um Abfragen zur Identifizierung von Mustern im Datenverkehr auszuführen.
Führe eine CloudWatch-Logs-Insights-Abfrage mit dem Protokollfeld terminatingRuleMatchDetails aus, um Muster im Datenverkehr zu identifizieren. Die folgende Beispielabfrage gibt den Zeitstempel, die Client-IP-Adresse, das Ursprungsland, die Details der Übereinstimmung und die Abfragen-ID zurück:
fields @timestamp | parse @message ',"terminatingRuleMatchDetails":[*],' as terminatingRuleMatchData | filter (terminatingRuleMatchData like /XSS/ or terminatingRuleMatchData like /SQL/) | display @timestamp, httpRequest.clientIp, httpRequest.country, terminatingRuleMatchData, httpRequest.requestId | limit 100
Weitere Informationen findest du unter Wie analysiere ich AWS-WAF-Protokolle in CloudWatch?
Amazon-Athena-Abfragen
Wenn die AWS-WAF-Protokolle in Amazon S3 gespeichert sind, verwende Amazon-Athena-Abfragen, um Muster im Datenverkehr zu identifizieren. Führe eine Amazon-Athena-Abfrage mit dem Protokollfeld terminatingRuleMatchDetails aus, um Muster im Datenverkehr zu identifizieren. Die folgende Abfrage gibt den Zeitstempel, die Client-IP-Adresse, das Ursprungsland, die Details der Übereinstimmung und die Abfragen-ID zurück:
SELECT to_iso8601(from_unixtime(timestamp / 1000)) as timestamp, terminatingRuleId, action, httpRequest.requestId as RequestID, httpRequest.clientIp as ClientIP, httpRequest.country as Country, termmatchrules.conditionType as ConditionType, termmatchrules.location as Location, termmatchrules.matchedData as MatchedData FROM waf_logs CROSS JOIN UNNEST(terminatingRuleMatchDetails) as t(termmatchrules) WHERE termmatchrules.conditionType in ('XSS', 'SQL_INJECTION')
Weitere Informationen findest du unter Wie analysiere ich AWS-WAF-Protokolle in Amazon Athena?
Ähnliche Informationen
Analysieren von AWS WAF-Protokollen in Amazon CloudWatch Logs
Wie schließe ich bestimmte URIs von der XSS- oder SQLi-Inspektion für HTTP-Anfragen in AWS WAF aus?
- Tags
- AWS WAF
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr