누구와 MCP 서버가 통신하는지 확인하는 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
AI/ML 개발자, DevOps 엔지니어, 시스템 관리자
- 난이도: 중급 이상 (네트워크 보안 및 컨테이너 기술 이해 필요)
핵심 요약
ToolHive
의 네트워크 고립 기능을 통해 MCP 서버의 통신 대상을 정확히 제어하고 블록/허용 규칙을 실시간으로 강제 적용 가능--isolate-network
플래그와permission-profile.json
파일을 통해 허용 호스트/포트/프로토콜을 명시적으로 정의squid
프록시 로그를 통해 접근 시도 내역을 실시간으로 감시 및 감사 가능
섹션별 세부 요약
1. 문제 상황: MCP 서버의 네트워크 통신 제어 필요성
- MCP 서버가 비공개 데이터 유출, 악성 코드 주입, 내부 네트워크 침투 등 위험한 행위를 수행할 수 있음
- 기존 컨테이너화는 보안을 강화하지만, 악의적 MCP 서버의 위협을 완전히 차단하지 못함
2. ToolHive의 네트워크 고립 기능
--isolate-network
플래그로 MCP 서버를 고립된 컨테이너에 배포- Layer 7 HTTP 프록시를 통해 허용 규칙을 실시간으로 적용 (예:
stacklok.com
허용,anthropic.com
차단) squid
로그에서 허용/차단 내역을 확인 가능 (예:CONNECT stacklok.com:443
허용,CONNECT www.anthropic.com:443
차단)
3. 권한 프로필 정의 방법
fetch-permissions.json
파일에서 허용 호스트/포트/프로토콜을 명시 (예:.acmecorp.com
서브도메인 허용)thv run --isolate-network --permission-profile
명령어로 커스텀 규칙 적용- 내부 GitHub 호스팅 시
allow_host
값을github.example.com
로 변경 후 실행
4. 실무 적용 팁
- 불확실한 허용 목록일 경우
--permission-profile none
으로 시작 후 로그에서 차단 요청 확인 - 감사 목적으로
insecure_allow_all
:true
설정으로 모든 트래픽 로그 저장 가능 (현재는 일시적, 요청 시 지속적 저장 옵션 제공)
결론
- ToolHive의 네트워크 고립 기능을 활용해 MCP 서버의 통신을 정확히 제어하고 실시간 감사 가능
--isolate-network
플래그와permission-profile.json
을 통해 보안 정책 강화squid
로그를 통해 네트워크 활동 모니터링 및 위험 요소 탐지 가능