웹 서비스를 운영할 때 가장 먼저 노출되는 부분은 Application 자체가 아니라 외부 요청을 받는 Web Layer입니다.
사용자의 요청:
User
↓
Web Server
↓
Application
↓
Database
하지만 공격자는 Web Layer를 통해 다양한 공격을 시도합니다.
예:
악성 Request
↓
SQL Injection
↓
Application 공격
또는
비정상 Traffic
↓
서비스 과부하
↓
장애 발생
이러한 웹 공격을 차단하기 위해 사용하는 보안 계층이 WAF(Web Application Firewall)입니다.
기본 구조:
User
↓
WAF
↓
Reverse Proxy
↓
Application Container
↓
Database
WAF는 Application 앞단에서 HTTP 요청을 검사하고 악성 요청을 차단하는 역할을 합니다.
이번 글에서는 Docker Compose 환경에서 WAF 개념부터 Reverse Proxy 연동, ModSecurity 구성, 공격 차단 방식, Production 서버 보안 구조까지 알아보겠습니다.
WAF란 무엇인가?
WAF(Web Application Firewall)는 웹 Application을 보호하는 보안 방화벽입니다.
일반 Firewall:
Network Traffic 제어
WAF:
HTTP Request 분석
↓
웹 공격 차단
차단 대상:
- SQL Injection
- XSS 공격
- 악성 Bot
- 비정상 Request
- API 공격
Docker Compose 환경에서 WAF가 필요한 이유
기본 구조:
Internet
↓
Application
문제:
Application이 직접 공격에 노출됩니다.
WAF 적용:
Internet
↓
WAF
↓
Application
장점:
- 공격 필터링
- 보안 정책 적용
- 로그 분석
WAF와 Reverse Proxy 구조
실제 운영에서는 WAF와 Reverse Proxy를 함께 사용합니다.
구조:
User
↓
WAF
↓
Nginx
↓
Docker Container
역할:
WAF:
공격 검사
Nginx:
Traffic 전달
Container:
서비스 실행
Docker Compose WAF 기본 구조
예:
docker-compose.yml
services:
waf:
WAF Container
nginx:
Reverse Proxy
app:
Application
전체 흐름:
Client
↓
WAF Container
↓
Nginx Container
↓
Application Container
Docker Compose ModSecurity WAF 구성
대표적인 Open Source WAF:
ModSecurity
구조:
Nginx
+
ModSecurity
↓
Request 검사
기능:
- OWASP Rule 적용
- 공격 탐지
- Request 차단
Docker Compose WAF Request 처리 과정
정상 요청:
User
↓
WAF 검사
↓
통과
↓
Application
공격 요청:
User
↓
WAF 검사
↓
위험 판단
↓
차단
SQL Injection 차단
공격 예:
SELECT * FROM users WHERE id=' OR 1=1
WAF:
SQL Pattern 감지
↓
Request 차단
보호:
- Database 노출 방지
- Application 보호
XSS 공격 차단
공격:
<script>alert()</script>
WAF:
Script Pattern 탐지
↓
차단
보호:
- 사용자 데이터 보호
- Browser 공격 방지
Docker Compose WAF Rate Limit 구성
WAF는 Traffic 제한도 가능합니다.
문제:
Bot Request 증가
↓
Server 부하 증가
WAF:
IP 요청 제한
↓
서비스 보호
예:
1분당 100 요청 제한
Docker Compose WAF와 API Gateway 연결
Microservice 환경:
User
↓
WAF
↓
API Gateway
↓
Microservice
역할 분리:
WAF:
외부 공격 차단
API Gateway:
API Routing
Service Mesh:
내부 통신 관리
Docker Compose WAF Logging
보안에서는 Log 분석이 중요합니다.
수집:
- 차단 Request
- 공격 IP
- Rule 정보
- 시간
구조:
WAF
↓
Security Log
↓
ELK / Loki
↓
Analysis
Docker Compose WAF Monitoring 연동
Observability 통합:
WAF
↓
Metrics
↓
Prometheus
Logs
↓
Loki / ELK
Alerts
↓
Alertmanager
확인:
- 공격 횟수
- 차단 수
- 비정상 Traffic
Docker Compose WAF와 DDoS 대응
WAF는 Application Layer 공격을 보호합니다.
구조:
대량 Request
↓
WAF Filter
↓
정상 Traffic만 전달
하지만 대규모 DDoS는:
- CDN
- Cloud Provider 보호 서비스
와 함께 사용하는 것이 일반적입니다.
Docker Compose Production WAF 구조
실제 운영:
Internet
↓
CDN
↓
WAF
↓
Load Balancer
↓
API Gateway
↓
Docker Container
↓
Database
보안 계층:
외부 공격
↓
WAF
↓
Application 보호
Docker Compose WAF 운영 Best Practice
추천:
보안 Rule 관리
- OWASP Rule 적용
- 정기 업데이트
Logging
- 공격 기록 저장
- 분석 시스템 연결
Rate Limit
- 비정상 Traffic 제한
Monitoring
- 공격 알림 설정
테스트
- 정상 Request 확인
- False Positive 확인
자주 묻는 질문
WAF와 Firewall은 같은 것인가요?
다릅니다.
Firewall은 Network 보호, WAF는 Web Application 보호 목적입니다.
Docker Compose에서도 WAF 사용 가능한가요?
가능합니다.
Nginx ModSecurity 같은 형태로 Container 구성할 수 있습니다.
WAF만 있으면 모든 공격을 막을 수 있나요?
아닙니다.
Network 보안, Application 보안, Monitoring을 함께 구성해야 합니다.
작은 서버에도 WAF가 필요한가요?
외부 공개 서비스라면 기본적인 Web 보안 계층을 적용하는 것이 좋습니다.
마무리
Docker Compose WAF 구성은 외부 Web 공격으로부터 Container 기반 Application을 보호하는 중요한 보안 계층입니다.
최종 구조:
User
↓
WAF
↓
Reverse Proxy
↓
API Gateway
↓
Application Container
↓
Database
Production 서버는 단순히 서비스를 실행하는 것이 아니라 공격을 탐지하고 차단하는 보안 구조까지 함께 설계해야 합니다.
다음 글에서는 내부 네트워크까지 보호하는 최신 보안 모델인 Docker Compose Zero Trust 보안 아키텍처를 알아보겠습니다.