.png)
Ich bin neu beim Thema Modsecurity, daher ist die Antwort vielleicht trivial, aber ...
Ich habe Modsecurity auf meinem neuen nginx/1.24.0-Server mit dem Standardsatz empfohlener Regeln eingerichtet: coreruleset-3.3.0 und seitdem wird meine POST XHR-Anfrage blockiert. Dies ist eine grundlegende Laravel/Livewire-Form.
Die von Modsecurity gesendeten und protokollierten Header sehen wie folgt aus:
POST /livewire/update HTTP/2.0
content-type: application/json
origin: https://example.com
referer: https://example.com/en
pragma: no-cache
accept-encoding: gzip, deflate, br
cookie: XSRF-TOKEN=eyJpdiI6IkJVTXpEK01rYTRYVFI1aGxjOE9T...
content-length: 540
accept-language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3
te: trailers
accept: */*
cache-control: no-cache
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0
sec-fetch-site: same-origin
sec-fetch-dest: empty
authorization: Basic Y2Z0cmFbjpjmdG9u
host: example.com
sec-fetch-mode: no-cors
und die Protokolle berichten:
- „Content-Length-HTTP-Header ist nicht numerisch“ – aber für mich sieht „540“ numerisch aus!
ModSecurity: Warning. Matched "Operator `Rx' with parameter `^\d+$' against variable `REQUEST_HEADERS:content-length' (Value: `540' )
[file "/etc/nginx/modsec/coreruleset-3.3.0/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf"]
[line "127"]
[id "920160"]
[msg "Content-Length HTTP header is not numeric"]
[data "540"]
[severity "2"]
- „Unzulässiger Content-Type-Header“ – wie kommt es, dass „application/json“ unzulässig ist?
ModSecurity: Warning. Matched "Operator `Rx' with parameter `^[\w/.+-]+(?... against variable `REQUEST_HEADERS:content-type' (Value: `application/json' )
[file "/etc/nginx/modsec/coreruleset-3.3.0/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf"]
[line "915"]
[id "920470"]
[rev ""]
[msg "Illegal Content-Type header"]
[data "application/json"]
[severity "2"]
- „Ungültige HTTP-Anforderungszeile“ – was ist daran ungültig: „POST /livewire/update HTTP/2.0“?
ModSecurity: Warning. Matched "Operator `Rx' with parameter `^(?i:(?:[a-... against variable `REQUEST_LINE' (Value: `POST /livewire/update HTTP/2.0' )
[file "/etc/nginx/modsec/coreruleset-3.3.0/rules/REQUEST-920-PROTOCOL-ENFORCEMENT.conf"]
[line "47"]
[id "920100"]
[msg "Invalid HTTP Request Line"]
[data "POST /livewire/update HTTP/2.0"]
..und dann wird die Anfrage blockiert
ModSecurity: Access denied with code 403 (phase 2). Matched "Operator `Ge' with parameter `5' against variable `TX:ANOMALY_SCORE' (Value: `13' )
[file "/etc/nginx/modsec/coreruleset-3.3.0/rules/REQUEST-949-BLOCKING-EVALUATION.conf"]
[line "80"]
[id "949110"]
[msg "Inbound Anomaly Score Exceeded (Total Score: 13)"]
[data ""]
[severity "2"]
Ich bin also völlig überrascht und weiß nicht, was ich dagegen tun kann, da die Regeln legitim zu sein scheinen, ich aber auch keine Lust habe, irgendwelche davon zu brechen.