mod_security 로 아파치 웹서버 보안 강화하기

apache web server 용 웹 방화벽(web FireWall)인 modsecurity 설치 및 설정법.

 

설치

RHEL/CentOS 에는 포함되어 있지 않으므로 yum 으로 설치하려면 epel  저장소가 먼저 설정되어야 한다. (RHEL/CentOS 5,6 에 EPEL 과 Remi/WebTatic Repository 설치하기)

  1. RHEL/CentOS 6

     sudo rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  2. mod_security 와 Core Rule Set 설치

    yum install mod_security mod_security_crs
  3. 추가로 룰을 더 설치하려면 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

로그 파일

  1. /var/log/httpd/modsec_debug.log - 디버그 로그 파일
  2. /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