mod_security 로 아파치 웹서버 보안 강화하기
apache web server 용 웹 방화벽(web FireWall)인 modsecurity 설치 및 설정법.
설치
RHEL/CentOS 에는 포함되어 있지 않으므로 yum 으로 설치하려면 epel 저장소가 먼저 설정되어야 한다. (RHEL/CentOS 5,6 에 EPEL 과 Remi/WebTatic Repository 설치하기)
RHEL/CentOS 6
sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
mod_security 와 Core Rule Set 설치
yum install mod_security mod_security_crs
- 추가로 룰을 더 설치하려면 mod_security_crs-extras 도 설치
설정 파일
- /etc/httpd/conf.d/mod_security.conf - 기본 로그 파일
- /etc/httpd/modsecurity.d/*.conf - - Core Rule Set
- /etc/httpd/modsecurity.d/activated_rules/*.conf
로그 파일
- /var/log/httpd/modsec_debug.log - 디버그 로그 파일
- /var/log/httpd/modsec_audit.log - 감사 로그 파일
설정
한글 가능하게 설정
기본적으로 PARANOID_MODE 가 설정되어 있으며 이경우 "@validateByteRange 32-126" 에 의해 ASCII 가 아닌 문자가 있을 경우 에러 처리함.
modsecurity.d/activated_rules/modsecurity_crs_20_protocol_violations.conf을 열어서 SecRule TX:PARANOID_MODE 부분을 주석 처리
# SecRule TX:PARANOID_MODE "@eq 1" "chain,phase:2,rev:'2',ver:'OWASP_CRS/2.2.6',maturity:'8',accuracy:'7',block,msg:'Invalid character in request',id:'960018',tag:'OWASP_CRS/PROTOCOL_VIOLATION/EVASION',severity:'3',t:none,t:urlDecodeUni" SecRule REQUEST_URI|REQUEST_BODY|REQUEST_HEADERS_NAMES|REQUEST_HEADERS|!REQUEST_HEADERS:Referer|TX:HPP_DATA \ "@validateByteRange 32-126" \ "t:urlDecodeUni,setvar:'tx.msg=%{rule.msg}',setvar:tx.anomaly_score=+%{tx.error_anomaly_score},setvar:tx.%{rule.id}-OWASP _CRS/PROTOCOL_VIOLATION/EVASION-%{matched_var_name}=%{matched_var}"
Ref