|
|
|
|
|
- 1. 개요
mod_dosevasive는 HTTP Dos 또는 DDos 스택 또는 다른 공격으로부터 아파치를 보호한다.
ipchains, 방화벽, 라우터 등으로 쉽게 구성될 수 있도록 설계되어 있다.
DOS 탐지는 주소, URI의 IP 내부 동적 해쉬 테이블을 생성함으로 수행되고, 각 아이피별로 거부되며, 다음과 같은 경우.
- 초당 몇번 이상의 같은 페이지를 요청하는 경우
- 초당 같은 자식노드를 동시에 50번 이상 생성하는 경우
- 일시적으로 블러킹되는 동안 어떠한 요청을 생성하는 경우
2. mod_dosevasive 설치
(1) 소스 구하기
* 다운로드 : http://www.rootman.co.kr/bbs/zboard.php?category=11&id=dataroom
http://www.nuclearelephant.com/projects/dosevasive/
(2) 설치하기
- 압축을 푼 뒤 아래 명령을 순차적으로 수행한다. 아파치는 DSO로 설치되어 있는 경우로 하여 설명한다.
[root@www root]# tar xvfz mod_dosevasive.1.8.tar.gz
[root@www root]# cd /usr/local/apache/bin
[root@www bin]# ./apxs -iac ../mod_dosevasive/mod_dosevasive.c
[root@www bin]# ./apxs -iac ../mod_dosevasive/mod_dosevasive.c
gcc -DLINUX=22 -DUSE_HSREGEX -fpic -DSHARED_CORE -DSHARED_MODULE -I/usr/local/apache/include -c ../mod_dosevasive/mod_dosevasive.c
gcc -shared -o ../mod_dosevasive/mod_dosevasive.so mod_dosevasive.o
[activating module `dosevasive' in /usr/local/apache/conf/httpd.conf]
cp ../mod_dosevasive/mod_dosevasive.so /usr/local/apache/libexec/mod_dosevasive.so
chmod 755 /usr/local/apache/libexec/mod_dosevasive.so
cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak
cp /usr/local/apache/conf/httpd.conf.new /usr/local/apache/conf/httpd.conf
rm /usr/local/apache/conf/httpd.conf.new
- 설치한 뒤 httpd.conf에서 아래 두 줄의 내용이 추가되었는지 확인하고, 추가가 되어 있지 않으면 추가한다.
LoadModule dosevasive_module libexec/mod_dosevasive.so
AddModule mod_dosevasive.c
- 설치가 되어 있는 것을 확인하면 아파치 데몬을 재구동한다.
[root@www /root]# /usr/local/apache/bin/apachectl graceful
3. 세부 사항 설정하기
- httpd.conf에 아래 내용을 추가한다.
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 3600
- 추가적으로 지시자를 추가할 수 있다.
DOSEmailNotify hosting@asadal.com
DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
4. 지시자 옵션 상세 설명
- DOSHashTableSize : 각 자식 해쉬테이블마다 탑 레벨 노드의 수를 지정한다. 수치가 높으면 높을수록 더 많은 퍼포먼스가 나타나지만 테이블스페이스에 메모리
를 남기게 되며, 접속량이 많으면 이 수치를 높혀도 된다.
- DOSPageCount : 이것은 같은 페이지 또는 URI, 인터벌당 요청수에 대한 카운트 수이다. 지정된 값이 초과되면 클라이언트에 대한 IP 정보가 블로킹 리스트에 추
가된다.
- DOSSiteCount : 지정된 시간 동안 같은 페이지를 지정된 수 보다 초과할 경우 IP 정보가 블로킹 리스트에 추가된다.
- DOSPageInterval : 페이지 카운트 시발점, 디폴트는 1초이다.
- DOSSiteInterval : 사이트 카운트 시발점, 디폴트는 역시 1초이다.
- DOSBlockingPeriod : 클라이언트가 블랙리스트에 추가되어 블로킹되는 총 시간. 이때 클라이언트는 403 (Forbidden) 에러를 출력하게 된다.
- DOSEmailNotify : 이 값이 지정되면, IP가 블로킹될때마다 지정된 이메일로 발송된다.
* 주의 : 메일러는 mod_dosevasive.c 에 정확하게 지정되야 한다. 디폴트는 "/bin/mail -t %s" 이다.
- DOSSystemCommand : 이 값이 지정되면, 시스템은 아이피가 블로킹될때마다 명령행을 실행한다. 이것은 아이피 필터링이나 다른 도구를 사용하도록 설계
되어 있다.
5. 인가된 IP 주소 설정
특정 IP (예를 들면 관리자의 IP 등) 에서는 IP 블로킹이 되지 않도록 설정하는 부분.
httpd.conf에서 다음과 같이 설정하며, 와일드 카드를 사용하여 클래스 단위로 설정도 가능하다.
DOSWhitelist 127.0.0.1
DOSWhitelist 203.255.178.*
와일드카드는(*) 필요하다면 최대 8진수(xxx.*.*.*)까지 사용할 수 있다.
|
|
|
|
|