Docker Compose WAF 보안 구성 완벽 가이드! Web Application Firewall로 서버 보호하기

웹 서비스를 운영할 때 가장 먼저 노출되는 부분은 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 보안 아키텍처를 알아보겠습니다.

댓글 남기기