WAF (웹 애플리케이션 방화벽) 완전 가이드: OSI 7계층을 지키는 최후의 보루
네트워크 방화벽을 뚫고 들어오는 공격들
2024년 4분기, 전 세계적으로 51만 2천 건의 DDoS 공격이 기록되었습니다. 하지만 더 심각한 문제는, 네트워크 방화벽을 정상 HTTP 트래픽으로 위장하여 통과하는 애플리케이션 계층 공격입니다.
시나리오:
공격자 → [SQL Injection 페이로드]
→ 네트워크 방화벽: "포트 443, HTTPS 트래픽 → 정상!" → 통과
→ 웹 애플리케이션: 데이터베이스 유출...
네트워크 방화벽(Firewall)은 IP 주소와 포트 번호를 기준으로 트래픽을 필터링합니다. HTTP 요청이 80번 또는 443번 포트로 들어오면 "정상 웹 트래픽"으로 판단하고 통과시킵니다.
하지만 그 HTTP 요청 안에 SQL Injection, XSS, CSRF 같은 악성 페이로드가 숨어있다면? 네트워크 방화벽은 이를 탐지할 수 없습니다.
이것이 바로 "WAF(Web Application Firewall, 웹 애플리케이션 방화벽)"가 필요한 이유입니다. WAF는 "OSI 7계층(애플리케이션 계층)"에서 HTTP/HTTPS 트래픽의 내용을 분석하여, OWASP Top 10 공격을 차단합니다.
이 글에서는 WAF가 무엇인지, 네트워크 방화벽과의 차이, 3세대 진화 과정, 배포 유형, 주요 솔루션, 그리고 실전 설정 방법까지 완전히 정리하겠습니다.
WAF란 무엇인가? — 리버스 프록시로 작동하는 보안 계층
정의
WAF(Web Application Firewall) 는 웹 애플리케이션과 인터넷 사이에 위치하여, HTTP/HTTPS 트래픽을 검사하고 악성 요청을 차단하는 보안 시스템입니다.
리버스 프록시 (Reverse Proxy)
WAF는 리버스 프록시 방식으로 작동합니다.
일반 프록시 (Forward Proxy):
클라이언트 → [프록시] → 서버
(클라이언트 IP 숨김)
리버스 프록시 (WAF):
클라이언트 → [WAF/리버스 프록시] → 웹 서버
(서버를 보호)
모든 HTTP 요청은 먼저 WAF를 거쳐 웹 서버로 전달됩니다. WAF가 악성 요청을 차단하면, 웹 서버는 공격을 전혀 받지 않습니다.
네트워크 방화벽 vs WAF — 무엇이 다른가?
비교표
| 항목 |
네트워크 방화벽 (Firewall) | WAF (Web Application Firewall) |
| OSI 계층 | 3~4계층 (네트워크, 전송) | 7계층 (애플리케이션) |
| 검사 대상 | IP 주소, 포트 번호 | HTTP 요청 내용 |
| 차단 기준 | "192.168.x.x에서 22번 포트 차단" | "SQL Injection 패턴 차단" |
| 방어 대상 | DDoS, 포트 스캔 | OWASP Top 10 (SQLi, XSS, CSRF 등) |
| 프로토콜 | TCP/UDP, ICMP | HTTP/HTTPS |
| 배치 위치 | 네트워크 경계 | 웹 앱 앞단 |
실전 시나리오
공격: SQL Injection
POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
username=admin' OR '1'='1' --&password=any
네트워크 방화벽 판단:
✅ 출발지 IP: 공개 IP (정상)
✅ 목적지 포트: 443 (HTTPS, 정상)
✅ 프로토콜: TCP (정상)
→ 통과!
WAF 판단:
❌ username 파라미터에 SQL 구문 포함 (' OR '1'='1' --)
❌ SQL Injection 패턴 매칭
→ 차단! (403 Forbidden)
결론: 네트워크 방화벽만으로는 애플리케이션 계층 공격을 막을 수 없습니다.
WAF의 3세대 진화
1세대 WAF — 블랙리스트 + 화이트리스트 수동 관리
특징:
- 블랙리스트: 알려진 공격 패턴(시그니처) 차단
- 화이트리스트: 허용된 URL, 파라미터만 통과
문제점:
- 관리자가 수동으로 규칙 작성 및 관리
- 빠르게 변화하는 웹 환경에 부적합
- 높은 관리 부담
2세대 WAF — 자동 화이트리스트 생성
특징:
- 웹 애플리케이션을 수 주간 모니터링하여 자동으로 화이트리스트 생성
문제점:
- 학습 기간 동안 무방비 상태
- 빠른 배포/업데이트 환경에 부적합
- 여전히 높은 오탐율
3세대 WAF — 지능형 WAF (현재)
특징:
- 하이브리드 탐지: 블랙리스트 + 화이트리스트 + 행동 분석
- 머신러닝/AI: 정상 트래픽 패턴 학습
- 로지컬 결합: 공격 유형별로 최적의 탐지 기법 조합
장점:
- 낮은 오탐율
- 제로데이 공격 방어
- 자동 업데이트
대표 솔루션:
- Cloudflare WAF
- AWS WAF (Managed Rules + AI)
- F5 Advanced WAF
- Imperva WAF
WAF의 배포 유형
1. 네트워크 기반 WAF (Hardware Appliance)
특징:
- 물리적 하드웨어 장비
- LAN(Local Area Network) 내부에 설치
- 웹 서버와 물리적으로 가까움
장점:
- 매우 빠른 성능 (전용 하드웨어)
- 낮은 지연 시간 (로컬 네트워크)
- 높은 처리량
단점:
- 높은 초기 비용 (수천만 원)
- 설치 및 유지보수 비용
- 확장성 제한 (하드웨어 교체 필요)
적합한 사용자:
- 대기업, 금융기관
- 온프레미스 환경
- 높은 트래픽 처리 필요
2. 호스트 기반 WAF (Software)
특징:
- 웹 서버에 소프트웨어로 설치
- Apache 모듈, Nginx 모듈 형태
장점:
- 저렴한 비용
- 높은 커스터마이징
- 애플리케이션과 밀접한 통합
단점:
- 서버 자원 소모 (CPU, 메모리)
- 복잡한 설정 및 유지보수
- 서버마다 개별 설치 필요
대표 솔루션:
- ModSecurity (오픈소스)
- NAXSI (Nginx 전용)
적합한 사용자:
- 중소기업, 스타트업
- 기술적 역량이 있는 팀
3. 클라우드 기반 WAF (SaaS)
특징:
- 완전 관리형 서비스
- DNS 변경만으로 즉시 적용
- 전 세계 PoP(Point of Presence)에서 분산 처리
장점:
- 즉시 배포 (DNS 변경 5분)
- 자동 업데이트 (제로데이 방어)
- 확장성 (트래픽 급증 자동 처리)
- 낮은 초기 비용 (월 구독)
- CDN 통합 (성능 향상)
단점:
- 제3자에게 보안 의존
- 일부 기능이 "블랙박스"
- 커스터마이징 제한
대표 솔루션:
- Cloudflare WAF (시장 점유율 1위)
- AWS WAF
- Akamai Kona
- Imperva Cloud WAF
적합한 사용자:
- 거의 모든 조직 (특히 클라우드 네이티브)
- 빠른 배포 필요
- 관리 부담 최소화
WAF의 보안 모델
네거티브 보안 모델 (Negative Security Model / 블랙리스트)
원칙: "알려진 나쁜 것을 차단"
작동 방식:
- 공격 시그니처 데이터베이스 유지
- 요청이 시그니처와 매칭되면 차단
예시:
규칙: URL에 "<script>" 포함 시 차단
요청: GET /search?q=<script>alert(1)</script>
→ 차단!
장점:
- 빠른 배포 (학습 불필요)
- 낮은 오탐율 (정상 트래픽은 대부분 통과)
단점:
- 제로데이 공격 취약 (알려지지 않은 공격)
- 시그니처 우회 가능 (난독화 등)
포지티브 보안 모델 (Positive Security Model / 화이트리스트)
원칙: "허용된 좋은 것만 통과"
작동 방식:
- 허용된 URL, 파라미터, 값의 패턴 정의
- 정의되지 않은 모든 것 차단
예시:
규칙: /api/user?id=[숫자 1~6자리]만 허용
요청1: GET /api/user?id=12345 → 허용
요청2: GET /api/user?id=abc → 차단
요청3: GET /api/user?name=test → 차단 (name 파라미터 미정의)
장점:
- 제로데이 방어 (알려지지 않은 공격도 차단)
- 매우 강력한 보안
단점:
- 높은 오탐율 (정상 요청도 차단 가능)
- 복잡한 설정 및 유지보수
- 애플리케이션 변경 시 규칙 업데이트 필요
하이브리드 모델 (3세대 WAF)
현대 WAF는 블랙리스트 + 화이트리스트 + 행동 분석 + AI를 조합합니다.
예시 (Cloudflare WAF):
- 블랙리스트: OWASP Core Rule Set으로 알려진 공격 차단
- Rate Limiting: 초당 100 요청 이상 차단
- Bot Detection: JavaScript 챌린지로 봇 필터링
- Machine Learning: 정상 트래픽 패턴 학습
주요 WAF 솔루션
1. ModSecurity (오픈소스)
특징:
- Apache, Nginx, IIS 모듈
- OWASP ModSecurity Core Rule Set (CRS) 제공
- 완전 무료
설치 예시 (Ubuntu + Nginx):
# 1. ModSecurity 설치
sudo apt update
sudo apt install libnginx-mod-security
# 2. 설정 파일 복사
sudo cp /usr/share/modsecurity-crs/crs-setup.conf.example /etc/modsecurity/crs-setup.conf
# 3. Core Rule Set 활성화
sudo ln -s /usr/share/modsecurity-crs /etc/modsecurity/
# 4. Nginx 설정
sudo nano /etc/nginx/nginx.conf
http {
modsecurity on;
modsecurity_rules_file /etc/modsecurity/modsecurity.conf;
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
}
}
}
# 5. Nginx 재시작
sudo systemctl restart nginx
장점:
- 무료 및 오픈소스
- 높은 커스터마이징
- 활발한 커뮤니티
단점:
- 복잡한 설정
- 수동 규칙 관리
- 성능 최적화 필요
2. Cloudflare WAF (클라우드)
특징:
- 전 세계 300+ PoP
- 자동 DDoS 방어
- 무료 플랜 제공
설정 (5분 완료):
- Cloudflare 가입 및 도메인 추가
- 네임서버 변경 (도메인 등록 대행사에서)
- SSL/TLS 설정 → Full (Strict)
- WAF 규칙 설정:
Cloudflare Dashboard
→ Security
→ WAF
→ Managed Rules
✅ Cloudflare Managed Ruleset (무료)
✅ OWASP Core Ruleset (Pro 이상)
→ Custom Rules
규칙 1: SQL Injection 패턴 차단
규칙 2: 특정 국가 IP 차단
가격:
- Free: 기본 DDoS + 5개 페이지 규칙
- Pro ($20/월): OWASP 규칙 + 20개 페이지 규칙
- Business ($200/월): 고급 WAF + 125개 규칙
- Enterprise (협의): 완전 커스터마이징
3. AWS WAF
특징:
- AWS 서비스와 완벽한 통합 (CloudFront, ALB, API Gateway)
- Managed Rules (AWS 및 파트너 제공)
- 종량제 과금
설정 예시:
# AWS CLI로 WAF 설정
# 1. Web ACL 생성
aws wafv2 create-web-acl \
--name MyWebACL \
--scope REGIONAL \
--default-action Allow={} \
--rules file://rules.json
# rules.json:
{
"Name": "SQLInjectionRule",
"Priority": 1,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesSQLiRuleSet"
}
},
"Action": { "Block": {} },
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "SQLInjectionRule"
}
}
Managed Rule Groups (추천):
- AWS Core Rule Set: OWASP Top 10
- Known Bad Inputs: 알려진 악성 패턴
- SQL Database: SQL Injection 전문
- Linux/Windows OS: OS 명령 주입 방어
가격:
- Web ACL: $5/월
- 규칙: $1/월 per rule
- 요청: $0.60 per 백만 요청
실전 WAF 규칙 설정
시나리오 1: SQL Injection 차단
ModSecurity 규칙:
SecRule ARGS "@detectSQLi" \
"id:1000,\
phase:2,\
deny,\
status:403,\
msg:'SQL Injection Attempt',\
log,\
auditlog"
Cloudflare Custom Rule:
(http.request.uri.query contains "' OR '1'='1") or
(http.request.uri.query contains "UNION SELECT") or
(http.request.uri.query contains "DROP TABLE")
시나리오 2: XSS 차단
SecRule ARGS "@detectXSS" \
"id:1001,\
phase:2,\
deny,\
msg:'XSS Attack'"
시나리오 3: Rate Limiting (DDoS 방어)
Cloudflare:
Rate Limit Rule:
- 경로: /api/*
- 속도: 100 requests per 10 seconds
- 조치: Challenge (CAPTCHA) 또는 Block
AWS WAF:
{
"Name": "RateLimitRule",
"Statement": {
"RateBasedStatement": {
"Limit": 2000,
"AggregateKeyType": "IP"
}
},
"Action": { "Block": {} }
}
시나리오 4: 지역 차단 (Geo-Blocking)
Cloudflare:
- 국가: 북한, 중국, 러시아
- 조치: Block
AWS WAF:
- GeoMatchStatement: ["KP", "CN", "RU"]
- Action: Block
오탐 (False Positive) 처리
WAF의 가장 큰 과제는 정상 트래픽을 공격으로 오인하는 것입니다.
오탐 사례
정상 요청:
GET /search?q=select * from table_name
WAF 판단:
❌ "SELECT", "FROM" 키워드 포함 → SQL Injection!
→ 차단 (오탐!)
해결 방법
1. 예외 규칙 추가
ModSecurity:
# /search 경로는 SQL 패턴 검사 제외
SecRuleRemoveById 1000
SecRule REQUEST_URI "@streq /search" \
"id:2000,\
phase:1,\
nolog,\
pass,\
ctl:ruleRemoveById=1000"
Cloudflare:
예외 규칙:
- 경로: /search
- 조건: 모든 SQL Injection 규칙 우회
2. 로그 분석 및 튜닝
# ModSecurity 로그 확인
sudo tail -f /var/log/modsec_audit.log
# 오탐 패턴 분석
grep "id:1000" /var/log/modsec_audit.log | less
3. 점진적 배포 (Monitoring → Blocking)
- Monitoring 모드: 차단하지 않고 로그만 기록
- 1~2주 관찰: 오탐 패턴 파악
- 예외 규칙 추가
- Blocking 모드 활성화
WAF vs IPS vs NGFW 비교
| 항목 |
WAF | IPS | NGFW |
| 계층 | 7 (애플리케이션) | 3~4 (네트워크) | 3~7 (통합) |
| 주요 방어 | OWASP Top 10 | 네트워크 침입 | 모든 계층 |
| 프로토콜 | HTTP/HTTPS | 모든 프로토콜 | 모든 프로토콜 |
| 배치 | 웹 앱 앞단 | 네트워크 경계 | 네트워크 경계 |
| 가격 | 중간 | 높음 | 매우 높음 |
결론: WAF + 네트워크 방화벽 = 최상의 조합
개발자를 위한 WAF 체크리스트
배포 전
- WAF 솔루션 선택 (클라우드 vs 온프레미스)
- 초기 모드를 Monitoring으로 설정
- 로깅 활성화 및 모니터링 도구 연동
초기 운영
- 1~2주간 모니터링 모드 운영
- 오탐 로그 분석 및 예외 규칙 추가
- 정상 트래픽 패턴 학습
Blocking 모드 전환
- 점진적 활성화 (일부 규칙만 먼저)
- 24시간 모니터링
- 긴급 대응 프로세스 수립
지속적 관리
- 주간 로그 리뷰
- 월간 규칙 업데이트
- 새로운 공격 패턴 반영
- 성능 모니터링 (지연 시간)
마지막으로
네트워크 방화벽이 네트워크 계층의 문지기라면, WAF는 애플리케이션 계층의 정밀 검사관입니다. SQL Injection, XSS, CSRF — 이 모든 OWASP Top 10 공격은 정상 HTTP 트래픽으로 위장하여 네트워크 방화벽을 통과합니다.
핵심 원칙:
① 네트워크 방화벽만으로는 웹 애플리케이션을 보호할 수 없다
② WAF는 OSI 7계층에서 HTTP 내용을 분석한다
③ 클라우드 WAF로 5분 만에 배포 가능 (Cloudflare, AWS WAF)
④ 오탐 처리가 성공의 핵심 (Monitoring → Blocking)
⑤ 3세대 WAF는 AI로 제로데이 공격도 방어
스타트업이라면 Cloudflare WAF 무료 플랜으로 시작하세요. AWS를 사용한다면 AWS WAF + Managed Rules로 즉시 보호할 수 있습니다. 기술적 역량이 있다면 ModSecurity로 완전한 커스터마이징이 가능합니다.
웹 애플리케이션 보안의 마지막 방어선, WAF를 지금 배포하세요.
댓글