링크
http://www.modsecurity.org/download/direct.html (203) http://www.superuser.co.kr/home/lecture/index.php?cateNo=2&secNo=13&theNo=38&leccode=10958 (179)공개 웹방화벽 Mod_Security
mod_security란?
mod_security는 웹어플리케이션 방화벽 이다
현재 공격유형을 보면 70%이상이 웹 어플리케이션레벨에서 이루어지고 있으며 이러한
공격으로부터 보다 안전하게 시스템이 유지될 수 있도록 해주는 것이 mod_security이다.
이는 mod_security가 단순 URL 뿐 아니라 GET, POST 값 그리고 HTTP1.1의 스펙을
분석하고 검사할 수 있어 실제 웹상에서 명령어를 치고 들어오는 웹해킹 및 크래킹을
방어하는 모듈이다.
설치 방법
아파치에서 설치하기 위해 가장 간단한 방법은 소스를 컴파일 하는 방법이다.
먼저 컴파일하기에 앞서 소스를 다운받디위해서는 아래 URL의사이트에 방문하여
다운받으면 된다 .
다운 받은후 아래와 같이 컴파일을 하면 된다.
$ /path/to/apache/bin/apxs -cia mod_security.c
# /path/to/apache/bin/apachectl stop
# /path/to/apache/bin/apachectl start
단 윈도우즈에서 운영중이라면 미러 사이트에서 미리 컴파일된 dll을 다운 받으면 된다.
설정에 사용되는 지시어
SecFilterEngine (On|Off) : mod_security에 의한 필터를 시작할지에 대한 지시어
SecFilterScanPOST (On|Off) : POST로 정송되는 데이터에 대한 필터의 사용여부
SecFilterDefaultAction (pass|deny|status|redirect|exec|log|nolog)
이는 필터에 의해 검출이 된 경우 기본적으로 어떻게 처리할지에한 지시이다 .
pass : 검출되어도 필터링 하지 말고 통과
deny : 검출되면 요청 거부 (기본적으로 500에러 리턴)
status : 검출되거나 기타 이벤트발생시 반환할 에러
redirect : 검출되거나 기타 이벤트발생시 리다이렉트 시킴
exec : 검출되거나 기타 이벤트발생시 실행할 CGI
log : 로그를 남김
nolog : 로그를 남기지않음
SecFilterCheckURLEncoding (On|Off) 인코딩된 문자열을 기존의 문자열로 반환
SecFilterDebugLog logs <filename> : 해당 파일명으로 로그남김
SecFilterDebugLevel <log level (int)> :
0으로 설정하면 로그가 남지 않음
1. 치명적인 로그를 남기며
2~3 으로갈수록 자세한 정보를 남김
SecFilter KEYWORD : HTTP요청으로 들어오는 패킷에서 KEYWORD에 해당하는 요청이있으면 검출함
ex) SecFilter “../
SecFilterSelective [VARIABLES] (REGULAR|string)
웹헤더의 특정 필드나 특정아파치 변수의 값을 검출할 수 있음
SecFilterSignatureAction : 다음 해당 지시어가나올때까지 하나의 체인을 구성
해당체인에 대한 필터 액선을 지정할수 있음
실제 사용되는 예제
아래에서 크로스 사이트스크립트를 차단하는 룰을 차단해보겟다
1. <script> 라는 태그를 무력화시킨다.
2. javacript, vbscript의 지시어를 무력화시킨다.
3. 쿠키정보를 열람하는 것을 무력화시킨다.
4. 해당 페이지를 다른 페이지로 리다이렉트 하는 것을 무력화시키다
5. 해당페이지에 스크립트로 다른 소스를 삽입하는 것을 무력화시킨다.
# 해당 지시어가 다시 나올때까지 체인을 구성하며 필터링시 XSS attack이라는
# 로그를 남기며 필터링시 차단을 하라.
SecFilterSignatureAction "log,deny,msg:'XSS attack'"
# 넘어오는 값중에 “<script“라는 문자를 필터링하라
SecFilterSelective ARGS "<script"
# 넘어오는 값중에 "javascript:"문자를 필터링하라
SecFilterSelective ARGS "javascript:"
# 넘어오는 값중에 "vbscript:"문자를 필터링하라
SecFilterSelective ARGS "vbscript:"
# 넘어오는 값중에 "document\.cookie"문자를 필터링하라
SecFilterSelective ARGS "document\.cookie"
# 넘어오는 값중에 "document\.location"문자를 필터링하라
SecFilterSelective ARGS "document\.location"
# 넘어오는 값중에 "document\.write" 문자를 필터링하라
SecFilterSelective ARGS "document\.write"
댓글 6개
<IfModule mod_security.c>
# Enable ModSecurity
SecFilterEngine On
# Reject requests with status 403
SecFilterDefaultAction "deny,log,status:403"
# Some sane defaults
SecFilterScanPOST On
SecFilterCheckURLEncoding On
SecFilterCheckUnicodeEncoding Off
# Accept almost all byte values
SecFilterForceByteRange 1 255
# Server masking is optional
# SecServerSignature "Microsoft-IIS/5.0"
# Designate a directory for temporary files
# storage. It is a good idea to change the
# value below to a private directory, just as
# an additional measure against race conditions
SecUploadDir /tmp
SecUploadKeepFiles Off
# Only record the interesting stuff
SecAuditEngine RelevantOnly
# Uncomment below to record responses with unusual statuses
# SecAuditLogRelevantStatus ^5
SecAuditLog logs/modsec_audit.log
# You normally won't need debug logging
SecFilterDebugLevel 0
SecFilterDebugLog logs/modsec_debug.log
# Only accept request encodings we know how to handle
# we exclude GET requests from this because some (automated)
# clients supply "text/html" as Content-Type
SecFilterSelective REQUEST_METHOD "!^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Type "!(^application/x-www-form-urlencoded$|^multipart/form-data;)"
# Do not accept GET or HEAD requests with bodies
SecFilterSelective REQUEST_METHOD "^(GET|HEAD)$" chain
SecFilterSelective HTTP_Content-Length "!^$"
# Require Content-Length to be provided with
# every POST request
SecFilterSelective REQUEST_METHOD "^POST$" chain
SecFilterSelective HTTP_Content-Length "^$"
# Don't accept transfer encodings we know we don't handle
SecFilterSelective HTTP_Transfer-Encoding "!^$"
</IfModule>
게시글 목록
| 번호 | 제목 |
|---|---|
| 12452 |
JavaScript
마우스를 따라다니는 그림
|
| 40 | |
| 25015 | |
| 12447 | |
| 12446 |
JavaScript
SQLPLUS & PLSQL 기초
|
| 12445 |
JavaScript
PLSQL이란
|
| 29296 |
HTML
동적 INPUT 박스
|
| 12440 |
기타
메뉴
4
|
| 12438 |
Flash
창밖에 풍경
1
|
| 12437 |
JavaScript
우분투 root관리자 접속 방법 (펌)
|
| 29294 |
HTML
우키막기
1
|
| 35 | |
| 32 | |
| 12434 |
JavaScript
tar로 묶을때 특정 디렉토리나 파일 포함하지 않고 묶기
2
|
| 12433 |
Flash
도스상에서 플렉스 사용하기
|
| 12432 | |
| 29293 |
HTML
컨텐츠 팝업 출력 소스
|
| 29 | |
| 12431 | |
| 12428 | |
| 12421 |
jQuery
JQuery + wSlide 를 이용한 슬라이딩
6
|
| 29292 |
HTML
시계
|
| 12411 | |
| 12402 | |
| 27 | |
| 29290 |
HTML
금액입력시 한글로 변환하여 표시
1
|
| 12400 | |
| 24 | |
| 12397 |
PHP
이번 달 달력 출력
2
|
| 12396 |
JavaScript
동적 테이블 추가,삭제
|
| 21 | |
| 12391 | |
| 12390 | |
| 18 | |
| 16 | |
| 12377 |
Flash
쇼핑몰에서 많이 쓰는 자동 슬라이드
12
|
| 12373 | |
| 13 | |
| 9 | |
| 12372 | |
| 12371 | |
| 12363 | |
| 1 | |
| 13432 | |
| 12362 |
JavaScript
vista에서 한글 php 매뉴얼 chm파일이 안 보일떄
|
| 12360 | |
| 12355 | |
| 25014 | |
| 29287 | |
| 12352 | |
| 12349 | |
| 29279 |
HTML
기상청 날씨정보 XML
7
|
| 12344 |
기타
네이버로그인
4
|
| 12340 | |
| 12335 | |
| 12333 | |
| 12331 | |
| 29273 |
HTML
자신의 홈피에 날씨를 달아보자.
5
|
| 12330 | |
| 12329 | |
| 12328 | |
| 12324 |
JavaScript
홈피 사진 올리는법 사진줄이 는법
3
|
| 12323 |
MySQL
MySQL 자동으로 dump 받기
|
| 12318 |
MySQL
쿼리문 해석좀 부탁드립니다
4
|
| 12316 | |
| 12313 |
JavaScript
이미지에 박스 넣기
2
|
| 12310 |
Flash
[펌] RED5 파헤치기
2
|
| 12309 |
JavaScript
php 파일을 html 확장자로 사용하기
|
| 12307 |
JavaScript
아파치 보안 팁 [외부에서 아파치정보 못 보게하기]
1
|
| 12303 | |
| 12296 |
JavaScript
SSH 공격막아내기 방법 1
6
|
| 12291 | |
| 12280 |
Flash
플래시 배너 소스
10
|
| 12277 | |
| 12275 |
MySQL
[펌] 사용자 계정 트래픽 제한 하기
1
|
| 29272 |
HTML
JavaScript MD5 사용하기~
|
| 12274 |
기타
휠로 이미지 크기 제어
|
| 12260 | |
| 12252 | |
| 12250 | |
| 12248 | |
| 29267 | |
| 12245 | |
| 29266 | |
| 29261 |
HTML
그림안에 투명텍스트박스 넣기...
4
|
| 12239 |
Flash
플래시점선없애주는 자바스크립트
5
|
| 12238 |
Flash
[질문] 플래시 테두리 제거 질문이요..ㅠㅠ
|
| 29251 |
HTML
숫자 100이하 절사
9
|
| 12236 | |
| 12231 | |
| 12228 | |
| 12214 | |
| 12211 | |
| 12210 | |
| 29248 | |
| 29247 | |
| 25010 | |
| 12208 |
JavaScript
file_put_contents() 함수
1
|
| 12207 |
MySQL
bash shell의 환경설정 의미와 그 예
|
| 12202 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기