警惕!你Ollama部署的模型正在被白嫖

前言

由于我用macmini m4在本地用ollama部署了几个大模型,并通过内网穿透到了公网,由oneapi分发,但是没有ollama没做鉴权,导致任何人都可以通过我的ip访问访问我本地大模型。还好我今天收到了天翼云的提醒才意识到这个问题,现在已经修复这个问题了,希望看到朋友赶快去检查一下。
在这里插入图片描述

一、问题的根源

已知漏洞如CVE-2024-37032(路径遍历导致RCE)、CVE-2024-39722(路径遍历暴露文件结构)等,可能被用于控制服务器或窃取敏感数据。
用FOFA这个网站扫描一下端口就能看到所有部署了ollama的云服务器,从下图可以看到还是有非常多的人不知道这个漏洞的:
PixPin_2025-03-02_22-07-56.png
随便找一个,竟然发现竟然部署了deepseek70b的模型,却不需要任何鉴权就能免费调用他的模型,并且可以窃取他的模型文件和数据。
PixPin_2025-03-02_22-10-28.png

原因

Ollama默认开启11434端口,若未配置防火墙或部署在公网环境(如云服务器),API接口将直接暴露。

后果

  • 模型推理请求:通过/api/generate端点消耗GPU/CPU算力。
  • 模型窃取:利用/api/pull下载私有模型文件。
  • 拒绝服务攻击(DDOS):通过高频请求耗尽系统资源。

二、解决方案

1. 网络层隔离

限制监听地址
修改Ollama服务仅绑定到本地回环地址,避免公网暴露:

# Linux/macOS
export OLLAMA_HOST=127.0.0.1:11434
# Windows(PowerShell)
$env:OLLAMA_HOST="127.0.0.1:11434"

对于Docker部署,添加--network host并绑定到127.0.0.1
防火墙规则
禁止11434端口的公网入站流量:

# Linux iptables
iptables -A INPUT -p tcp --dport 11434 -j DROP
# Windows防火墙(管理员权限)
New-NetFirewallRule -DisplayName "Block Ollama Port" -Direction Inbound -LocalPort 11434 -Protocol TCP -Action Block

2. 反向代理鉴权

  • 反向代理+认证
    使用Nginx或Traefik添加Basic Auth:
server {
  listen 80;
  server_name ollama.example.com;
  location / {
    proxy_pass http://127.0.0.1:11434;
    auth_basic "Ollama Access";
    auth_basic_user_file /etc/nginx/.htpasswd;
  }
}

  • ollama本地运行+oneapi反代鉴权:
    ollama不上公网,oneapi反代上公网并用oneapi调用本地的ollama服务,oneapi是有鉴权的,所以不用担心变成肉鸡,我现在就是用的这种方案。
    PixPin_2025-03-02_22-28-46.png

3. 更新版本

  • 升级至安全版本
    定期检查并升级Ollama至修复漏洞的版本(如≥0.1.34修复CVE-2024-37032)。
  • 非特权运行
    避免以root权限运行Ollama,使用专用用户:
useradd ollama-user
chown -R ollama-user:ollama-user /path/to/ollama