Apache 2 Dos 공격 방어 - mod_evasive

Apache에선 Dos 공격을 방어하기 위해 mod_evasive 모듈을 사용한다.


1. 설치

1
sudo yum install mod_evasive
cs
(Redhat 계열 기준. 혹은 소스 코드를 직접 구해서 설치해야 한다)


2. 설정

/etc/httpd/conf.d/mod_evasive.conf 을 수정한다. 자세한 설명은 해당 파일에 잘 나와 있다.

mod_evasive는 N초에 M회 이상 HTTP 요청시 403 리턴을 반환하는,
매우 간단한 로직을 지니고 있다.

[주요 설정 사항]
DOSPageInterval 1
DOSSiteInterval 1
단위 : 초

N을 지정. (Count의 기준이 되는 시간을 설정)


DOSPageCount 2
DOSSiteCount 50
단위 : 횟수

M을 지정.
PageCount의 경우 Page단위(URI 단위)를 세고, SiteCount의 경우 object 단위를 센다.

한 개의 Page를 요청하면 여러 asset들이 따라붙음을 유의하면 된다.


DOSBlockingPeriod 60
단위 : 초

Rule 위반 발생시, 후속 요청을 얼마나 차단(403 리턴) 할지 설정.
(#COMMENT : VirtualHost 사용시 Timer가 초기화 되는지 확인이 필요함)


DosLogDir "폴더위치"
로그 파일을 남길 폴더 위치를 지정하면 된다.

해당 폴더는 로그를 남길 권한이 있어야 한다.



(전체 설정 예시)
1
2
3
4
5
6
7
8
9
<IfModule mod_evasive24.c>
  DOSHashTableSize 3097
  DOSPageCount 2
  DOSSiteCount 50
  DOSPageInterval 1
  DOSSiteInterval 1
  DOSBlockingPeriod 60
  DosLogDir "/anywhere/you/want"
</IfModule>
cs



3. 테스트

만일 Rule 위반 상황이 발생하면, 해당 IP 주소에게는 무조건 403를 반환한다.

설정 값이 그렇게 크지 않다면, F5 연타로 충분히 테스트 할 수 있을 것이다.


F5 연타 결과 -> Rule 위반으로 403 리턴을 하는 것을 확인할 수 있다.

댓글