Apache 2 Dos 공격 방어 - mod_evasive
Apache에선 Dos 공격을 방어하기 위해 mod_evasive 모듈을 사용한다.
(#COMMENT : VirtualHost 사용시 Timer가 초기화 되는지 확인이 필요함)
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 리턴) 할지 설정.
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 리턴을 하는 것을 확인할 수 있다.
댓글
댓글 쓰기