피드로 돌아가기
Dev.toInfrastructure
원문 읽기
AmneziaWG와 Docker Namespace 공유를 통한 Zero-Exposure 모니터링 구축
Remote Server Monitoring over VPN: A Docker Approach (Part 2)
AI 요약
Context
공공 인터넷에 노출된 Metrics 엔드포인트의 보안 취약점을 해결해야 하는 상황. 기존의 단순 포트 개방 방식은 보안 리스크가 크며 L3 레벨의 암호화 통신 기반의 격리된 모니터링 경로 확보가 필요함.
Technical Solution
- Docker의 network_mode: "service:wg-client" 설정을 통한 VPN 컨테이너의 Network Namespace 공유 구조 설계
- cAdvisor와 node-exporter를 VPN 네임스페이스 내에 배치하여 외부 포트 노출 없이 내부 Tunnel IP(10.10.0.2)로만 접근 가능한 구조 구현
- Prometheus를 Hub의 VPN 컨테이너 네트워크에 배치하여 원격 노드의 Metrics를 Local LAN 통신과 동일한 방식으로 Scrape 하는 메커니즘 적용
- Grafana와 Prometheus 간의 통신을 위해 Bridge Network를 활용한 서비스 간 분리 및 Prometheus UI 포트(9090)의 Hub 컨테이너 위임 매핑 처리
- 암호화된 L3 브릿지를 통해 모든 Scrape 경로를 터널 내부에 가두어 외부 공격 표면을 제거한 보안 강화 아키텍처 완성
실천 포인트
1. 보안 요구사항이 높은 원격지 모니터링 시 Docker Network Namespace 공유를 통해 포트 노출을 원천 차단할 것
2. Prometheus 등 Scraper를 VPN 컨테이너와 동일 네트워크에 배치하여 복잡한 라우팅 설정 없이 Static IP로 접근 가능하게 설계할 것
3. VPN 인터페이스 활성화 전 컨테이너가 실행되는 Race Condition 발생 가능성을 고려하여 Healthcheck 기반의 의존성 관리 체계를 검토할 것