본문 바로가기
카테고리 없음

🛡️ WAF (웹 애플리케이션 방화벽)

by SuldenLion 2026. 2. 18.
반응형

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

http
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):

  1. 블랙리스트: OWASP Core Rule Set으로 알려진 공격 차단
  2. Rate Limiting: 초당 100 요청 이상 차단
  3. Bot Detection: JavaScript 챌린지로 봇 필터링
  4. Machine Learning: 정상 트래픽 패턴 학습

 

주요 WAF 솔루션

1. ModSecurity (오픈소스)

특징:

  • Apache, Nginx, IIS 모듈
  • OWASP ModSecurity Core Rule Set (CRS) 제공
  • 완전 무료

설치 예시 (Ubuntu + Nginx):

bash
# 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
 
nginx
http {
    modsecurity on;
    modsecurity_rules_file /etc/modsecurity/modsecurity.conf;
    
    server {
        listen 80;
        server_name example.com;
        
        location / {
            proxy_pass http://localhost:3000;
        }
    }
}
 
bash
# 5. Nginx 재시작
sudo systemctl restart nginx

장점:

  • 무료 및 오픈소스
  • 높은 커스터마이징
  • 활발한 커뮤니티

단점:

  • 복잡한 설정
  • 수동 규칙 관리
  • 성능 최적화 필요

 

2. Cloudflare WAF (클라우드)

특징:

  • 전 세계 300+ PoP
  • 자동 DDoS 방어
  • 무료 플랜 제공

설정 (5분 완료):

  1. Cloudflare 가입 및 도메인 추가
  2. 네임서버 변경 (도메인 등록 대행사에서)
  3. SSL/TLS 설정 → Full (Strict)
  4. 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 및 파트너 제공)
  • 종량제 과금

설정 예시:

bash
# 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 규칙:

apache
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 차단

apache
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:

json
{
  "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:

apache
# /search 경로는 SQL 패턴 검사 제외
SecRuleRemoveById 1000
SecRule REQUEST_URI "@streq /search" \
    "id:2000,\
    phase:1,\
    nolog,\
    pass,\
    ctl:ruleRemoveById=1000"

Cloudflare:

예외 규칙:
- 경로: /search
- 조건: 모든 SQL Injection 규칙 우회

 

 

2. 로그 분석 및 튜닝

bash
# ModSecurity 로그 확인
sudo tail -f /var/log/modsec_audit.log

# 오탐 패턴 분석
grep "id:1000" /var/log/modsec_audit.log | less

 

 

3. 점진적 배포 (Monitoring → Blocking)

  1. Monitoring 모드: 차단하지 않고 로그만 기록
  2. 1~2주 관찰: 오탐 패턴 파악
  3. 예외 규칙 추가
  4. 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를 지금 배포하세요.

반응형

댓글