본문 바로가기
윈도우서버/보안

Apache 웹 서버 DoS 방어용 모듈적용

by 베어그릴스 2025. 6. 13.
반응형

📘 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

댓글