mod_security-PCRE 한계를 초과했습니다


11

모든 요청에 ​​대해 다음과 같은 오류가 발생합니다.

Rule execution error - PCRE limits exceeded (-8): (null).

많은 인터넷 검색 후 유일한 해결책은

a) httpd.conf에 다음을 추가하십시오.

SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

b) php.ini에 다음을 추가하십시오

pcre.backtrack_limit = 10000000
pcre.recursion_limit = 10000000

c) -disable-pcre-match-limit옵션 으로 컴파일 된 버전을 사용하십시오 .


다음을 실행 중입니다.

Apache / 2.5.12 용 ModSecurity ( http://www.modsecurity.org/ ).

Suhosin-Patch mod_ssl / 2.2.16 OpenSSL / 0.9.8을 사용하는 Apache / 2.2.16 (Debian) PHP / 5.3.3-7 + squeeze8

ModSec 규칙에 대해서는이 게시물의 최신 OWASP ModSecurity 핵심 규칙 세트 프로젝트 버전 (CRS) 버전 2.2.3을 사용하고 있습니다.

내 httpd.conf는 본질적으로 다음과 같이 구성됩니다.

<IfModule security2_module>
    SecUploadDir /var/asl/data/suspicious
    SecDataDir /var/asl/data/msa
    SecTmpDir /tmp
    SecAuditLogStorageDir /var/asl/data/audit

    Include modsecurity.d/modsecurity_crs_10_config.conf
    Include modsecurity.d/activated_rules/*.conf

    SecRuleEngine On

    # Debug log
    SecDebugLog /var/log/apache2/modsec_debug.log
    SecDebugLogLevel 3

    # Serial audit log
    SecAuditEngine RelevantOnly
    SecAuditLogRelevantStatus ^5
    SecAuditLogParts ABIFHZ
    SecAuditLogType Serial
    SecAuditLog /var/log/apache2/modsec_audit.log

    SecPcreMatchLimit 150000
    SecPcreMatchLimitRecursion 150000

</IfModule>


<IfModule mod_php5.c>
    php_admin_flag pcre.backtrack_limit 10000000
    php_admin_flag pcre.recursion_limit 10000000
</IfModule>

modsecurity.d디렉토리 안에 CRS가 설치 파일에있는 모든 기본 규칙이 있습니다. 또한 pcre 제한을 150000000 및 100000000000 이상으로 설정했지만 사용할 수 없습니다.

결론적으로 :

솔루션을 사용 a하고 b작동 c하지 않으며 컴파일을 실제로 이해하지 못하기 때문에 수행하지 않는 것이 좋습니다.

다른 아이디어가 있습니까?


방금 다운로드 한 최신 핵심 규칙과 mod_security 소스 코드를 사용하여 이것을 가지고 있습니다. PHP가 아닌 Rails 앱에서 이러한 오류가 발생합니다.
Dogweather

답변:


7

배트맨!

mod_security 규칙에 문제가 있다고 주장합니다. 이런 종류의 재귀는 불필요하고 서버에 심각한 부하를 유발할 수 있습니다. 규칙 및 / 또는 Apache 구성을 수정하고 임의로 많은 수의이 문제를 "수정"하려고하지 마십시오.


4

정확히 똑같은 문제가 있고 구성이 내 것과 비슷해 보입니다. 나는 modsecurity의 첫 번째 타이머입니다. 정말 멍청한 것은 아닙니다!

Janne과 동의하십시오. 내가 지금까지의 조언은 모든 핵심 규칙을 제거하고 규칙을 하나씩 다시 도입하여 문제를 좁히는 것입니다. 나는 지금 그렇게하려고합니다.

또한 규칙 엔진 설정을 다음으로 변경해야합니다.

SecRuleEngine DetectionOnly

구성 문제를 해결하는 동안 강제로 모니터링하지 않아도됩니다. 규칙이 원하는대로 수행되고 있는지 확실하지 않은 상태에서는 규칙을 시행하고 싶지 않습니다.

해결책을 찾으면 배운 내용을 다시 게시하십시오.


0
SecPcreMatchLimit 150000
SecPcreMatchLimitRecursion 150000

일부 * nix 버전의 mod_security 구성 파일에서 찾아서 변경해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.