프록시(Proxy)는 네트워크에서 클라이언트와 서버 사이에 위치하여 중계 역할을 하는 서버입니다. 단순히 트래픽을 전달하는 것 이상으로, 보안 강화, 성능 최적화, 접근 제어 등 다양한 목적으로 활용됩니다.
이 글에서는 프록시를 체계적으로 분류하고, 각 유형에 맞는 Docker 기반 오픈소스 솔루션을 매핑하여 실무에서 바로 활용할 수 있도록 정리했습니다.
1. 방향 기준 분류
프록시를 가장 기본적으로 구분하는 방법은 트래픽의 방향입니다.
포워드 프록시 (Forward Proxy)
방향: 내부 → 외부
포워드 프록시는 내부 네트워크의 클라이언트를 대신하여 외부 인터넷에 요청을 보내는 중계자입니다. 회사에서 직원들의 인터넷 사용을 모니터링하거나 특정 사이트를 차단할 때 주로 사용합니다.
주요 활용 사례
- 기업 내부 인터넷 사용 정책 적용
- 악성 사이트 접근 차단
- 대역폭 절약을 위한 캐싱
- 사용자 활동 로깅 및 감사
오픈소스 솔루션
| 솔루션 | 특징 | Docker 이미지 |
|---|---|---|
| Squid | 가장 대표적인 포워드 프록시. ACL, 인증, 캐싱 기능이 강력하고 20년 이상 검증된 안정성 보유 | ubuntu/squid |
| Tinyproxy | 메모리 2MB 이하로 동작하는 초경량 프록시. 단순한 환경에 적합 | vimagick/tinyproxy |
| Privoxy | 프라이버시 보호에 특화. 광고 차단, 쿠키 필터링, 헤더 조작 기능 내장 | vimagick/privoxy |
| 3proxy | HTTP, SOCKS, POP3 등 다양한 프로토콜을 하나로 지원하는 다목적 프록시 | 3proxy/3proxy |
리버스 프록시 (Reverse Proxy)
방향: 외부 → 내부
리버스 프록시는 외부 클라이언트의 요청을 받아 내부 서버로 전달합니다. 클라이언트는 리버스 프록시와만 통신하므로 실제 서버의 존재를 알 수 없습니다.
주요 활용 사례
- 웹 서버 보호 (실제 서버 IP 숨김)
- SSL/TLS 종료 (인증서 관리 일원화)
- 로드밸런싱 (트래픽 분산)
- 정적 콘텐츠 캐싱
오픈소스 솔루션
| 솔루션 | 특징 | Docker 이미지 |
|---|---|---|
| Nginx | 업계 표준. 높은 동시 접속 처리 능력과 낮은 메모리 사용량. 설정 유연성 뛰어남 | nginx:alpine |
| Traefik | 컨테이너 환경 최적화. Docker/Kubernetes 서비스 자동 감지, Let’s Encrypt 자동화 | traefik:v3.0 |
| Caddy | 자동 HTTPS가 기본. Caddyfile 문법으로 설정이 매우 간단 | caddy:latest |
| HAProxy | TCP/HTTP 로드밸런싱의 표준. 엔터프라이즈급 안정성과 상세한 헬스체크 | haproxy:latest |
| Nginx Proxy Manager | Nginx를 웹 GUI로 관리. 초보자도 쉽게 SSL 인증서 적용 가능 | jc21/nginx-proxy-manager |
2. 동작 방식 기준 분류
클라이언트가 프록시의 존재를 인지하는지 여부에 따른 분류입니다.
명시적 프록시 (Explicit Proxy)
클라이언트(브라우저, 앱)에서 직접 프록시 서버의 IP와 포트를 설정해야 합니다. 사용자가 프록시를 경유한다는 것을 명확히 알고 있습니다.
동작 방식
- 클라이언트가 브라우저/시스템에 프록시 설정 (예: 192.168.1.100:3128)
- 모든 HTTP(S) 요청이 설정된 프록시 서버로 전송
- 프록시가 목적지 서버에 대신 요청 후 응답 전달
오픈소스 솔루션
| 솔루션 | 특징 | Docker 이미지 |
|---|---|---|
| Squid | 명시적/투명 모드 모두 지원. 기업 환경에서 가장 많이 사용 | ubuntu/squid |
| Tinyproxy | 명시적 전용. 설정 파일 단 하나로 구성 완료 | vimagick/tinyproxy |
| Privoxy | HTTP 전용이지만 필터링 규칙이 매우 상세함 | vimagick/privoxy |
| 3proxy | HTTP와 SOCKS를 동시에 제공 가능 | 3proxy/3proxy |
투명 프록시 (Transparent Proxy)
클라이언트 설정 없이 네트워크 단에서 트래픽을 강제로 프록시 서버로 우회시킵니다. 사용자는 프록시 존재를 인지하지 못합니다.
동작 방식
- 라우터/방화벽에서 특정 포트(80, 443) 트래픽을 프록시로 리다이렉트
- iptables 규칙:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128 - 프록시가 원본 목적지 정보를 파악하여 대신 요청
오픈소스 솔루션
| 솔루션 | 특징 | Docker 이미지 |
|---|---|---|
| Squid | http_port 3128 intercept 설정으로 투명 모드 활성화 | ubuntu/squid |
| mitmproxy | 투명 모드 + 실시간 트래픽 분석. 개발/디버깅에 최적 | mitmproxy/mitmproxy |
⚠️ 주의: 투명 프록시 구성 시 iptables 또는 네트워크 장비 설정이 필수입니다. HTTPS 투명 프록시는 SSL Bump 설정과 자체 CA 인증서 배포가 필요합니다.
3. 기능 기준 분류
프록시가 제공하는 핵심 기능에 따른 분류입니다.
캐싱 프록시 (Caching Proxy)
자주 요청되는 콘텐츠를 로컬에 저장하여 응답 속도를 높이고 대역폭을 절약합니다.
동작 원리
- 첫 요청 시 원본 서버에서 콘텐츠를 가져와 캐시에 저장
- 이후 동일 요청은 캐시에서 직접 응답 (Cache Hit)
- HTTP 헤더(Cache-Control, ETag, Last-Modified)를 기반으로 캐시 유효성 판단
오픈소스 솔루션
| 솔루션 | 특징 | Docker 이미지 |
|---|---|---|
| Squid | 포워드 캐싱의 대명사. 디스크/메모리 캐시 세밀한 제어 가능 | ubuntu/squid |
| Varnish | HTTP 가속기. 메모리 기반으로 초고속. VCL로 캐시 로직 프로그래밍 | varnish:stable |
| Nginx | 리버스 프록시 캐싱. proxy_cache 지시어로 간단 설정 | nginx:alpine |
익명 프록시 (Anonymous Proxy)
클라이언트의 실제 IP 주소를 숨겨 익명성을 제공합니다.
익명성 수준
- 투명(Transparent): 프록시 사용 사실과 원본 IP 모두 노출
- 익명(Anonymous): 프록시 사용은 알 수 있으나 원본 IP는 숨김
- 고익명(Elite/High Anonymity): 프록시 사용 여부조차 숨김
오픈소스 솔루션
| 솔루션 | 특징 | Docker 이미지 |
|---|---|---|
| Privoxy | X-Forwarded-For 등 식별 헤더 제거. 필터링 규칙 상세 설정 | vimagick/privoxy |
| Tor | 다중 릴레이(onion routing)로 최고 수준 익명성. 속도는 느림 | dperson/torproxy |
| Shadowsocks | 암호화된 SOCKS5 프록시. 검열 우회 목적으로 설계 | shadowsocks/shadowsocks-libev |
SSL 프록시 (SSL/TLS Inspection Proxy)
HTTPS 트래픽을 중간에서 복호화하여 내용을 검사한 후 재암호화합니다.
동작 방식 (SSL Bump / MITM)
- 프록시가 자체 CA 인증서 보유
- 클라이언트 요청 시 프록시가 가짜 인증서 발급
- 프록시 ↔ 클라이언트: 프록시 CA로 암호화
- 프록시 ↔ 서버: 실제 서버 인증서로 암호화
- 중간에서 평문 트래픽 검사 가능
오픈소스 솔루션
| 솔루션 | 특징 | Docker 이미지 |
|---|---|---|
| mitmproxy | 실시간 HTTPS 트래픽 분석. 웹 UI(mitmweb), CLI(mitmdump) 제공 | mitmproxy/mitmproxy |
| Squid | SSL Bump 기능으로 기업 환경 HTTPS 검사. 대규모 배포에 적합 | ubuntu/squid |
⚠️ 주의: SSL 검사를 위해서는 자체 CA 인증서를 클라이언트에 신뢰 인증서로 배포해야 합니다. 개인정보 보호 관련 법적 검토가 필요할 수 있습니다.
웹 프록시 (Web Proxy)
HTTP/HTTPS 프로토콜만 처리하는 프록시입니다. 대부분의 포워드 프록시가 이에 해당합니다.
오픈소스 솔루션
| 솔루션 | 특징 | Docker 이미지 |
|---|---|---|
| Squid | HTTP/HTTPS 전문. FTP 프록시도 지원 | ubuntu/squid |
| Tinyproxy | HTTP 전용. 약 2MB 메모리로 동작하는 초경량 | vimagick/tinyproxy |
| Privoxy | HTTP 필터링 특화. SOCKS와 연동 가능 | vimagick/privoxy |
SOCKS 프록시
애플리케이션 계층이 아닌 세션 계층에서 동작하여 모든 TCP(일부 UDP) 트래픽을 처리합니다.
HTTP 프록시 vs SOCKS 프록시
- HTTP 프록시: HTTP/HTTPS만 처리, URL 기반 필터링 가능
- SOCKS 프록시: 프로토콜 무관 (SSH, FTP, 게임 등), 더 낮은 레벨에서 동작
버전별 차이
- SOCKS4: TCP만 지원, 인증 없음
- SOCKS4a: 도메인 이름 지원 추가
- SOCKS5: UDP 지원, 다양한 인증 방식, IPv6 지원
오픈소스 솔루션
| 솔루션 | 특징 | Docker 이미지 |
|---|---|---|
| Dante | SOCKS4/5 서버의 표준. 상세한 ACL과 인증 지원 | wernight/dante |
| 3proxy | SOCKS + HTTP를 하나의 데몬으로 제공 | 3proxy/3proxy |
| Shadowsocks | SOCKS5 기반 암호화 프록시. 모바일 앱도 제공 | shadowsocks/shadowsocks-libev |
| microsocks | 단일 바이너리, 약 20KB. 가장 가벼운 SOCKS5 서버 | vimagick/microsocks |
4. 보안 관점 분류
기업 보안 아키텍처에서 사용되는 보안 특화 프록시입니다.
SWG (Secure Web Gateway)
웹 트래픽에 대한 종합적인 보안 검사를 수행합니다. URL 필터링, 악성코드 검사, 데이터 유출 탐지 등을 통합 제공합니다.
주요 기능
- URL 카테고리 기반 차단 (도박, 성인, 악성 사이트 등)
- 실시간 악성코드 스캐닝
- SSL 검사를 통한 암호화 트래픽 분석
- 애플리케이션 제어 (특정 웹앱 사용 제한)
오픈소스 솔루션
| 솔루션 | 특징 | Docker 이미지 |
|---|---|---|
| Squid + SquidGuard | Squid에 URL 필터링 추가. 블랙리스트 DB 활용 | ubuntu/squid + 별도 설정 |
| E2guardian | DansGuardian 후속작. 콘텐츠 기반 필터링, 가중치 점수 시스템 | beechfuzz/e2guardian |
| Pi-hole | DNS 레벨 필터링. 프록시와 연동하여 이중 방어 구성 | pihole/pihole |
💡 참고: 완전한 상용 SWG(Zscaler, Netskope 등) 대체는 어렵습니다. 오픈소스 조합으로 기본적인 웹 보안 게이트웨이 구성은 가능합니다.
CASB (Cloud Access Security Broker)
클라우드 서비스와 SaaS 애플리케이션에 대한 접근을 중개하고 통제합니다.
주요 기능
- 승인/비승인 클라우드 서비스 식별 (Shadow IT 탐지)
- SaaS 앱별 세분화된 접근 정책
- 클라우드 데이터 유출 방지
- 이상 행위 탐지
오픈소스 솔루션
| 솔루션 | 특징 | Docker 이미지 |
|---|---|---|
| Pomerium | ID 인식 프록시. Zero Trust 모델 구현. Google/Okta 등 IdP 연동 | pomerium/pomerium |
| OAuth2 Proxy | OAuth 2.0 인증을 앱 앞단에 추가. 간단한 SSO 게이트웨이 | quay.io/oauth2-proxy/oauth2-proxy |
| Apache Guacamole | 브라우저 기반 원격 데스크톱/SSH 게이트웨이 | guacamole/guacamole |
⚠️ 참고: 완전한 CASB 기능(Shadow IT 탐지, SaaS DLP 등)은 상용 솔루션 영역입니다. 오픈소스로는 접근 제어 중심의 부분적 구현이 가능합니다.
DLP 프록시 (Data Loss Prevention)
민감 데이터(개인정보, 기밀문서 등)가 외부로 유출되는 것을 탐지하고 차단합니다.
주요 기능
- 패턴 매칭 (신용카드 번호, 주민등록번호 등)
- 키워드 기반 탐지
- 파일 핑거프린팅
- 정책 기반 차단/알림
오픈소스 솔루션
| 솔루션 | 특징 | 비고 |
|---|---|---|
| OpenDLP | 데이터 검색 및 분류 도구. 프록시와 연동 필요 | 에이전트 기반 |
| MyDLP | 오픈소스 DLP (현재 개발 중단) | 레거시 참고용 |
⚠️ 참고: DLP는 상용 솔루션(Symantec, Forcepoint 등)이 주류입니다. 오픈소스 대안이 매우 제한적이며, Squid의 ICAP 연동 + ClamAV 등으로 부분 구현이 가능합니다.
용도별 선택 가이드
| 용도 | 추천 1순위 | 추천 2순위 | 비고 |
|---|---|---|---|
| 기업 인터넷 통제 | Squid | E2guardian | ACL + 로깅 필수 |
| 웹서버 보호 | Nginx | Caddy | SSL 종료 포함 |
| 컨테이너/K8s 환경 | Traefik | Envoy | 자동 서비스 디스커버리 |
| API 게이트웨이 | Kong | APISIX | 인증/속도제한 필요 시 |
| 개발/디버깅 | mitmproxy | – | HTTPS 트래픽 분석 |
| VPN 대체/우회 | Shadowsocks | WireGuard | 암호화 터널 |
| GUI 관리 선호 | Nginx Proxy Manager | – | 웹 UI로 간편 관리 |
| Zero Trust 접근 | Pomerium | OAuth2 Proxy | IdP 연동 필수 |
마무리
프록시는 단순한 중계 서버가 아닌, 네트워크 보안과 성능 최적화의 핵심 구성 요소입니다. 방향, 동작 방식, 기능, 보안 관점에서 프록시를 이해하면 상황에 맞는 최적의 솔루션을 선택할 수 있습니다.
오픈소스 생태계에서는 Squid, Nginx, Traefik 등 검증된 솔루션들이 Docker 이미지로 제공되어 빠르게 구축할 수 있습니다. 다만 SWG, CASB, DLP 같은 고급 보안 기능은 상용 솔루션 영역이 강하므로, 요구사항에 따라 오픈소스 조합 또는 상용 제품 도입을 검토해야 합니다.