mod_security가 전혀 작동하지 않습니다

mod_security가 전혀 작동하지 않습니다

mod_security를 ​​작동시키려고 하는데 웹에서 많이 검색해서 따라해봤습니다.이 튜토리얼mod_security를 ​​구성하고(모든 구성 파일은 튜토리얼과 동일합니다) 실행하면 다음과 같이 httpd -M | grep -Ei '(evasive|security)'출력됩니다.

 security2_module (shared)
 evasive20_module (shared)

따라서 확장이 로드되고 있지만 아무것도 차단하지 않고 로그 파일에 아무것도 쓰지 않으며 심지어 SecDebugLogLevel9로 설정했지만 디버그 로그는 여전히 비어 있습니다.

나는 다른 것보다 먼저, 다른 것 후에, 중간에 모듈을 로드하려고 시도했지만 아파치를 여러 번 다시 시작했지만 아무것도 얻지 못했습니다.

저는 Apache 2.4 Prefork와 함께 Amazon Linux(CentOS와 유사)를 사용하고 있습니다.

답변1

도움을 받으려면 추가 정보가 필요합니다(httpd.conf 및 modsecurity.conf의 모든 관련 아파치 구성).

그러나 문제를 직접 해결하는 데 도움이 될 수 있는 몇 가지 지침은 다음과 같습니다.

올바른 IfModule 명령을 사용하고 있습니까? 나는 mod_security2.c를 사용하지만 그것이 중요한지 확실하지 않습니다.

<IfModule mod_security2.c>
    Include conf/modsecurity.conf
</IfModule>

Apache를 완전히 중지하고 시작해 보셨습니까(정상적으로 다시 시작하지 않음)?

완전히 중지하고 다시 시작한 후 오류 로그에 내용이 있습니까? 다음과 같은 [:notice] 항목이 있어야 합니다.

ModSecurity for Apache/2.9.0 (http://www.modsecurity.org/) configured.
ModSecurity: APR compiled version="1.5.0"; loaded version="1.5.0"
...etc.

이는 ModSecurity가 로드되었음을 나타냅니다.

오류 로그 파일에 PCRE 오류가 있습니까(ModSecurity가 Apache와 다른 버전의 PRCE로 컴파일된 경우 발생할 수 있음)? httpd와 mod_security.so에 대해 ldd 명령을 실행하여 일치하는지 확인하세요. 참고로 작업 버전에서 "httpd -M" 명령을 실행할 때 보안 모듈이 표시되지 않습니다. 포함이 실행되지 않으면 로드되지 않기 때문인 것 같습니다.

디버그 로그가 생성되고 있지만 비어 있습니까? 생성된 경우 이는 ModSecurity 자체가 로드되고 있다는 좋은 신호입니다.

귀하가 사용한 가이드에서 제안한 것처럼 Apache 설정이 모두 /etc/httpd/conf 디렉토리에 있습니까? 여러 버전의 Apache가 설치되어 있고 구성을 편집하려는 버전이 사용되는 버전이 아니라는 사실은 알려지지 않았습니다. :-)

저는 무료로 제공되는 Ivan Ristic의 ModSecurity 핸드북을 추천합니다.https://www.feistyduck.com/library/modsecurity-handbook-free/여기에는 설치가 포함됩니다. Ivan은 원래 ModSecurity를 ​​썼으므로 책 전체를 구입하는 것이 좋습니다. 몇 가지 버전이 뒤쳐져 있지만 여전히 대부분 관련성이 있습니다. 책에서 다루지 않은 주요 변경 사항은 이제 규칙 ID가 필수라는 것입니다.

관련 정보