본문 바로가기

기술자료/기술운영자료

modsecurity 설치 메뉴얼

 설치  선행절차

 

 

- Mod_Security 설치를 위해서는 pcre, unique_id, libxml2  필요함

 

 

1) pcre 설치 ( http://www.pcre.org )

 

 

그림입니다.
원본 그림의 이름: mem000022740098.tmp
원본 그림의 크기: 가로 701pixel, 세로 220pixel

 

 

 

 #>./configure --prefix=/usr/local/pcre

 #>make

 #>make install

 

 

 

 

2) unique_id 설정(아파치 소스내에 포함)

#> cd /usr/local/apache2/modules/metadata

#> /usr/local/apache2/bin/apxs –cia mod_unique_id.c

 

 

 

 

3) libxml2 설치 ( ftp://ftp.superuser.co.kr/etc )

그림입니다.
원본 그림의 이름: mem000022740099.tmp
원본 그림의 크기: 가로 560pixel, 세로 103pixel 

 

  #>./configure --prefix=/usr/local/libxml2

  #>make

  #>make install

  #>cd /usr/include

  #>ln –s /usr/local/libxml2/lib/libxml2.so.2.7.2 libxml2.so.2

  #>ln –s /usr/local/libxml2/lib/libxml2.so.2.7.2 libxml2.so

 

 

 

 

 

 

 

 

■ Mod_Security 설치

 

 

   #>./configure –-with-apxs=/usr/local/apache2/bin/apxs

 

   #>make &&make install

 

 

 

  1) httpd.conf 해당 모듈추가

그림입니다.
원본 그림의 이름: mem00002274009a.tmp
원본 그림의 크기: 가로 458pixel, 세로 49pixel 

 

#>LoadModule unique_id_module modules/mod_unique_id.so

 LoadModule security2_module modules/mod_security2.so

 LoadFile /usr/lib/libxml2.so

 

2) 차단 샘플룰 적용

   - toolbox.krcert.or.kr에서 차단 샘플  다운로드

 

 

그림입니다.
원본 그림의 이름: mem00002274009b.tmp
원본 그림의 크기: 가로 520pixel, 세로 292pixel 

 

 

 

   - httpd.conf 에서 룰셋파일 include

그림입니다.
원본 그림의 이름: mem00002274009c.tmp
원본 그림의 크기: 가로 248pixel, 세로 28pixel

     include conf/mod_security.conf

 

 

 

 

   #>vi apache2/conf/mod_security.conf

 

 

   - pass a deny 수정하고 아파치 재시작 하면 차단모드 시작

그림입니다.
원본 그림의 이름: mem00002274009d.tmp
원본 그림의 크기: 가로 605pixel, 세로 43pixel 

 

 

 

 

 

■ 로그 확인

 

 

  - vi /usr/local/apache2/log/modsec_audit.log

그림입니다.
원본 그림의 이름: mem00002274009e.tmp
원본 그림의 크기: 가로 705pixel, 세로 484pixel 

차단  적용시 로그가 쌓이게 된다.

 

 

 

 

■ 기본 환경설정 및 지시자(mod_seruciry.conf)

 

 

1) SecRuleEngine On | Off | DetectionOnly

ModSecurity 기능을 활성화(enable) 시킨다.

o On : ModSecurity 기능 활성화

o Off : ModSecurity 기능 비활성화

o DetectionOnly : 활성화는 하지만 차단하지 않고 탐지만 한다.

 

 

2) SecAuditEngine On | Off | RelevantOnly

감사 로깅에 대한 설정을 구성한다.

o On : 모든 트랜젝션 로깅

o Off : 모든 트랜젝션 로깅하지 않음

o RelevantOnly : Error 또는, Warning  트랜젝션그리고 SecAuditLogRelevantStatus 정의

 상태코드와 일치하는 트랜젝션만 로깅

 

 

3) SecAuditLog logs/modsec_audit.log

감사 로그 파일의 경로를 정의한다.

) SecAuditLog /usr/local/apache2/logs/modsec_audit.log

 

 

4) SecAuditLogParts

로그 파일에 기록할 항목을 정의한다.

) SecAuditLogParts ABCFHZ

A audit log header (필수)

 

B request header

C request body (request body 존재하고 modsecurity request body 검사하도록

설정되어 있는 경우에만)

D 보류중, response header 중개 (현재 지원  )

E response body 중간 단계(현재 modsecurity response body 검사하며 감사로깅 엔진이

이를 저장하게끔 설정되어 있는 경우에만)

F 최종 response header

(마지막 컨텐츠 전달 과정에서 아파치에 의해 매번 추가 되는 날짜와 서버 헤더를 제외한)

  G 실제 response body(현재 지원 안됨)

H 감사 로그 트레일러

I   옵션은 C 대체하는 옵션이다. multipart/form-data 인코딩이 사용되었을때를 제외한

모든 경우엔 C 같은 데이터를 기록한다.

J 보류중multipart/form-data 인코딩을 사용하는 파일 업로드에 대한 정보를 포함할 

효과가 있다.

Z 로그의 끝을 의미한다(필수)

 

5) SecAuditLogRelevantStatus REGEX]

 

 

 

감사로깅의 목적과 관련된 response 상태코드의 값을 설정한다.

 

매개변수에는 정규표현식이 들어간다.

 

) SecAuditLogRelevantStatus ^[45]

 

 

 

6) SecAuditLogType Serial | Concurrent

 

 

 

감사로깅 구조의 타입을 설정한다.

 

o Serial - 모든 로그는 메인 로그파일에 저장된다일시적으로 편리할  있지만 하나의

 

 

파일에만 기록되기 때문에 느려질  있다.

 

o Concurrent - 로그가  트랜잭션 별로 나누어 저장된다 방식은 로그파일을

 

 

원격 ModSecurity Console host 보낼  사용하는 방식이다.

 

 

 

7) SecDefaultAction "log, auditlog, deny, status:403, phase:2, t:lowercase"

 

 

 

룰이 매칭되면 기본적으로 취할 행동을 정의한다 룰이 특정 액션들에 대한 개별 룰을

 

 

적용하거나 다른 SecDefaultAction 정의되어있지 않다면 최초 지정된 SecDefaultAction 설정을 따른다위의 예는 룰이매칭 되었을  차단하며 로그를 남기고, 403 상태코드 페이페이지를 보여주며 필터링 단계는 2”이다기본적으로 대문자는모두 소문자로 바뀌어 필터링 된다.

 

 

 

 8) SecRequestBodyAccess On | Off

 

 

 

Request 값에서 Body 부분에 대한 처리를 어떻게  것인지 구성한다.

 

o On : RequestBody 접근을 시도한다.

 

o Off : RequestBody 접근시도를 하지 않는다.

 

 지시자는 Request 값에서의 POST_PAYLOAD 검사할  필요하다. POST값을 필터링하기 위해서는 phase:2REQUESET_BODY 변수/로케이션, 3가지가 모두 구성되어야만 처리가 가능

 

 

 

 

9) SecReponseBodyAccess On | Off

 

 

 

Response 값에서 Body 부분에 대한 처리를 어떻게  것인지 구성한다.

 

o On : ResponseBody 접근을 시도한다. (그러나 MIME 타입과 일치해야만 한다.)

 

o Off : ResponseBody 접근시도를 하지 않는다.

 

 지시자는 html 응답을 조사하기 위해 필요하다. "phase:4" 처리 단계와 RESPONSE_BODY 변수/로케이션, 3가지가 설정되어 있지 않으면, response body 검사할  없다.

 

 

 

 10) SecResponseBodyLimit

 

 

 

ModSecurity Response Body 크기로 할당할  있는 메모리 최대 크기를 설정한다.

 

o SecRequestBodyLimit 524228

 

 값을 넘어가면 서버는 500 내부 서버 오류 메시지만 표시할 것이다.

 

 

 

11) SecReponseBodyMimeType mime/type

 

Response 값에서 Body 값을 버퍼링할 MIME 타입을 설정한다.

 

o SecResponseBodyMimeType text/plain text/html // 기본값

 

 

Mime 타입은 복수로 추가할  있다.

 

 

 

12) SecReponseBodyMimeTypesClear

 

 

 

ResponseBody 버퍼링을 위해 Mime 타입의 목록을 지우며처음에 위치시킨다.

 

o SecResponseBodyMimeType