본문 바로가기
소프트웨어 사용&설치 등/미디어위키 Mediawiki

[아파치 Apache] 미디어위키 사용 중에 500 에러 발생시 (ModSecurity 문제) MULTIPART_UNMATCHED_BOUNDARY

by 언제나초심. 2017. 4. 20.
반응형

개요

미디어위키 사용 중에 500 Internal Server Error 가 발생...


 미디어위키 에서 글을 작성하고, 저장 버튼을 눌렀습니다. Submit 이 되었는데, 난데없이 '500 Internal Server Error' 가 발생했습니다. (그리고 작성한 그토록 긴 글은...)


무엇이 문제인가? 하나씩 찾아가보려고 합니다.



원인을 추리는 과정

예상 1. 사진 이미지 용량이 커서 발생되는 경우.

php.ini 설정에서 upload_max_filesize = 2M 같은 설정값을 크게 변경하면 됩니다. 이 값은 적절하게 변경해놓으면 됩니다. 





예상 2. 문자열이 에러를 유도한다면


저의 error_log 를 확인해봅니다. 



ModSecurity: Access denied with code 44 (phase 2). Match of "eq 0" against "MULTIPART_UNMATCHED_BOUNDARY" required. [file "/etc/httpd/conf.d/mod_security.conf"] [line "39"] [id "200003"] [msg "Multipart parser detected a possible unmatched boundary."]


과 같은 에러를 확인했습니다.. 



Mod Security 오류.


과거에 보안설정 해놓은 ModSecurity 모듈에서 무언가를 감지해서 차단을 하는 상황이네요.


문자를 계속 변경하면서 저장을 눌러보면서 테스트를 해본 결과 '--' 라는 문자열을 감지하는 것으로 생각됩니다. 



일단 해결을 봐야 하니까, 영어로 검색해보았습니다.


생각나는 검색어로

* allow two hyphens on modsecurity

* not working two hyphens on modsecurity


각각 검색해봤습니다. 


아래와 같은 결과들을 찾을 수 있었습니다.

http://opensourceforu.com/2011/08/securing-apache-part-10-mod_security/

https://github.com/SpiderLabs/ModSecurity/issues/652




결론을 말하자면

결론적으로는 SecRuleRemoveById 200003 이런 항목을 추가해야한다는 내용이었습니다.



mod_security.conf 파일 에서 수정을 하면 되는데,

제 경우는 /etc/httpd/conf.d/mod_security.conf 위치에 해당 설정 파일이 있었습니다. 


이 파일에 대해서 얘기하자면, Apache 에서 이용하고 있는 ModSecurity 의 보안 설정을 담고 있는 파일입니다. 어떤 것은 차단해라, 어떤 것은 허용해라 와 같은 내용을 담고 있습니다. 


<IfModule>~ </IfModule>의 안에 마지막 줄에서 SecRuleRemoveById 200003 을 추가하였습니다. 



추가

SecRuleRemoveById 는 해당 id 에 대한 룰을 지운다는 의미입니다. 200003 의 id 를 가진 룰은, 해당 설정 파일의 조금 윗부분에 적혀 있습니다. 저의 경우에는 아래와 같았습니다. 


SecRule MULTIPART_UNMATCHED_BOUNDARY "!@eq 0" \
    "id:'200003',phase:2,t:none,log,deny,status:44,msg:'Multipart parser detected a possible unmatched boundary.'"


이 것에 대해서는...다음에 적을 일이 있으면 적도록 하겠습니다. (너무 복잡해질 것 같네요.)


해당 룰이 더이상 문제가 안 될 것 같으면, 추가했던 부분 'SecRuleRemoveById 200003' 부분을 지우시면 됩니다. 



반응형