반응형
📘 Apache mod_evasive Rate Limiting 기술 메모
1. 개요
mod_evasive는 Apache 웹 서버에 설치 가능한 DoS 방어용 모듈로,
과도한 요청(특정 IP에서 특정 URL 또는 사이트 전반에 대해 짧은 시간 내 반복 요청)을 자동 차단할 수 있습니다.
✅ 목적: 웹 애플리케이션의 요청 제한 미비 취약점 보완 (OWASP A5 대응)
2. 설치 절차
[1] 패키지 설치 (Ubuntu 기준)
apt-get update apt-get install libapache2-mod-evasive
[2] 도커/수동 설치 시 모듈 복사
cp /usr/lib/apache2/modules/mod_evasive20.so /usr/local/apache2/modules/
[3] 확인
ls -l /usr/local/apache2/modules/mod_evasive20.so ldd /usr/local/apache2/modules/mod_evasive20.so
3. Apache 설정
httpd.conf 내 모듈 로드
apache
LoadModule evasive20_module modules/mod_evasive20.so
모듈 설정 블록
apache
<IfModule evasive20_module>
# 해시 테이블 크기 (기본값 사용)
DOSHashTableSize 3097
# 1초간 동일 URL 요청 15회 초과 시 차단
DOSPageCount 15
DOSPageInterval 1
# 1초간 전체 요청 20회 초과 시 차단
DOSSiteCount 20
DOSSiteInterval 1
# 차단 유지 시간 (초)
DOSBlockingPeriod 60
# 로그 경로 및 화이트리스트
DOSLogDir "/var/log/mod_evasive"
DOSWhitelist 127.0.0.1
</IfModule>
4. 테스트 방법
1) 단일 요청 테스트
curl -I https://av-admin.wscompany.co.kr/doTask curl -I 도메인입력
2) 반복 요청 테스트 (로그인 세션 필요)
for i in {1..30}; do
curl -s -o /dev/null -w "%{http_code}\n" \
-H "Cookie: JSESSIONID=실제_세션ID" \
도메인입력
done
3) ApacheBench 고속 부하 테스트 (권장)
ab -n 50 -c 20 \ -H "Cookie: JSESSIONID=실제_세션ID" \ -v 2 도메인입력
5. 차단 확인 방법
- /var/log/mod_evasive/ 디렉토리에서 로그 파일 생성 여부 확인
- 403 Forbidden 응답이 포함되는지 ab -v 2 결과에서 직접 확인
- curl 사용 시 중간중간 200, 403 응답이 섞여 나오면 차단 중
6. 주의사항 및 개선 제안
항목내용
❌ 기본 포함 아님 | mod_evasive20은 Apache 기본 모듈 아님 (재설치 시 손실됨) |
⚙️ 자동화 필요 | Docker 환경 등에서는 수동 복사 및 설정 자동화 스크립트 필요 |
📛 NAT 환경 | IP 기반 차단이라 프록시/NAT 하에서는 오탐 가능성 있음 |
🛡 고도 방어 | 복잡한 로직은 mod_security 또는 AWS WAF 등과 병행 필요 |
🔒 내부 예외 처리 | 사내망/테스트망은 DOSWhitelist 활용 필수 |
✅ 결론
- 단기적으로는 mod_evasive로 요청 제한 대응 가능
- 장기적으로는 IP 신뢰 레벨·비정상 행위 탐지 기반의 고도화 필요
반응형
'윈도우서버 > 보안' 카테고리의 다른 글
IIS Webknight(공개용 웹방화벽) 설치 및 사용법 (0) | 2022.08.25 |
---|---|
버프 스위트 사용법 (0) | 2022.08.22 |
댓글