삽질은 나의 힘 | 'HTTPDoS' 태그의 글 목록
삽질은 나의 힘 위치로그  |  태그  |  미디어로그  |  방명록
icon HTTPDoS 에 해당하는 글1 개
2011.05.13   HTTP DoS 정리


icon HTTP DoS 정리
Security | 2011. 5. 13. 08:41
아래 글은 apache(rev.proxy+modsecurity) 환경하에서 test 및 참조문서 1번 글을 이해한

부분을 정리하였습니다.

1. 소개

실제 연결을 지속적으로 맺고 유지하여, 서비스 가능 리소스를 고갈시키는 공격입니다.

크게 header방식과 body방식으로 구분되어집니다.

HTTP RFC를 보면 아래와 같은 구조를 확인하실 수 있습니다.


Request       = Request-Line                      ; Section 5.1
                        *(( general-header        ; Section 4.5
                         | request-header         ; Section 5.3
                         | entity-header ) CRLF)  ; Section 7.1
                        CRLF
                        [ message-body ]          ; Section 4.3


예를 들면,

대표적인 header방식의 공격 tool로 sloworis라는 tool이 있습니다. (http://ha.ckers.org/slowloris/)

아래와 같은 방식으로 요청을 하며, 마지막에 CRLF를 한번 보내지 않습니다.


GET / HTTP/1.1 CRLF
Host: www.example.com CRLF
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.  0.4506.2152; .NET CLR 3.5.30729; MSOffice 12) CRLF
Content-Length: 42 CRLF


이를 통해 연결을 맺은 상태에서 Timeout 까지 서비스 데몬이 기다리며 연결이 유지되게 합니다.

해당 tool에서 Timeout 설정이 가능하므로 해당 서버의 Timeout보다 작게 잡으면 계속 연결을

유지하실 수 있게되며, MaxClient까지 차게 되면 DoS 상태가 되게 됩니다.

위의 방식이 header방식이며, body방식의 경우 위 방식과 개념은 유사하나 ,

다만 POST field부분을 이용하여 작은양의 값으로 조금씩 보내 연결이 유지되게 하는 방식입니다.

두가지 공격 모두 실제 연결을 맺는 부분으로 금새 표시가 날 수 있으나, 대규모의 사이트에

다량의 위치에서 공격하게 되면 실제트래픽과 구분하기가 쉽지 않습니다.


2. 방어방법

- test시 Timeout이 될 시 아래와 같이 각각 응답하게 됩니다.

header 방식의 경우 400(Bad Request)을 반환하며,
body   방식의 경우 408(Request Timeout)을 반환하게 됩니다.

- Apache의 경우 mod_reqtimeout을 이용해 시간(header,body)별, 양(MinRate)로 제한을 둘 수가 있습니다.
(http://httpd.apache.org/docs/2.2/mod/mod_reqtimeout.html#requestreadtimeout)

- modsecurity를 이용하는 경우 SecReadStateLimit를 이용하여 제한을 둘 수가 있습니다.
(다만, SERVER_BUSY_READ 상태에서 IP주소별 접속수를  제한할 수 있는 방식으로, body방식의 공격의 경우 한번이라도 request headers가 읽혀진 경우 SERVER_BUSY_WRITE로 상태가 바뀌므로 적용이 곤란합니다.)


[ 참조문서 ]

1. http://blog.spiderlabs.com/2010/11/advanced-topic-of-the-week-mitigating-slow-http-dos-attacks.html

2. http://sourceforge.net/apps/mediawiki/mod-security/index.php?title=Reference_Manual        

[ 공격 Test Tool ]

1. http://ha.ckers.org/slowloris/        // header방식    (Perl script파일)

2. http://code.google.com/p/owasp-dos-http-post/downloads/list        
// header + body (Win용)

'Security' 카테고리의 다른 글

Distributed DNS Flooder by Extirpater  (0) 2009.03.17

arrow 트랙백 | 댓글



[PREV] [1] [NEXT]
관리자  |   글쓰기
BLOG main image
분류 전체보기 (27)
Server (4)
Network (3)
Packet Analysis (3)
Security (3)
TroubleShooting (8)
Algorithm (1)
ETC (2)
None (1)
Total :
Today :
Yesterday :
rss
위치로그 : 태그 : 방명록 : 관리자
minSoong-e's Blog is powered by Daum / Designed by plyfly.net