[펌] 웹방화벽 mod_security 다운로드 및 설정
링크
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>
덕분에 추가 했습니다..^^
아무튼 화이팅 하시길 바랍니다.
게시글 목록
| 번호 | 제목 |
|---|---|
| 13454 | |
| 29442 |
HTML
php 에서 xml 자유롭게 쓰기
4
|
| 13451 | |
| 13448 |
jQuery
자동등록방지코드
2
|
| 13446 | |
| 13445 |
jQuery
ajax modal window (ajax 모달창)
|
| 13442 |
jQuery
간단하게 Round, 그라디언트 처리하기!!
2
|
| 13439 | |
| 13437 | |
| 13434 | |
| 13429 | |
| 13425 | |
| 13423 | |
| 13418 |
jQuery
탭메뉴
4
|
| 13410 | |
| 13408 | |
| 13407 | |
| 13406 |
기타
수학 함수 모음
|
| 29441 |
HTML
변수 함수 모음
|
| 13405 |
JavaScript
URL 함수 모음
|
| 13404 |
기타
디렉토리 함수 모음
|
| 13401 |
JavaScript
파일 함수 모음
2
|
| 13400 |
기타
문자열 함수 모음
|
| 13399 | |
| 13395 |
MySQL
Mysql 날짜관련 함수 모음
3
|
| 13391 |
jQuery
jquery scrolling menu
3
|
| 29435 | |
| 13389 |
JavaScript
정규 표현식 입문서? "손에 잡히는 정규 표현식"
1
|
| 13386 |
정규표현식
정규표현식 검사기
2
|
| 13381 |
jQuery
Jquery 체크박스 사용법
4
|
| 13377 |
Flash
sql 인젝션 복구쿼리
3
|
| 13370 |
JavaScript
페이지 자동이동하기 팁(여기 없는 거)
6
|
| 13367 |
MySQL
mysql 유저 생성, 권한 부여
2
|
| 13366 |
JavaScript
자바스크립트 쿠키 생성, 삭제
|
| 13364 | |
| 13362 | |
| 29432 | |
| 29428 |
HTML
엔터치면 다음칸으로 이동.
3
|
| 13361 |
jQuery
IBM 한국 jQuery 기술자료
|
| 13360 | |
| 13358 | |
| 13354 | |
| 13351 |
JavaScript
이미지 자동으로 사이즈 정해주는 방법은 어떻게 하나요?
2
|
| 29427 | |
| 13346 | |
| 13340 |
jQuery
lightbox 수정 2차 완료
5
|
| 13337 | |
| 13334 | |
| 13328 |
jQuery
선물입니다.
5
|
| 13326 |
JavaScript
virtual hosts
1
|
| 13325 |
기타
asp 글 삭제하기
|
| 13324 |
기타
asp 글 수정하기
|
| 13323 |
기타
asp 글읽기
|
| 29426 |
HTML
asp 목록보기
|
| 13322 |
JavaScript
asp 저장하기
|
| 13321 |
기타
asp 글쓰기
|
| 13315 | |
| 29424 | |
| 13312 |
JavaScript
오픈 api 에 사용할 XML 파서 따끈한거 테스트 부탁드립니다....^^
2
|
| 29422 | |
| 25114 | |
| 13308 | |
| 13307 | |
| 13305 |
JavaScript
if문 축약해 사용하기
1
|
| 13304 |
JavaScript
체크 상자 몇개 이상 채크시 경고창 및 개수이상 클릭못하게하기
|
| 25111 | |
| 29421 |
HTML
테이블 복사
|
| 13301 | |
| 13299 | |
| 13296 |
jQuery
별거는 아니지만
2
|
| 13292 |
JavaScript
[VIM] vim으로 소스코드 범위 설정하여 영역을 접고 펴기
3
|
| 13291 | |
| 13290 |
JavaScript
"웹표준에 관한 타입 선언"- 필요하신 분은 참고하세요...
|
| 13289 | |
| 13288 | |
| 13287 | |
| 13286 | |
| 13285 | |
| 13284 |
기타
아파치 설치문서
|
| 29420 | |
| 13283 |
JavaScript
글자 쪼개서 배열에 넣기
|
| 13277 | |
| 13274 | |
| 13266 |
MySQL
MySQL 상태보기 (MySQL튜닝하기)
7
|
| 13265 | |
| 13262 | |
| 13261 |
jQuery
링크 관련 활용
|
| 13259 |
MySQL
Slow Query Log
1
|
| 13254 |
JavaScript
폼의 첫번째 입력가능한 필드에 FOCUS 주기
4
|
| 13250 | |
| 29419 | |
| 13242 | |
| 13241 | |
| 13236 | |
| 13235 | |
| 29418 |
HTML
레이어 좌표 이동-1
|
| 29417 |
HTML
프레임 제어속성
|
| 13234 | |
| 13233 | |
| 13231 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기