메인 콘텐츠로 건너뛰기
Ollama, llama.cpp, vLLM, LM Studio를 이용해 모델을 로컬에서 실행하는 것은 어렵지 않습니다. 하지만 팀원이나 외부 기기가 해당 엔드포인트에 접근할 수 있도록 설정하면서도 보안상의 허점이 생기지 않게 하는 것이 대부분의 설정에서 실패하는 지점입니다. 이 체크리스트는 실제로 문제가 되기 쉬운 항목들을 순서대로 설명하며, Tokios와 같은 아웃바운드 전용 커넥터를 도입하면 어떤 부분들이 더 이상 관리할 필요가 없어지는지도 알려줍니다. 이 문서는 보안 보장을 약속하는 것이 아닙니다. 따라서 이 지침을 따른다고 해서 위험이 완전히 사라지는 것은 아니며, Tokios를 포함한 어떤 설정도 절대 뚫리지 않는다고 단언할 수 없습니다.

1. 주소 바인딩: 루프백 주소만 사용하기

이 분야의 모든 런타임들이 127.0.0.1(루프백 전용)을 기본값으로 설정하는 데에는 이유가 있습니다. 이 설정만으로도 API가 해당 머신 외부에서는 접근 불가능하도록 통제할 수 있기 때문입니다.
  • Ollama는 기본적으로 127.0.0.1:11434에서만 수신 대기합니다. 하지만 OLLAMA_HOST=0.0.0.0 값을 지정하면 모든 네트워크 인터페이스에서 수신 대기하게 되어 LAN 내부뿐만 아니라 포트가 외부로 포워딩된 경우 인터넷 전체에서도 접근 가능해집니다.
  • llama.cpp server, vLLM, LM Studio 역시 동일한 구조를 따릅니다. 기본값은 루프백이며, 0.0.0.0이나 특정 LAN 인터페이스로 바인딩할 수 있는 설정값이 존재합니다.
체크리스트 항목: 루프백 외의 주소로 바인딩해야 할 특별한 이유가 없다면 그렇게 하지 마십시오. LAN이나 원격 접속이 필요한 경우 이 체크리스트의 나머지 항목이나 아웃바운드 전용 커넥터를 활용하시면 됩니다.

2. 인증 설정: 대부분의 런타임에는 인증 기능이 없거나 선택 사항일 뿐입니다

루프백 외의 주소로 바인딩하면서 인증 기능을 사용하지 않는다면, 해당 포트에 접근 가능한 누구나 어떠한 인증 정보 없이도 API를 호출할 수 있습니다. 모델 목록 조회, 추론 실행, 모델 다운로드 등이 모두 가능해지는 것이죠. 체크리스트 항목: 여러 사람이나 서비스가 동일한 엔드포인트를 호출하는 경우 단일 정적 API 키(또는 키 없음)로는 호출자를 구분할 수 없으며 특정 호출자만을 대상으로 키를 취소하는 것도 불가능합니다. 관련된 장단점은 키가 필요 없는 로컬 모델에 API 키 추가하기 문서를 참고하시기 바랍니다.

3. 방화벽 및 수신 포트 설정

루프백 범위보다 넓게 포트를 개방할 경우 그 앞단에 방화벽 설정이 필요합니다:
  • 가능하다면 모든 IP 주소에 개방하는 대신 알려진 소스 IP만을 대상으로 수신 포트(Ollama는 11434, llama.cpp는 8080, vLLM은 8000, LM Studio는 1234)를 제한하는 것이 좋습니다.
  • 라우터에서 포트 포워딩이 가능하려면 안정적인 공용 IP가 필요하다는 점을 기억하시기 바랍니다. 많은 가정용 및 모바일 인터넷 환경에서는 CGNAT 뒤에 위치해 있어 공용 IP 자체가 존재하지 않으므로 포워딩이 불가능합니다. 자세한 내용은 CGNAT 뒤에 있는 모델에 접근하기 문서를 참고하세요.
  • Shodan, Censys와 같은 인터넷 전역 스캐너들은 새로 개방된 서비스를 몇 시간에서 며칠 내에 인덱싱합니다. 인증 없이 개방된 포트는 오랫동안 발견되지 않을 가능성이 낮습니다.
체크리스트 항목: “포트가 일시적으로만 포워딩된다”는 사실도 결국 발견될 가능성이 있다고 간주해야 합니다. 포트가 열려 있다면 누군가가 반드시 찾아낼 것이라 예상해야 합니다.

4. 리버스 프록시 사용 시 주의사항

위에서 언급한 인증 문제를 해결하기 위해 nginx나 Caddy 같은 리버스 프록시를 활용하는 것이 일반적인 자체 해결 방안인데 이 역시 올바르게 설정해야 할 여러 요소들을 내포하고 있습니다:
  • TLS 종료 기능. 프록시에는 유효한 인증서가 필요합니다. 자체 서명된 인증서는 대부분의 HTTP 클라이언트가 수행하는 기본 신뢰 검증을 실패시킵니다.
  • 스트림 방식 응답 처리. LLM API들은 Server-Sent Events(SSE)를 통해 토큰을 스트림 형태로 전송합니다. 응답 내용을 수신 즉시 전달하지 않고 버퍼링하는 리버스 프록시나 업스트림 CDN의 경우, 토큰 단위로 스트림되어야 할 채팅이 전체 응답이 완료될 때까지 멈추거나 타임아웃이 발생할 수 있습니다.
  • 인증 로직은 모델 서버가 아닌 프록시 설정에 존재합니다. 이제 프록시의 인증 규칙을 올바르게 유지하고 동기화하며 테스트하는 책임은 사용자에게 있습니다. 런타임 자체는 여전히 개별 사용자별 API 키 개념을 인식하지 못합니다.
  • 타임아웃 현상. 생성 시간이 길어지면 프록시나 엣지 네트워크의 기본 요청 타임아웃 기준을 초과하여 응답이 중간에 끊어질 수 있습니다.
체크리스트 항목: 리버스 프록시를 구축했다면 실제 운영 환경에서 신뢰할 수 있도록 빠르고 짧은 응답뿐만 아니라 느리고 긴 스트림 응답까지도 전체적으로 테스트해보아야 합니다.

5. 런타임에 패치가 적용되었는지 확인하세요

로컬 추론 서버 역시 일반적인 취약점 관리 주기를 따르는 소프트웨어이며, 공개된 CVE 정보 역시 실제로 악용 사례가 존재합니다. 예를 들어 Ollama의 경우 배포 기록 내에 보안 권고사항이 기록되어 있습니다. 특정 CVE ID나 수정된 버전을 신뢰하기 전에 해당 프로젝트의 GitHub 보안 권고사항이나 NVD의 최신 정보를 반드시 확인하시기 바랍니다. 체크리스트 항목: 사용 중인 런타임의 릴리스 노트 및 보안 권고사항을 구독하시고, 단순히 작동한다는 이유만으로 특정 버전을 무기한 사용하지 마십시오. 서버가 로컬 루프백에서 실행되든 외부에 노출되든 상관없이, 해킹된 호스트는 네트워크 구성이 아무리 올바르더라도 문제를 일으킬 수 있습니다.

아웃바운드 전용 모드에서는 이 목록의 내용이 완전히 제외됩니다

위에 나열된 모든 항목은 외부에서 접속할 수 있도록 인바운드 연결을 수신하는 프로세스가 필요하기에 존재합니다. 아웃바운드 전용 커넥터 — Tokios 커넥터가 그 예시입니다 — 는 이 구조를 뒤바꿉니다. 커넥터 프로세스가 모델과 함께 실행되며 https://api.tokios.com으로 직접 접속하므로 사용자 컴퓨터나 네트워크 상에서는 모델 트래픽을 수신할 포트가 전혀 열리지 않습니다. 이로 인해 일부 체크리스트 항목은 완전히 제거되며 나머지는 그대로 유지됩니다:
  • 바인딩하거나 포워딩할 인바운드 포트가 없습니다. 모델은 127.0.0.1 상태로 유지되며 커넥터가 직접 접속하므로 0.0.0.0 바인딩 작업이나 포트 포워딩 규칙 설정, 접속 가능성을 위한 CGNAT 문제 해결이 전혀 필요하지 않습니다.
  • 모델 포트에 대한 방화벽 규칙이 없습니다. 방화벽이 모델을 위해 허용하거나 차단해야 할 인바운드 트래픽이 전혀 없습니다.
  • No reverse proxy needed for TLS or routing. The connection to https://api.tokios.com is already TLS; you aren’t running or maintaining nginx or Caddy to get there.
  • 하나의 공유 정적 API 키 대신 범위가 지정된 개별 API 키를 사용합니다. 모든 요청은 Tokios의 sk-tok-… 키를 통해 인증되며 이 키는 특정 모델 배포 범위(gemma*, gpt-4*와 같은 쉼표로 구분된 패턴)에 맞춰 설정하거나 개별적으로 비활성화할 수 있습니다. 따라서 특정 팀원이나 서비스의 접근 권한을 제거하더라도 다른 사용자들이 사용하는 키를 변경할 필요가 없습니다. 자세한 내용은 키가 필요 없는 로컬 모델에 API 키 추가하기를 참고하세요.
  • 변경되지 않는 부분: 패치 작업입니다. Tokios는 사용자의 런타임 환경 앞단에서 작동할 뿐 직접 패치하지는 않습니다. 따라서 Ollama, llama.cpp, vLLM, LM Studio 자체를 최신 상태로 유지하는 것은 커넥터 사용 여부와 상관없이 사용자의 책임입니다.
요청 시 오류가 발생할 경우 보안 문제로 단정 짓기 전에 문제 해결 항목에서 일반적인 원인들을 먼저 확인해보세요. 대부분의 연결 실패는 보안 침해가 아닌 설정상의 문제입니다.

아웃바운드 전용 설정으로 전환하기

빠른 시작 가이드

커넥터를 연결하고 모델을 등록한 뒤 처음으로 인증된 요청을 전송해보세요.

로컬 모델에 API 키 추가하기

각 팀원이나 서비스마다 범위가 지정되고 비활성화도 가능한 고유한 API 키를 부여하세요.

Ollama 원격 접속 방법

인바운드 포트를 열지 않고도 다른 기기에서 Ollama 인스턴스에 접속할 수 있습니다.