본문 바로가기

해킹-보안

Apache mod_evasive를 이용한 DOS 차단 방법

반응형

mod_evasive apache DOS 보안 모듈로,
서버에 많은 요청을 보내는 트래픽을 차단하는 역할을 한다.
해당 모듈을 먼저 설치하기 전에 yum 패키지를 최신으로 유지해야한다.

yum 최신 업데이트
yum -y update
yum 업데이트 오류 발생 시 아래 명령을 수행하고 재시도. 
yum remove epel-release 

epel-release
yum -y install epel-release
EPEL(Extra Packages for Enterprise Linux)은
리눅스의 추가 패키지라고 보면 된다.

apache DOS 보안 모듈 설치
yum -y install mod_evasive

모듈 보안 값 설정
vi /etc/httpd/conf.d/mod_evasive.conf
저 파일에서 DOS와 관련된 설정 값들을 제어할 수 있다.

자주 사용하는 설정들은 아래와 같다. 
DOSSiteCount     20
DOSSiteInterval   3
DOSSiteInterval에 지정된 시간동안
특정 페이지의 요청 수가 DOSSiteCount( 20)번을 넘는 경우
해당 클라이언트 IP를 차단한다.

DOSBlockingPeriod  50
차단된 IP는 50초동안 접속 할 수 없다.




DOS를 당한 경우 공격 로그가 남게되는데 

66번 째줄에 DOSLogDir에서 로그 파일 위치를 설정할 수 있다.
아래 명령어로 로그 폴더를 만들고 apache 권한을 부여한다.

# mkdir /var/log/mod_evasive

# chown apache.apache /var/log/mod_evasive


71~72번은 DOS 공격에서 제외되는 대상들이다. 
필요에 따라서 화이트 리스트를 더 추가할 수 있다.




차단되는지 테스트하기
테스트 프로그램은 test.pl을 제공한다.
해당 파일의 경로는
필자의 경우 /usr/share/doc/mod_evasive-1.10.1/test.pl인데 
실습 환경에 따라 디렉토리명이 조금 다를 수 있다.


test.pl 파일의 12번째줄에 다음과 같은 코드를 추가한다.
printf("%03d ", $_ );
그 후 다음 명령으로 툴을 실행한다.
perl test.pl 

다른 방법으로는 공격 서버를 별도로 구축하여 진행한다.
공격 서버의 test.pl에서 PeerAddr를 본인의 웹 서버 주소로 셋팅하고
Socket을 루프백 주소로 넣는다.


perl로 해당 툴을 실행시키면 타겟 웹 서버로 DOS 된다.

공격 수행 후 아래처럼 200 OK 메시지가 표시되다가 403 메시지가 뜨면서 웹 접속이 차단된다.
100 HTTP/1.1 403 Forbidden


웹 서버에서는 DOS를 시도한 IP가 파일 이름으로 저장되었다. 


/var/log/httpd/error_log를 통해 공격자가 차단된 것을 확인할 수 있고 
access_log에 DOS를 시도한 흔적이 남는다.

반응형