modsecurity 정규 표현식이 항상 단순 규칙과 일치하는 것은 아닙니다.

modsecurity 정규 표현식이 항상 단순 규칙과 일치하는 것은 아닙니다.

일치 항목이 발견되면 규칙 처리를 중지하고 POST 요청에서 상태 200을 반환하여 계속 진행되지 않고 나중에 체인의 다른 CRS 규칙에 의해 차단되는 간단한 modsecurity 정규식 규칙을 만들려고 합니다.

내 규칙은 다음과 같습니다.

    SecRule REQUEST_URI "@rx ^(?i)/cgi-bin/myPHPScript.php" \
                        "id:3021,allow,phase:2,nolog"

어떤 경우에는 규칙이 실행되고 허용되지만 다른 경우에는 modsecurity가 계속되고 이 규칙 이후에 modsecurity의 내장 CRS 규칙에 의해 포착되고 이유를 알 수 없는 것 같습니다. 나는 modsecurity를 ​​처음 접했고 모든 온라인 문서를 읽었지만 아직 답을 찾지 못했습니다. 나는 또한 (다른 곳에서는 정규식을 사용했습니다) 동일한 결과와 함께 약간 다르게 사용된 정규식 규칙을 시도했습니다. 그들은 일할 때도 있고 그렇지 않을 때도 있습니다.

"@rx ^/\cgi-bin\/myPHPScript\.php"
"@rx ^.*\/cgi-bin\/myPHPScript\.php.*$"

허용하고 싶은 더 복잡한 다른 정규식 스크립트도 있으므로 이 특정 상황에 어떤 문제가 있는지 이해하고 싶습니다. 따라서 이 문제를 이해하는 것은 다른에도 적용되어야 합니다.

미리 감사드립니다.

[편집하다]

다음과 같은 경우에 나타납니다.

SecRuleEngine DetectionOnly

다음을 설정해야 합니다.

ctl:ruleEngine=Off

또는

ctl:ruleEngine=On

allow와 함께 사용하려고 할 때DetectionOnly

이 기사에 따르면:

https://stackoverflow.com/questions/58452059/modsecurity-is-turning-off-the-rule-engine-really-necessary-when-implementing-a

예:

SecRule REQUEST_URI "@rx ^(?i)/cgi-bin/myPHPScript.php" \
                        "id:3021,allow,phase:2,nolog,ctl:ruleEngine=On"

관련 정보