반응형
Apache Web을 통하여 들어오는 DOS 공격 등을 mod_evasive를 이용하여 차단하는 방법에 대해 알아보겠습니다.
1. mod_evasive_1.10.1.tar 를 다운로드 해줍니다.
[root@localhost src]#wget https://idchowto.com/wp-content/uploads/2019/04/mod_evasive_1.10.1.tar.gz
2. 다운로드 받은 파일을 압축해제
[root@localhost src]# tar zxvf mod_evasive_1.10.1.tar.gz
3.압축 해제가 완료된 디렉토리 이동 및 파일 확인
[root@localhost src]# cd mod_evasive
[root@localhost mod_evasive]# ls
CHANGELOG LICENSE Makefile.tmpl README mod_evasive.c mod_evasive20.c mod_evasiveNSAPI.c test.pl
mod_evasive.c = apache 1.3 버전 이상
mod_evasive20.c = apache 2.0 버전 이상
4. mod_evasive Module 추가
저의 Apache 버전은 2.4 버전이므로 mod_evasive20.c 를 통하여 module 추가를 진행하도록 하겠습니다.
[root@localhost mod_evasive]# /usr/local/apache/bin/apxs -iac mod_evasive20.c
*아래와 같은 error가 발생할 경우 mod_evasive20.c 파일의 수정이 필요합니다.
mod_evasive20.c:142: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:146: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:158: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:165: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:180: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:187: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:208: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:212: warning: implicit declaration of function ‘getpid’
mod_evasive20.c:215: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:221: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:222: error: ‘conn_rec’ has no member named ‘remote_ip’
mod_evasive20.c:228: error: ‘conn_rec’ has no member named ‘remote_ip’
[error 수정작업]
1)
[root@localhost mod_evasive]# cp -arp mod_evasive20.c mod_evasive24.c
명령어를 입력하여 파일 수정 전 백업파일을 생성합니다.
2)
[root@localhost mod_evasive]# sed s/remote_ip/client_ip/g -i mod_evasive24.c
위 명령어를 입력하여 파일 수정 후 다시 상위 4번 항목의 명령어를 실행합니다.
5. mod_evasive Module 확인
[root@localhost mod_evasive]# ls /usr/local/apache/modules/mod_evasive20.so
/usr/local/apache/modules/mod_evasive20.so
[root@localhost mod_evasive]#vi /usr/local/apache/conf/httpd.conf
LoadModule evasive20_module modules/mod_evasive20.so
6.Apache Conf 수정
[root@localhost mod_evasive]#vi /usr/local/apache/conf/httpd.conf
<IfModule mod_evasive24.c>
DOSHashTableSize 3097
DOSSiteCount 50
DOSPageCount 5
DOSPageInterval 3
DOSSiteInterval 1
DOSBlockingPeriod 60
</IfModule>
[root@localhost mod_evasive]# /usr/local/apache/bin/apachectl restart
설정 값 적용을 위하여 Apache 재시작을 합니다.
[옵션 설명]
DOSHashTableSize :HashTable 값을 지정하며 수치가 높을수록 성능은 향상 되지만 시스템 자원을 많이 사용합니다.
DOSPageCount, DOSPageInterval : 동일한 Page에 DOSPageInterval 항목에 지정된 시간(초) 동안 DOSPageCount 만큼 요청시 차단
DOSSiteCount, DOSSiteInterval : 동인한 Site에 DOSSiteInterval 항목에 지정된 시간(초) 동안 DOSSiteCount 만큼 요청시 차단
DOSBlockingPeriod : 접근이 차단되는 시간을 지정하며 해당 시간안에 재접속을 할경우 0초부터 다시 카운트 합니다.
*주의사항 : 페이지 및 사이트에 불러오는 이미지 개수 등을 고려하여 적절한 Count 값의 조절이 필요합니다.
7.확인
[Access Log]
– – [30/Apr/2019:12:56:27 +0900] “GET / HTTP/1.1” 200 2342
– – [30/Apr/2019:12:56:27 +0900] “GET / HTTP/1.1” 200 2342
– – [30/Apr/2019:12:56:27 +0900] “GET / HTTP/1.1” 200 2342
– – [30/Apr/2019:12:56:27 +0900] “GET / HTTP/1.1” 403 202
– – [30/Apr/2019:12:56:27 +0900] “GET / HTTP/1.1” 403 202
– – [30/Apr/2019:12:56:27 +0900] “GET / HTTP/1.1” 403 202
403 forbidden Log를 확인할 수 있습니다.
반응형
'Apache' 카테고리의 다른 글
Apache MPM(Multi-Processing Module) 설정법 (0) | 2022.01.18 |
---|---|
mod_rewrite 이용하여 사이트 주소 URL 에서 자동으로 www 제거 또는 붙이기 (0) | 2022.01.18 |
apache error log 안쌓이게 하는 방법 (0) | 2022.01.18 |
아파치 재시작 없이 로그 삭제하기 (0) | 2022.01.18 |
apache 이미지 외부링크 방지 (0) | 2022.01.18 |
댓글