@mod_evasive_1.10.1 설치
mod_evasive - apache DoS, DDoS 공격 방어 모듈로, 초당 일정 횟수 이상 같은 페이지를 요청하는 경우 공격 IP에 대한 접근을 일정시간 차단하는 기능을 합니다.
* mod_evasive 다운로드
# cd /usr/local/src
# wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz
* 압축해제
# tar zxvf mod_evasive_1.10.1.tar.gz
* 디렉토리 이동
# cd 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
* 모듈 추가
# /usr/local/apache/bin/apxs -iac mod_evasive20.c (apache 2.x)
//# /usr/local/apache/bin/apxs -iac mod_evasive.c (apache 1.x)
설치시 remote_ip 에러가 난다면 client_ip로 수정 하거나 본문에 첨부된 mod_evasive20.c 파일을 대체해서 재컴파일한다
# chmod 755 /usr/local/apache/modules/mod_evasive20.so
* 설정확인 및 변경
1. # ls -alh /usr/local/apache/modules/ 경로에 mod_evasive20.so 생성된 것을 확인
2. # vi /usr/local/apache/conf/httpd.conf 중간에 아래 내용이 추가된 것을 확인
======================================================
LoadModule evasive20_module modules/mod_evasive20.so (apache 2.x)
//LoadModule evasive_module modules/mod_evasive.so (apache 1.x)
======================================================
# vi /usr/local/apache/conf/httpd.conf
하단에 아래와 같은 설정을 추가한다.
=======================================
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify *** 개인정보보호를 위한 이메일주소 노출방지 ***
DOSLogDir "/usr/local/apache/logs/mod_evasive.log"
# DOSWhitelist 127.0.0.1 127.0.0.2 127.0.0.3...
=======================================
- 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 재시작 후 테스트
# /usr/local/apache/bin/apachectl restart or service httpd restart
# 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 합니다.
'Code Snippets > linux' 카테고리의 다른 글
트래픽 제어 모듈 설치 (0) | 2018.05.02 |
---|---|
Command : split - 파일 나누기 (0) | 2015.12.04 |
시스템부팅메시지확인 (0) | 2014.08.28 |
명령어:history (0) | 2014.08.22 |
명령어:last (0) | 2014.08.21 |