Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- ip차단
- 웹서버
- 리눅스서버
- FileZilla
- oops-firwall
- 리눅스
- SSL인증서
- 리눅스명령어
- 파일질라
- iptables
- 서버관리
- centos7
- linux
- 서버운영
- geoip
- ubuntu
- 티스토리챌린지
- 국가IP차단
- 오블완
- CentOS
- https
- postfix
- FTP
- SMTP설정
- sftp
- 시스템관리
- DNS
- Apache
- 서버보안
- 서버방화벽
Archives
- Today
- Total
운영중입니다
웹사이트 보안 강화: Apache mod_evasive 설치 및 차단 테스트 본문
✅ 1. mod_evasive란?
mod_evasive는
Apache 웹 서버가 짧은 시간에 같은 IP나 클라이언트로부터 과도한 요청을 받을 때
해당 요청을 자동으로 차단하거나 블랙리스트에 등록하는 기능을 하는 모듈입니다.
예를 들어 “누군가 페이지 새로고침(F5)을 계속 누르거나, 자동 봇이 반복적으로 요청을 보내는 경우
웹서버가 다운되지 않도록 막아주는 보호막” 역할을 합니다.
✅ 2. 설치 방법
# 테스트 서버 버전
# CentOS Linux release 7.9.2009 (Core)
# Server version: Apache/2.4.6 (CentOS)
#2.1 EPEL 저장소 설치
sudo yum install epel-release -y
#2.2 mod_evasive 설치
sudo yum install mod_evasive -y

- 설치 후 모듈 파일은 보통 아래 위치에 생성됩니다.
/usr/lib64/httpd/modules/mod_evasive24.so

✅ 3. 설정파일 확인 및 수정
3.1 설정 파일 확인
# /etc/httpd/conf.d
cat mod_evasive.conf 혹은 grep -vE '^\s*#|^\s*$' mod_evasive.conf

3.2 항목 별 상세 설명
| 항목 | 의미 | 현재 설정 영향 (제공값) | 권장값 (범위 / 예시) | 설명·주의사항 |
| DOSHashTableSize | 접속자(클라이언트) 추적용 내부 해시테이블 크기 | 3097 → 보통 적절한 초기값 | 1024 ~ 8192 (중소형: 2048, 대형: 8192) | 값 ↑ → 메모리 사용 ↑, 값 ↓ → 해시 충돌·오탐 ↑. 동시접속자 많으면 키우기. |
| DOSPageCount | 같은 페이지(URL) 기준 허용 요청 수 | 2 → 매우 엄격, 리로드·봇에 민감 | 2 ~ 20 (일반: 4–10) | 너무 낮으면 정상 새로고침·봇에 의한 오탐 발생. 관리 페이지 예외 필요. |
| DOSSiteCount | 사이트 전체(모든 URL 합산) 기준 허용 요청 수 | 50 → 보통 수준, 중소형에 무난 | 20 ~ 200 (소형:20–50, 대형:100–200) | API/앱 트래픽 많은 서비스는 높게 설정. |
| DOSPageInterval | DOSPageCount를 계산하는 시간창(초) | 1 → 1초 창으로 매우 민감 | 1 ~ 10초 (일반:1–5초) | 폴링/AJAX가 잦으면 간격 늘리기. |
| DOSSiteInterval | DOSSiteCount를 계산하는 시간창(초) | 1 → 사이트 전체 초당 기준으로 민감 | 1 ~ 10초 (일반:1–5초) | 사이트 특성에 맞춰 조정. |
| DOSBlockingPeriod | 임계치 초과 시 IP 차단 지속시간(초) | 10 → 차단이 짧음(10초) — 오탐 영향 작음 | 10 ~ 3600초 (일반:60–600초) | 너무 짧으면 억제 약함. 반복 위반엔 단계적(짧→길) 차단 권장. |
| DOSSystemCommand | 차단 시 실행할 시스템 명령 (%s → IP) | "touch /var/log/mod_evasive/dos-%s" → 파일 생성 | 필요할 때만 사용. 안전한 스크립트 호출 권장 | Apache 권한으로 실행되므로 쉘 인젝션 등 보안 주의. 매개변수 검증된 스크립트 사용. |
| DOSLogDir | 로그/파일 저장 디렉토리 | "/var/log/mod_evasive" → 전용 디렉토리로 적절 | 전용 디렉토리 + 권한(예: apache:apache, 700/750) | 로그 로테이트 설정 필요. 디스크 사용량 모니터링 권장. |
3.3 설정 파일 수정 후 적용
#설정 파일 수정 전
mkdir -p /var/log/mod_evasive
chown apache:apache /var/log/mod_evasive
chmod 700 /var/log/mod_evasive
| 명령어 | 의미 | 이유 |
| mkdir -p | 상위 폴더까지 생성, 이미 있으면 무시 | 안전한 디렉토리 생성 |
| chown apache:apache | Apache가 쓸 수 있게 권한 부여 | 로그 기록을 위해 필요 |
| chmod 700 | 오직 소유자만 접근 가능 | 보안 강화 (외부 접근 차단) |
#/etc/httpd/conf.d/mod_evasive.conf 수정 (DOSLogDir와 DOSSystemCommand를 변경)
vim /etc/httpd/conf.d/mod_evasive.conf
DOSLogDir "/var/log/mod_evasive"
DOSSystemCommand "touch /var/log/mod_evasive/dos-%s"

httpd -t
service httpd restart
service httpd status
✅ 4. 테스트 및 확인
#4.1 수동 테스트
#Mod_evasive 모듈이 설치 된 서버에 다수 접속 시도 할 경우
#위에 설정한 DOSSystemCommand 디렉토리 확인, dos-<ip>파일이 생성되며,
# 파일에 기록된 숫자는 그 파일을 생성한 Apache/mod_evasive 프로세스의 PID입니다.

#1. 파일 생성 시간(언제 차단되었는지) 확인
ls -l --full-time /var/log/mod_evasive/dos-<IP>
#2. 프로세스가 아직 살아있는지 확인
ps -ef | grep <PID>
#3. 즉시 차단 해제(파일 삭제)
rm -f /tmp/dos-<IP>
rm -f /tmp/dos-*
# 또는 전체 삭제(주의: 모든 차단 해제)
#4. 재발 방지(화이트리스트 추가)
#/etc/httpd/conf.d/mod_evasive.conf 에 추가
sudo sed -i '/<\/IfModule>/i \ DOSWhiteList <IP>' /etc/httpd/conf.d/mod_evasive.conf
#4.2 명령어 사용
ab -n 1000 -c 200 http://httpstest.mireene.co.kr
#1000회 요청, 동시 200. 결과에 403 응답이 섞여 있는지 확인.
#*외부 서비스에 대해 사용하면 서비스에 부담을 줄 수 있으니 반드시 본인 서버에서만 사용 권장합니다.
#4.3 로그 확인
cat /var/log/messages | grep mod_evasive

'리눅스보안' 카테고리의 다른 글
| 리눅스 방화벽 최적화 - ipset 설정으로 대량 IP 차단하는 방법 (Ubuntu) (0) | 2026.03.06 |
|---|---|
| 리눅스 방화벽 최적화 - ipset 설정으로 대량 IP 차단하는 방법 (CentOS) (0) | 2026.02.27 |
| 서버 접속시 메일로 알림받기 (0) | 2025.09.09 |
| Certbot으로 무료 SSL 인증서 발급 및 설정하기 (1) | 2025.08.18 |
| geoip 설치 및 사용 방법2_2 (CentOS7) (2) | 2025.07.20 |