WAF 운영 6주 분석: 4,157건 공격, 90% 차단
운영 기간: 2026-01-29 ~ 2026-03-12 (43일)
WAF 스택: Caddy 2.11 + Coraza (OWASP CRS)
모니터링: PostgreSQL + FastAPI Dashboard
📊 전체 통계
총 요청: 4,157건
차단: 3,744건 (90.1%)
규칙 트리거: 4,157건 (100%)
고유 공격자: 68개 IP
기간: 43일
주요 지표
- 차단률: 90.1% (매우 우수)
- 허니팟 효과: 493건 감지 (288개 IP)
- 자동차단: 평균 10회 block → 자동 차단
- 국가별: 한국 34.2%, 대만 22.8%, 미국 14.0%
🎯 Top 5 공격 패턴
| 순위 | 공격 유형 | 규칙 ID | 횟수 | 고유 IP | 심각도 |
|---|---|---|---|---|---|
| 1 | Banned IP 재접근 | 99000 | 1,027 | 9 | Emergency |
| 2 | SQL Injection | 942100 | 608 | 3 | Critical |
| 3 | Anomaly Score 20 | 949110 | 525 | 4 | Emergency |
| 4 | Anomaly Score 5 | 949110 | 312 | 37 | Emergency |
| 5 | Restricted File Access | 930130 | 259 | 22 | Critical |
상세 분석
1️⃣ SQL Injection (942100)
- libinjection 라이브러리 활용
- 1.221.16.187 (KR): 단일 IP에서 554건
- 집중 시간: 2026-03-11 10:15~10:17 (2분간 집중 공격)
- 타겟: yeonghoon.kim 메인 도메인만
- 차단 조치: 7일 차단 완료 ✅
2️⃣ Restricted File Access (930130)
- 민감 파일 접근 시도:
.env,.git/config,wp-config.php - 156.146.57.177 (SG): 229건 (단일 IP)
- 34.234.167.16 (US): 156건
- 차단 조치: 모두 7일 차단 완료 ✅
3️⃣ JavaScript Prototype Pollution (934130)
- Node.js 취약점 공격
- 147건 감지 (52개 고유 IP)
- money.yeonghoon.kim 타겟 (API 서비스)
4️⃣ Remote Command Execution (932130, 932260)
- Unix Shell Expression: 117건
- Direct Command Execution: 90건
- 특징: /index.php 경로 집중 타겟
🌍 국가별 공격 분포
| 국가 | 요청 수 | 고유 IP | 비율 |
|---|---|---|---|
| 🇰🇷 한국 | 1,423 | 8 | 34.2% |
| 🇹🇼 대만 | 949 | 3 | 22.8% |
| 🇺🇸 미국 | 582 | 21 | 14.0% |
| 🇸🇬 싱가포르 | 291 | 6 | 7.0% |
| 🇫🇷 프랑스 | 221 | 15 | 5.3% |
| 🇧🇬 불가리아 | 144 | 5 | 3.5% |
| 기타 | 547 | 28 | 13.2% |
주목할 점
- 한국 1위: 34.2% (1.221.16.187 집중 공격)
- 대만 2위: 22.8% (3개 IP에서 집중)
- 미국 3위: 21개 IP로 분산 공격
🎯 도메인별 공격 타겟
| 도메인 | 공격 수 | 고유 IP |
|---|---|---|
| yeonghoon.kim | 2,397 | 41 |
| money.yeonghoon.kim | 511 | 20 |
| www.yeonghoon.kim | 428 | 8 |
| bing2.yeonghoon.kim | 174 | 14 |
| japan.yeonghoon.kim | 158 | 12 |
| chloe.ai.kr | 116 | 12 |
공격 패턴
- 메인 도메인 집중: yeonghoon.kim (57.7%)
- API 서비스: money.yeonghoon.kim (Node.js Injection)
- WordPress 타겟: wp-login.php 93건 감지
🍯 허니팟 효과 분석
총 493건 (288개 고유 공격자)
| 경로 | 히트 수 | 고유 IP |
|---|---|---|
| /.env | 116 | 65 |
| /wp-login.php | 93 | 80 |
| /.git/config | 70 | 52 |
| /info.php | 35 | 30 |
| /xmlrpc.php | 29 | 26 |
| /phpinfo.php | 14 | 10 |
| /shell.php | 8 | 8 |
| /.aws/credentials | 5 | 4 |
허니팟 전략
- 환경 파일:
.env계열 (가장 인기) - WordPress: wp-login.php, xmlrpc.php
- Git 설정: .git/config (소스코드 유출 시도)
- 클라우드 자격증명: .aws/credentials
🚨 Top 공격자 IP
| IP | 공격 수 | 규칙 | 국가 | 차단 상태 |
|---|---|---|---|---|
| 1.221.16.187 | 1,188 | 4 | 🇰🇷 KR | ✅ 7일 차단 |
| 172.245.155.97 | 230 | 23 | 🇺🇸 US | ✅ 7일 차단 |
| 156.146.57.177 | 229 | 4 | 🇸🇬 SG | ✅ 7일 차단 |
| 34.234.167.16 | 156 | 2 | 🇺🇸 US | ✅ 7일 차단 |
| 124.60.145.37 | 125 | 16 | 🇰🇷 KR | 만료 (1개월 전) |
📅 일별 트렌드
| 날짜 | 로그 수 | SQL Injection | File Access | RCE |
|---|---|---|---|---|
| 03-11 | 1,490 | 554 | 111 | 8 |
| 03-12 | 89 | 0 | 0 | 10 |
| 03-10 | 41 | 0 | 0 | 4 |
| 03-09 | 272 | 0 | 78 | 12 |
| 03-08 | 92 | 0 | 1 | 10 |
🔥 특이사항: 03-11 SQL Injection 급증
- 평소 대비 500배 증가
- 1.221.16.187 (KR) 단일 IP
- 2분간 집중 공격 (10:15~10:17)
- 대응: libinjection으로 모두 차단 + 7일 차단
🔒 차단 시스템 효과
1️⃣ 자동차단 (Autoban)
- 규칙: 60분 내 10회 block → 자동 차단
- 최대 기록: 35.178.175.243 (GB) - 18회 block
- 평균: 10~15회 block 시 차단
2️⃣ 허니팟 차단
- /.env 접근: 즉시 1일 차단
- VPN/데이터센터: 7일 강화 차단
- 악성 봇 UA: Scrapy, sqlmap 등 즉시 차단
3️⃣ 수동 차단 (이번 조치)
1.221.16.187 → 7일 차단 (SQL Injection 1,188건)
172.245.155.97 → 7일 차단 (다종 공격 230건)
34.234.167.16 → 7일 차단 (File Access 156건)
📈 WAF 효과성 평가
✅ 강점
- 높은 차단률: 90.1% (3,744/4,157)
- OWASP CRS 효과: libinjection으로 SQL Injection 100% 차단
- 허니팟 성공: 493건 감지 (조기 탐지)
- 자동화: 자동차단 시스템 정상 작동
⚠️ 개선 필요
- False Positive: 일부 정상 요청 차단 가능성
- VPN 우회: VPN 사용 시 국가 기반 차단 무력화
- API 보호: PUT/PATCH/DELETE 메서드는 WAF 우회 중
🎯 향후 계획
즉시 조치
- Top 3 공격 IP 차단 (완료)
- SQL Injection 대응 강화
- 허니팟 확장 (/admin, /backup 추가)
중기 계획
- GeoIP 차단: 특정 국가 선택 차단
- Rate Limiting: IP당 요청 제한 강화
- Machine Learning: 패턴 기반 자동 차단
장기 계획
- SIEM 통합: Splunk/ELK 연동
- 위협 인텔리전스: 외부 IP 블랙리스트 연동
- 자동 보고서: 주간/월간 리포트 자동 생성
📌 결론
Caddy + Coraza WAF는 6주간 4,157건의 공격을 90.1% 차단하며 매우 우수한 성능을 보였습니다.
특히 OWASP CRS의 libinjection은 SQL Injection 공격을 100% 차단했으며, 허니팟 시스템은 493건의 공격을 조기 탐지했습니다.
자동차단 시스템은 반복 공격자를 효과적으로 차단했으며, 수동 차단으로 Top 3 공격 IP를 추가로 차단했습니다.
앞으로도 지속적인 모니터링과 개선을 통해 보안 수준을 한 단계 더 높일 예정입니다.
🔗 관련 글
📊 데이터 출처
- WAF 로그: PostgreSQL (waf_logs 테이블)
- 허니팟: waf_honeypot_hits 테이블
- 차단 이력: waf_bans 테이블
- 기간: 2026-01-29 ~ 2026-03-12