AI 보안 2026.10.04 · 조회 15

자체 호스팅 LLM 서버, 인증 없이 인터넷에 열려 있습니다: 11434 포트 30초 자가점검 [2026]

AI는 내 서버에 직접 올리면 안전하다는 전제가 깨지는 지점. 로컬 LLM 추론 서버는 기본값이 루프백 바인딩이지만 인증 수단 자체가 없고, 다른 PC에서 GPU를 쓰려고 0.0.0.0으로 바꾸는 순간 무인증 엔드포인트가 공개된다. 남의 GPU로 연산이 돌아가고, 모델 가중치가 반출되고, 환경변수에 둔 API 키까지 샌다. LeakIX 집계로 노출 12,269대, 한국 453대. 30초 확인 절차와 차단 설정을 정리했다.

S
보안 전문 기업 SENTRIX 레드팀
해킹대회 수상 · 보안 실무 10년 · 실전 진단 경험을 바탕으로 작성합니다.
읽기만 하지 말고 내 사이트 상태부터 확인해보세요. URL 하나로 30초 무료 점검.

자체 호스팅 LLM 추론 서버 노출은 직접 올린 로컬 모델 서버의 API 포트가 인증 없이 인터넷에 열려, 외부 누구나 모델을 열거하고 추론을 실행할 수 있는 상태다.
대표적인 로컬 추론 서버 Ollama 기준으로 기본 바인딩은 127.0.0.1:11434이지만, 다른 PC에서 GPU를 쓰려고 이를 0.0.0.0으로 바꾸는 순간 인증 없는 엔드포인트가 공개된다. 공식 문서조차 인증 경고 없이 OLLAMA_HOST=0.0.0.0 예시를 그대로 제시한다. DB를 인증 없이 공개 IP에 올려 터진 사고와 구조가 같고, 이번에는 대상이 GPU와 모델이다. LeakIX는 2026-02-23 기준 무인증 노출 인스턴스 12,269대를 집계했고 한국이 453대였다.
이 글은 자주 발생하는 실수 패턴, 점검·조치 절차, 자가진단을 정리했다.

한눈에 보는 핵심

Q. 로컬에 올린 서버인데 외부에서 못 들어오는 거 아닌가요? A. 바인드 주소를 바꾸면 들어옵니다. 공식 문서는 기본값이 127.0.0.1 포트 11434라고 적고, 네트워크 노출 방법으로는 OLLAMA_HOST 변경만 안내합니다. 인증·접근 통제 서술은 그 페이지에 없고 예시 값으로 0.0.0.0을 경고 없이 제시합니다. 바인딩을 푸는 순간 인증 수단이 없는 API가 공개됩니다. Q. 열려 있으면 최악의 경우 무엇을 잃나요? A. 먼저 GPU입니다. 외부 누구나 모델을 열거하고 추론을 돌려 연산 자원을 가져다 쓰고, /api/push로 로컬 모델 가중치를 공격자 레지스트리로 밀어낼 수 있습니다. 구버전이면 메모리까지 샙니다. NVD 기준 CVE-2026-7482는 0.17.1 미만에서 /api/create로 받은 조작 GGUF 파일이 힙 범위 밖을 읽게 만들며, 유출 메모리에 환경변수·API 키·시스템 프롬프트·동시 사용자 대화 데이터가 포함될 수 있습니다. Q. 외부 점검 도구로 이 문제를 찾을 수 있나요? A. 이 건은 못 찾습니다. CodeScan은 URL 기반 외부 점검이라 입력한 주소의 호스트에서 널리 쓰이는 공통 포트(FTP·SSH·DB·RDP·Redis·MongoDB 등)와 공개 영역 설정만 확인합니다. 추론 포트 11434는 그 점검 목록에 없고, 추론 서버가 웹사이트와 다른 IP면 범위 밖입니다. AI 전용 스캐너도 아니어서 모델·프롬프트·에이전트는 보지 않습니다. 이 노출은 아래 자가진단으로 직접 확인해야 합니다.

자주 발생하는 실수 패턴

#패턴위험도
1OLLAMA_HOST를 0.0.0.0으로 바꾸고 방화벽·보안그룹은 그대로 둠치명
2추론 포트를 공개 IP에 직접 노출 — 인증·요청 제한 프록시가 앞에 없어 GPU 연산을 남이 쓴다치명
3/api/push·/api/create를 외부에서 호출 가능한 상태로 방치 — 가중치 반출과 조작 모델 주입 경로치명
40.17.1 미만 구버전 유지 — 노출이 CVE-2026-7482를 원격 공격으로 승격치명
5환경변수에 외부 LLM API 키·DB 비밀번호를 담아둔 상태로 운영 — 메모리 유출 시 2차 피해높음
6포트만 닫고 종료 — 노출 기간의 호출 로그 확인과 키 로테이션을 건너뜀중간

표준 구현 코드

# 1) 추론 서버는 루프백에만 바인딩 (systemd drop-in — 디렉터리가 없으면 먼저 만든다)
sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo tee /etc/systemd/system/ollama.service.d/override.conf >/dev/null <<'EOF'
[Service]
Environment="OLLAMA_HOST=127.0.0.1:11434"
EOF
sudo systemctl daemon-reload && sudo systemctl restart ollama

# 2) 포트 위생은 기본만 — 11434 인바운드 차단, 클라우드 보안그룹도 같이 닫는다
sudo ufw deny in 11434/tcp

# 3) 원격 사용이 필요하면 앞단 프록시만 공개 — nginx
#  http {
#    limit_req_zone $binary_remote_addr zone=llm:10m rate=10r/m;  # 없으면 nginx -t가 unknown zone 에러
#  }
#  server {
#    location / {
#      auth_basic "llm";  auth_basic_user_file /etc/nginx/.htpasswd;
#      limit_req zone=llm burst=5 nodelay;    # GPU 연산 자원 탈취 억제
#      proxy_pass http://127.0.0.1:11434;     # 추론 서버는 루프백
#    }
#    location /api/push   { return 403; }     # 모델 가중치 반출 입구
#    location /api/create { return 403; }     # CVE-2026-7482 공격 입구
#  }

핵심은 "동작하는 코드"와 "안전한 코드"가 다르다는 점이다.
AI 코딩 도구는 기능 충족 코드를 우선 출력하므로 보안 분기는 별도로 강제해야 한다.
미들웨어·정책·배포 설정으로 모든 경로에 일괄 적용하는 것이 표준이다.

지금 1분만 — CodeScan 무료 스캔으로 내 서비스의 노출 패턴을 자동 점검하세요.

자가진단

# 1) 외부에서 보이는지 — 사무실·집 밖(휴대폰 테더링 등)에서 실행한다
#    모델 목록 JSON이 돌아오면 전 세계에 열려 있는 것이다
curl --max-time 5 http://<서버공개IP>:11434/api/tags

# 2) 버전 — 0.17.1 미만이면 CVE-2026-7482 대상
ollama --version

# 3) 실제 바인딩 주소 (0.0.0.0이면 공개 상태)
ss -lntp | grep 11434

# 4) 노출 기간의 흔적 — 연산 탈취(generate·chat)와 가중치 반출(push) 호출
journalctl -u ollama --since '30 days ago' | grep -E '/api/(generate|chat|pull|push|create)'

위 시그널이 발견되면 결함이다. GitHub Security Advisory — CVE-2026-7482 원문(0.17.1 패치 확인)를 함께 참조하라.

조치 절차

순위조치
1OLLAMA_HOST를 127.0.0.1:11434로 되돌리거나, 방화벽·보안그룹에서 11434 인바운드를 즉시 차단
2버전을 0.17.1 이상으로 올린다 — CVE-2026-7482(CVSS 3.1 9.1 CRITICAL) 수정 기준선
3노출 기간이 있었다면 그 서버 환경변수에 든 외부 LLM API 키·DB 비밀번호를 전부 로테이트
4호출 로그에서 외부 IP의 /api/generate·/api/chat(연산 탈취)과 /api/push(가중치 반출)를 조사
5원격 사용이 필요하면 추론 서버는 루프백에 두고 인증·TLS·요청 제한을 가진 프록시만 공개
6함께 띄운 웹 UI·벡터DB 포트도 같은 기준으로 재점검 — 일반 포트 위생은 아래 포트 보안 가이드 참조

지금 해야 할 것

실무자: CodeScan 무료 스캔으로 점검 후 우선순위대로 패치.

관련 글

{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"로컬에 올린 서버인데 외부에서 못 들어오는 거 아닌가요?","acceptedAnswer":{"@type":"Answer","text":"바인드 주소를 바꾸면 들어옵니다. 공식 문서는 기본값이 127.0.0.1 포트 11434라고 적고, 네트워크 노출 방법으로는 OLLAMA_HOST 변경만 안내합니다. 인증·접근 통제 서술은 그 페이지에 없고 예시 값으로 0.0.0.0을 경고 없이 제시합니다. 바인딩을 푸는 순간 인증 수단이 없는 API가 공개됩니다."}},{"@type":"Question","name":"열려 있으면 최악의 경우 무엇을 잃나요?","acceptedAnswer":{"@type":"Answer","text":"먼저 GPU입니다. 외부 누구나 모델을 열거하고 추론을 돌려 연산 자원을 가져다 쓰고, /api/push로 로컬 모델 가중치를 공격자 레지스트리로 밀어낼 수 있습니다. 구버전이면 메모리까지 샙니다. NVD 기준 CVE-2026-7482는 0.17.1 미만에서 /api/create로 받은 조작 GGUF 파일이 힙 범위 밖을 읽게 만들며, 유출 메모리에 환경변수·API 키·시스템 프롬프트·동시 사용자 대화 데이터가 포함될 수 있습니다."}},{"@type":"Question","name":"외부 점검 도구로 이 문제를 찾을 수 있나요?","acceptedAnswer":{"@type":"Answer","text":"이 건은 못 찾습니다. CodeScan은 URL 기반 외부 점검이라 입력한 주소의 호스트에서 널리 쓰이는 공통 포트(FTP·SSH·DB·RDP·Redis·MongoDB 등)와 공개 영역 설정만 확인합니다. 추론 포트 11434는 그 점검 목록에 없고, 추론 서버가 웹사이트와 다른 IP면 범위 밖입니다. AI 전용 스캐너도 아니어서 모델·프롬프트·에이전트는 보지 않습니다. 이 노출은 아래 자가진단으로 직접 확인해야 합니다."}}]}

내 사이트도 점검해보세요

URL 입력, 결과 링크는 메일로 받는 무료 점검. 회원가입·카드 불필요.

추천 상품
웹서비스 런칭 전 보안 세팅
런칭 전에 반드시 해야 하는 보안 설정을 원격으로 직접 해드립니다. HTTPS, 환경변수 분리, 보안 헤더…
220,000원 150,000원

AI 코딩 보안 체크리스트 받기

AI 코딩 보안 체크리스트(PDF)를 무료로 받아보세요.

한 번 점검으로 끝내지 않으려면: 웹 모니터링(월 29,900원)이 매일 자동 점검하고 등급이 떨어지면 알려드립니다.
이런 글을 계속 받아보려면 뉴스레터 구독 · RSS 피드