993. WAF (웹 방화벽) - Web Application Firewall L7 계층 웹 특화 보안 HTTP 트래픽 검사 SQL 인젝션 XSS 차단 암호화 복호화 탐지망 통제 모델
핵심 인사이트 (3줄 요약)
- 기존 네트워크 방화벽(L3/L4)은 IP와 포트만 검사하므로 80/443 포트를 통한 웹 애플리케이션 해킹 방어가 불가능합니다.
- WAF는 응용 계층(L7)에서 HTTP/HTTPS 트래픽의 본문(페이로드)까지 깊이 분석하여 SQL 인젝션, XSS 등을 핀셋 방어합니다.
- HTTPS 환경에서는 WAF가 암호화를 해독(SSL 오프로딩)하여 내부를 샅샅이 검사한 후, 안전한 트래픽만 실제 웹 서버로 전달합니다.
Ⅰ. 기존 전통적 방화벽(L3/L4)의 한계
- 기존 네트워크 방화벽은 IP와 포트 번호(도착지 80번, 443번 등)만 확인하고 정상 패킷으로 간주합니다.
- 웹 서버 운영을 위해 80번(HTTP)과 443번(HTTPS) 포트는 항상 개방되어 있어야 합니다.
- 해커는 정상적인 웹 브라우저를 통해 80/443 포트로 접속한 후, 검색창 등에 악성 코드(웹 해킹)를 주입하여 기존 방화벽을 쉽게 우회합니다.
📢 섹션 요약 비유: 기존 방화벽은 공항의 '티켓 확인원'과 같습니다. 미국행 티켓(80번 포트)만 있으면 가방 안에 폭탄이 있어도 무사통과시켜 테러에 무방비한 상태입니다.
Ⅱ. WAF (Web Application Firewall)의 개념
- 개념: OSI 7계층 중 최상위인 **응용 계층(Layer 7)**에서 동작하는 웹 애플리케이션 특화 방화벽입니다.
- HTTP와 HTTPS 웹 트래픽의 '페이로드(본문 내용물)' 전체를 샅샅이 검사하여, 웹 서버를 노리는 악성 공격(OWASP Top 10)을 탐지하고 차단합니다.
📢 섹션 요약 비유: WAF는 공항의 '초정밀 수하물 X-ray 검색대'입니다. 티켓이 정상이라도 가방을 열어 내용물(HTTP 패킷)을 끝까지 확인하여 폭발물(해킹 코드)을 족집게처럼 찾아냅니다.
Ⅲ. WAF의 주요 방어 대상 (3대 웹 해킹)
WAF는 단순한 규칙이 아닌 텍스트 문맥을 분석하는 방어 시스템입니다.
- SQL 인젝션 (SQL Injection):
- 해커가 로그인 창에
' OR 1=1 --같은 데이터베이스 조작 쿼리를 입력할 때, WAF가 이를 SQL 공격으로 인지하고 즉각 차단합니다.
- 해커가 로그인 창에
- 크로스 사이트 스크립팅 (XSS):
- 게시판 등에
<script>해킹코드</script>를 삽입하려는 시도를 페이로드 검사를 통해 차단합니다.
- 게시판 등에
- 웹쉘(Web Shell) 업로드 및 L7 디도스:
- 악성 스크립트 파일(
해킹.jpg.php) 업로드나 정상적인 HTTP 요청을 위장하여 서버 자원을 고갈시키는 Slowloris(L7 DDoS) 공격을 방어합니다.
- 악성 스크립트 파일(
📢 섹션 요약 비유: WAF는 편지를 꼼꼼히 읽어보는 '검열관'입니다. 겉봉투가 멀쩡해도 편지 내용에 '은행 털자(SQL)', '바이러스 유포(XSS)' 같은 위험한 단어가 있으면 즉시 불태워버립니다.
Ⅳ. HTTPS 암호화 통신과 WAF의 진화 (프록시 아키텍처)
HTTPS(암호화 통신) 환경에서는 트래픽이 암호화되어 WAF가 내용을 읽을 수 없는 문제가 발생합니다.
- 해결책 (Reverse Proxy 아키텍처):
- WAF가 웹 서버 앞단에 '대리인(프록시)'으로 위치합니다.
- 클라이언트(해커 포함)는 WAF와 HTTPS 통신을 맺고, WAF가 암호화된 트래픽을 먼저 복호화(SSL Offloading)하여 내용을 검사합니다.
- 무결성이 확인된 안전한 트래픽만 WAF가 뒷단의 웹 서버로 전달합니다. 이로 인해 웹 서버의 암호 해독 부하도 감소하는 이점을 얻습니다.
📢 섹션 요약 비유: WAF는 대통령(웹 서버) 앞을 지키는 '경호실장'입니다. 꽁꽁 싸인 비밀 택배(HTTPS)가 오면, 경호실장이 먼저 뜯어서(복호화) 폭탄이 없는지 꼼꼼히 확인한 후 안전한 물건만 대통령에게 전달합니다.
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Attacker/ │ │ WAF │ │ Web Server │
│ Client │ │ (L7 Proxy) │ │ (DB & App) │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
│ 1. HTTPS Request │ │
│ (SQLi, XSS 캡슐화) │ │
├───────────────────────►│ │
│ │ 2. SSL 복호화 │
│ │ & 페이로드 검사 │
│ ├─┐ │
│ │ │ 3. 악성 코드 탐지 │
│ │◄┘ (Block!) │
│ 4. 차단 응답(403) │ │
│◄───────────────────────┤ │
│ │ │
│ 1. 정상 HTTPS Request │ │
├───────────────────────►│ 2. 검사 (Pass) │
│ │ │
│ │ 3. HTTP로 안전 전달 │
│ ├───────────────────────►│
│ │ │
👶 어린이를 위한 3줄 비유 설명
- **나쁜 마법사(해커)**가 성문(방화벽)을 몰래 통과하기 위해 투명망토(80번 포트)를 쓰고 성 안으로 들어왔어요!
- 하지만 성문 바로 뒤에는 투명망토 속까지 꿰뚫어 보는 **마법 거울(WAF)**이 든든하게 버티고 있었죠.
- 마법 거울이 투명망토 속에 숨겨진 독사과(SQL 인젝션, 악성코드)를 재빨리 발견하고 삐뽀삐뽀 울려서 성을 안전하게 지켰답니다!