커피향이 나는 *NIX
커피닉스
시스템/네트웍/보안을 다루는 곳
*
HanIRC의 #coffeenix 방
[
장비 및 회선 후원
]
> Forum <
IT 일정
N
e
w
!
자동화 프로젝트
HOME
>
네트워크(network)
>
웹 서버(web, httpd, apache)
도움말
검색 :
사이트
WHOIS
웹서버 종류
WebDAV
(7, 글 1, 자료 4)
웹서버 튜닝
(5, 글 4, 자료 2)
웹서버 사용 통계 자료
(2, 자료 1)
Apache SSL / mod_ssl
(4, 글 3, 자료 2)
Apache 1.3.x에서 DoS 공격 막기
작성일 : 2003/08/20 15:29
글쓴이 : 좋은진호 (
http://coffeenix.net/
)
조회수 : 6658
[
이전화면
/
수정
] 비밀번호 :
작성자 : 좋은진호(truefeel,
http://coffeenix.net/
)
작성일 : 2003.8.20(수)
특정 URL이나 IP일 경우나 특정한 브라우저를 이용하여 DoS(Denial of Service, 서비스거부)
공격이 들어온다면 httpd.conf 에서 SetEnvIf, SetEnvIfNoCase 등과 Allow, Deny 설정으로
간단히 막을 수 있겠지만 일정한 유형이 없다면 해결점을 찾기가 쉽지 않다.
다행히 Apache 1.3.x용 mod_dosevasive 모듈로 DoS 공격을 쉽게 막을 수 있다.
1. mod_dosevasive 설치
http://www.nuclearelephant.com/projects/dosevasive/
에서 mod_dosevasive (현재 최신버전은 1.6.1)을 받아온다.
mod_dosevasive.tar.gz 을 apache_source_홈/src/modules 에 푼 다음
기존에 apache 컴파일하는 것과 동일한 방법으로 하되, --add-module=... 옵션만
추가해준다.
----------------------------------------------
./configure --prefix=/usr/local/apache \
--enable-module=all --enable-shared=max \
--add-module=src/modules/dosevasive/mod_dosevasive.c <-- 추가함
make
make install
----------------------------------------------
기존에 쓰던 apache가 있다면 make install은 하지 말고,
생성된 src/modules/extra/mod_dosevasive.so 모듈을 기존 apache의 libexec/ 디렉토리에
복사한다.
2. 설정
httpd.conf 에 아래 설정이 있는지 확인한다.
----------------------------------------------
...
LoadModule dosevasive_module libexec/mod_dosevasive.so
...
AddModule mod_dosevasive.c
----------------------------------------------
httpd.conf에는 다음과 같이 설정을 추가한다.
----------------------------------------------
< IfModule mod_dosevasive.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 30
< /IfModule>
----------------------------------------------
DOSHashTableSize 3097
hash table의 크기. IP, URI등을 분석하기 위한 공간으로 쓰이는 것 같은데 정확히는
모르겠다. 접속이 많은 서버이면 수치를 높인다.
DOSPageCount 5
DOSPageInterval 1
DOSPageInterval에서 지정한 시간(초단위)동안 같은 페이지를 5번 요청한 경우
해당 클라이언트 IP를 블럭킹한다. 블럭킹되는 동안에 사용자에게는 403(Forbidden)
코드가 전송된다.
DOSSiteCount 50
DOSSiteInterval 1
DOSSiteInterval에서 지정한 시간동안 어느 페이지이든 요청 건수가 50번을 넘는 경우
해당 클라이언트 IP를 블럭킹한다. 403코드 보내는 것은 마찬가지
DOSBlockingPeriod 30
블럭킹된 IP는 30초동안 접속을 할 수 없다.
3. 모듈 사용을 중지하려면
차단 기능을 이용하지 않기 위해
DOSPageCount 0
DOSSiteCount 0
와 같이 하면 모듈 내부의 default값을 이용해서 동작하므로 LoadModule, AddModule를
주석 처리하는 방법을 써야한다. 또는 Count값을 상당히 큰 수를 지정할 수도 있겠다.
4. 차단하는지 테스트
간단한 테스트 툴로 test.pl을 제공한다.
12번째 줄에
printf("%03d ", $_ );
를 추가하고
apache를 실행시킨 다음 perl test.pl을 해보면 200 OK, 403 Forbidden 된 것을 쉽게
확인할 수 있을 것이다.
DOSPageCount, DOSSiteCount 수치를 너무 낮게 하면 정상적인 접속에 대해서도 차단될 수
있으므로 주의해야 한다. 수치를 낮추고, 같은 페이지를 reload(Ctrl+R)를 여러번했더니
바로 403 페이지가 등장.
403 페이지를 별도로 만드는 것이 좋을 듯 싶다. httpd.conf에 ErrorDocument 403 ... 설정
으로 html을 만들어두면 방문자에게 도움이 되지 않을까...
이젠 ab, lynx 등으로 게시물 조회수를 순간적으로 올린다거나, 시스템 로드를 증가시키는
것까지도 어느정도 막을 수 있을 것이다.
커피닉스 카페 최근 글
[08/25]
#gpt_question_subje
[08/20]
From what I've seen
[08/14]
сайт
[06/16]
[질문]SAN 스위치 브로드케이드 dcx8510-4 장비관련입니다.
[04/22]
Re: 영화속에 컴퓨터 이야기 ~스워드피쉬(2001)
[10/20]
Cross Compiler 깔
[07/14]
SSL АО
[04/26]
Re: 도스화면 원격조종 여부
[04/25]
도스화면 원격조종 여부
[10/30]
Cshell에서 난수 설정
[10/23]
공항철도주식회사 SE 구인 件
[01/26]
Re: wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
[01/25]
wget으로 다른서버에있는 디렉토리를 가져오려고합니다.
[01/11]
특정 안드로이드 WebView 버전에서 SSL 문제 (WebView 버그)
[08/01]
DNS forwarder (전달자) 서버를 통해서 쿼리하면 역방향을 받아오질 못합니다.
N
e
w
! 최근에 등록한 페이지
KiCad EDA Suite project (Free/Libre/Open-Source EDA Suite) (CAD)
오픈캐스케이드 캐드 (OpenCASCADE CAD)
QCad for Windows --- GNU GPL (Free Software)
The Hello World Collection
IPMI를 활용한 리눅스 서버관리
DNS 설정 검사
nagiosgraph 설치 방법
Slony-I 설치 방법 (postgresql replication tool)
Qmail기반의 Anti spam 시스템 구축하기
clusterssh
[ 함께하는 사이트 ]
운영진 :
좋은진호(truefeel)
, 야수(yasu), 범냉이, sCag
2003년 8월 4일~