Linux WEB

mod_evasive를 이용한 웹 DDoS 방어

2014.08.19 16:56

호스트웨이 조회 수:13104

mod_evasive - apache DoS, DDoS 공격 방어 모듈로초당 일정 횟수 이상 같은 페이지를 요청하는 경우(ex. 연속 새로고침(F5))

초당 같은 자식 노드를 동시에 일정 회수 생성하는 경우 공격 IP에 대한 접근을 일정시간 차단하는 기능을 합니다.

(절대적인 방어를 하는 것은 아닙니다.)

 

* mod_evasive 다운로드

[root@localhost src]# wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz

 

 

압축해제

[root@localhost src]# tar zxvf mod_evasive_1.10.1.tar.gz

 

 

디렉토리 이동

[root@localhost src]# cd mod_evasive

[root@localhost mod_evasive]# ls -alh

합계 120K

drwxr-xr-x 2 root root 4.0K 10  9  2005 .

drwxr-xr-x 7 root root 4.0K  8 13 05:30 ..

-rw-r--r-- 1 root root   26  9  2  2003 .cvsignore

-rw-r--r-- 1 root root 1.4K 10  9  2005 CHANGELOG

-rw-r--r-- 1 root root  18K  8 31  2003 LICENSE

-rw-r--r-- 1 root root  470 10  9  2005 Makefile.tmpl

-rw-r--r-- 1 root root  14K 10  9  2005 README

-rw-r--r-- 1 root root  19K 10  9  2005 mod_evasive.c  (apache 1.x)

-rw-r--r-- 1 root root  18K 10  9  2005 mod_evasive20.c  (apache 2.x)

-rw-r--r-- 1 root root  16K 10  9  2005 mod_evasiveNSAPI.c

-rw-r--r-- 1 root root  406  8 31  2003 test.pl

 

 

모듈 추가

[root@localhost mod_evasive]# /usr/local/apache2/bin/apxs -iac mod_evasive20.c  (apache 2.x)

//[root@localhost mod_evasive]# /usr/local/apache2/bin/apxs -iac mod_evasive.c  (apache 1.x)

 

설정확인 및 변경

1. [root@localhost mod_evasive]# ls -alh /usr/local/apache2/modules/ 경로에 mod_evasive20.so 생성된 것을 확인

2. [root@localhost mod_evasive]# vi /usr/local/apache2/conf/httpd.conf 중간에 아래 내용이 추가된 것을 확인

======================================================

LoadModule evasive20_module   modules/mod_evasive20.so  (apache 2.x)

//LoadModule evasive_module    modules/mod_evasive.so  (apache 1.x)

======================================================

 

[root@localhost mod_evasive]# vi /usr/local/apache2/conf/httpd.conf

하단에 아래와 같은 설정을 추가한다.

=======================================

<IfModule mod_evasive20.c>

    DOSHashTableSize    3097

    DOSPageCount        10

    DOSSiteCount        50

    DOSPageInterval     1

    DOSSiteInterval     1

    DOSBlockingPeriod   10

    DOSEmailNotify      webmaster@example.com

#   DOSWhitelist   127.0.0.1 127.0.0.2 127.0.0.3...

</IfModule>

=======================================

 

- DosHashTableSize

   수치가 높을수록 evasive의 퍼포먼스는 향상되지만 테이블에 많은 메모리을 남김접속량이 많은 경우 수치를 늘림

- DOSPageCount

   PageInterval에 지정된 시간동안 같은 페이지를 요청하는 횟수

- DOSSiteCount

   SiteInterval에 지정된 시간동안 총 히트수(html,이미지)가 해당 횟수를 초과하는 경우이미지가 많은 사이트는 조절

- DOSPageInterval

   PageCount 시간(default : 1)

- DOSSiteInterval

   SiteCount 시간(default : 1)

- DOSBlockingPeriod

   차단된 IP의 접속을 거부할 시간 설정차단후 설정된 시간 내에 다시 접속을 시도할 경우 시간은 설정만큼 다시 리셋

- DOSEmailNotify

   차단된 IP를 이메일 발송

- DOSWhitelist

   설정된 IP는 차단대상에서 제외

공격으로 차단되었던 IP /tmp/dos-[IP] 와 같이 파일이 생성

 

 

* Apache 재시작 후 테스트

[root@localhost mod_evasive]# /usr/local/apache2/bin/apachectl restart

[root@localhost mod_evasive]# perl test.pl

======================

HTTP/1.1 200 OK

HTTP/1.1 200 OK

HTTP/1.1 200 OK

HTTP/1.1 200 OK

HTTP/1.1 200 OK

 

......

 

HTTP/1.1 200 OK

HTTP/1.1 200 OK

HTTP/1.1 403 Forbidden

HTTP/1.1 403 Forbidden

HTTP/1.1 403 Forbidden

HTTP/1.1 403 Forbidden

HTTP/1.1 403 Forbidden

 

......

 

HTTP/1.1 403 Forbidden

HTTP/1.1 403 Forbidden

======================

 

또는 웹페이지 새로고침(F5)을 연속 실행할 경우 아래와 같이 차단됩니다.

=====================================================

Forbidden

 

You don't have permission to access / on this server.

=====================================================

 

 

기타 iptables 를 이용한 공격 방어 방법

iptables -A INPUT -p tcp --dport 80 -m recent --update --seconds 1 --hitcount 10 --name HTTP -j DROP

같은 IP HTTP서비스에 1초동안 tcp 80포트로 10회 이상 접속하는 경우 DROP 합니다.

 

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP

- 60초동안 SSH(port 22) 새로운 커넥션이 10회 발생할 경우 DROP 합니다.

번호 제목 글쓴이 날짜 조회 수
63 아파치 특정폴더에 암호걸기 호스트웨이 2012.12.28 8163
62 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법-2 호스트웨이 2012.12.20 6123
61 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법 호스트웨이 2012.12.14 10310
60 Ubuntu 아파치 웹서버에서 index.php 다운로드 창이 뜰 경우 호스트웨이 2012.12.13 8181
59 Symbolic link not allowed or link target not accessible 에러 발생 시 호스트웨이 2012.11.16 10541
58 CentOS6 64bit openssl 설치시 에러 조치사항 호스트웨이 2012.11.02 7605
57 [php] 세션 유지시간 설정하기 호스트웨이 2012.10.25 17769
56 Apache 재시작시 세션 끊어짐 현상 호스트웨이 2012.10.12 12738
55 apache 구동시 "파일 크기 제한을 초과함 $HTTPD -DSSL" 에러메시지 출력에 대한 해결방법 호스트웨이 2012.10.11 9400
54 failed to open stream: Too many open files in 에러메시지 출력 시 해결방법 호스트웨이 2012.10.03 7621
53 httpd-2.4 설치하기 호스트웨이 2012.09.27 14436
52 아파치 실행시 libphp5.so 에러 호스트웨이 2012.09.14 13523
51 apache internal dummy connection 로그 생성 방지하기 호스트웨이 2012.09.06 18689
50 SSL 패스워드 삭제 하기 호스트웨이 2012.09.05 20690
49 Apache Max Client 값 수정 호스트웨이 2012.08.31 19627
48 Nginx 설치 호스트웨이 2012.08.31 14896
47 nginx - redirect 설정 호스트웨이 2012.08.24 17883
46 CentOS 6.3 에 apache, php, mysql, phpmyadmin(LAMP) 설치하기 #2 호스트웨이 2012.08.07 14202
45 CentOS 6.3 에 apache, php, mysql, phpmyAdmin(LAMP) 설치하기 #1 호스트웨이 2012.08.07 17343
44 PHP 사용 시 특정함수 사용제한 하는 방법 호스트웨이 2012.08.03 11502