🔒 방화벽(Firewall)이란?
**방화벽(Firewall)**은 네트워크 트래픽을 모니터링하고 제어하는 보안 시스템입니다. 건물의 출입구에서 신분증을 확인하는 경비원과 비슷한 역할을 합니다.
방화벽의 주요 기능:
- IP 주소 기반 차단: 특정 IP에서 오는 모든 접속 차단
- 포트 제어: 특정 포트(예: 80, 443, 22)의 열기/닫기 관리
- 프로토콜 필터링: TCP, UDP, ICMP 등 네트워크 프로토콜 제어
- 네트워크 레벨 보호: OSI 모델의 3~4계층(네트워크/전송 계층)에서 작동
방화벽이 막는 것:
✅ 허용되지 않은 IP에서의 접속
✅ 차단된 포트로의 접근
✅ DDoS 공격의 일부
✅ 무차별 대입 공격(Brute Force)
방화벽이 못 막는 것:
❌ SQL 인젝션
❌ XSS(Cross-Site Scripting)
❌ 파일 업로드 취약점 공격
❌ 정상적인 HTTP 요청으로 위장한 공격
🛡️ WAF(Web Application Firewall)란?
WAF는 웹 애플리케이션을 보호하는 특수 방화벽입니다. 일반 방화벽이 “건물 입구”를 지킨다면, WAF는 “웹사이트 내부”를 지킵니다.
WAF의 주요 기능:
- HTTP/HTTPS 트래픽 분석: 웹 요청의 내용을 상세히 검사
- 애플리케이션 레벨 공격 차단: SQL 인젝션, XSS 등 웹 공격 방어
- 악성 봇 차단: 크롤링 봇, 스크래핑 봇 탐지 및 차단
- 애플리케이션 레벨 보호: OSI 모델의 7계층(애플리케이션 계층)에서 작동
WAF가 막는 것:
✅ SQL Injection (데이터베이스 공격)
✅ XSS (Cross-Site Scripting)
✅ CSRF (Cross-Site Request Forgery)
✅ 파일 업로드 악용
✅ 디렉토리 탐색(Path Traversal)
✅ 악성 봇, 스크래핑
✅ API 남용
WAF의 작동 방식:
사용자 요청
↓
WAF가 요청 내용 분석
↓
안전함? → 웹서버로 전달
위험함? → 차단 및 로깅
📊 방화벽 vs WAF 비교표
| 구분 | 방화벽 (Firewall) | WAF |
|---|---|---|
| 작동 계층 | 네트워크 계층 (L3-L4) | 애플리케이션 계층 (L7) |
| 주요 역할 | 네트워크 접근 제어 | 웹 애플리케이션 보호 |
| 분석 대상 | IP, 포트, 프로토콜 | HTTP 요청 내용, 쿠키, 헤더 |
| 차단 기준 | IP 주소, 포트 번호 | 공격 패턴, 요청 내용 |
| 보호 대상 | 전체 네트워크 | 웹사이트/웹앱 |
| SQL 인젝션 방어 | ❌ 불가능 | ✅ 가능 |
| DDoS 방어 | ⚠️ 부분적 가능 | ✅ 가능 (L7 DDoS) |
🎯 실전 예시로 이해하기
시나리오 1: 해커가 SSH 포트로 무차별 대입 공격
방화벽의 대응:
✅ SSH 포트(22번) 차단
✅ 특정 국가 IP 차단
✅ 짧은 시간 많은 연결 시도하는 IP 차단
→ 효과적으로 방어 가능
WAF의 대응:
❌ SSH는 웹 프로토콜이 아니므로 WAF 범위 밖
→ 방어 불가능
시나리오 2: 해커가 로그인 폼에 SQL 인젝션 시도
공격 예시:
sql
username: admin' OR '1'='1
password: anything
```
**방화벽의 대응:**
```
❌ 정상적인 HTTP 요청으로 보임
❌ IP도 포트도 정상
→ 통과시킴 (방어 실패)
```
**WAF의 대응:**
```
✅ 요청 내용에서 SQL 패턴 탐지
✅ 'OR '1'='1' 같은 공격 구문 발견
→ 차단 성공
```
### 시나리오 3: DDoS 공격
**일반 방화벽:**
```
⚠️ 네트워크 레벨 DDoS는 어느 정도 방어
❌ HTTP Flood 같은 L7 DDoS는 어려움
```
**WAF:**
```
✅ 봇 패턴 분석으로 악성 트래픽 구분
✅ 정상 사용자는 통과, 봇은 차단
✅ Rate Limiting으로 요청 속도 제한
```
---
## 🏢 실제 사용 사례
### WordPress 사이트를 예로:
**방화벽만 사용할 때:**
```
✅ SSH 접근 제한 (포트 22 차단)
✅ 특정 국가 IP 차단
✅ 관리자 페이지 IP 화이트리스트
❌ wp-login.php SQL 인젝션 공격 → 뚫림
❌ 플러그인 취약점 공격 → 뚫림
```
**WAF까지 사용할 때:**
```
✅ 모든 방화벽 기능
✅ SQL 인젝션 차단
✅ 플러그인 취약점 공격 차단
✅ 악성 봇 차단
✅ 파일 업로드 공격 차단
→ 훨씬 안전!
```
---
## 💡 어떤 것을 선택해야 할까?
### 방화벽만으로 충분한 경우:
- 정적 웹사이트 (HTML만 있는 사이트)
- 웹 기능이 거의 없는 서버
- 예산이 매우 제한적일 때
### WAF가 필수인 경우:
- WordPress, Laravel, Django 같은 **동적 웹사이트**
- 로그인 기능이 있는 사이트
- **개인정보를 다루는 사이트**
- 전자상거래 사이트
- API 서버
- **법적 규제 대상** (GDPR, PCI DSS 등)
---
## 🔧 대표적인 솔루션
### 방화벽:
**하드웨어:**
- Cisco ASA
- Fortinet FortiGate
- Palo Alto Networks
**소프트웨어:**
- iptables (Linux)
- UFW (Ubuntu)
- Windows Defender Firewall
- CSF (ConfigServer Firewall)
### WAF:
**클라우드 기반:**
- Cloudflare WAF ⭐ (가장 인기)
- AWS WAF
- Akamai Kona Site Defender
- Sucuri Website Firewall
**소프트웨어:**
- ModSecurity ⭐ (오픈소스)
- NAXSI
- Wordfence (WordPress 전용)
**올인원 보안:**
- Cloudflare (WAF + CDN + DDoS 방어)
- Sucuri (WAF + 악성코드 스캔)
---
## 📌 결론
### 핵심 정리:
```
방화벽 = 건물 경비원
- 누가 들어오는지 확인
- IP, 포트 기준으로 차단
WAF = 내부 보안요원
- 들어온 사람이 뭘 하는지 확인
- 공격 행위 패턴 탐지 및 차단
```
### 최고의 보안 전략:
```
방화벽 + WAF = 최강의 조합 🛡️
1. 방화벽으로 네트워크 레벨 보호
2. WAF로 웹 애플리케이션 레벨 보호
3. 정기적인 보안 업데이트
4. 백업 및 모니터링
❓ FAQ
Q: WAF만 있으면 방화벽은 필요 없나요? A: 아니요! 방화벽은 기본 보안이고, WAF는 추가 보호막입니다. 둘 다 필요합니다.
Q: 무료 WAF도 효과가 있나요? A: 네! Cloudflare 무료 플랜도 기본적인 WAF 기능을 제공합니다.
Q: 개인 블로그에도 WAF가 필요한가요? A: 로그인 기능이나 댓글 기능이 있다면 강력히 권장합니다.
Q: WAF를 쓰면 속도가 느려지나요? A: 클라우드 WAF(Cloudflare 등)는 CDN 기능도 있어서 오히려 빨라질 수 있습니다.