Ollama 部署的大模型有没有中招?
如何便捷快速地在本地部署大模型,当然是 Ollama 梭哈。
简简单单跑各种各样的大模型,还能极其方便地调用 API。
但是 Ollama 本身并没有提供安全认证功能,部署后会开放一个接口服务。
如果直接部署或者穿透到公网,无疑是明晃晃的未授权,来看看公网上有多少服务:

能够直接使用 Ollama 提供的 Web API 进行通信:
1. 接口详细文档
https://github.com/ollama/ollama/blob/main/docs/api.md
| 接口名称 | 接口地址 | 请求方法 | 接口描述 |
|---|---|---|---|
| Chat | /api/chat |
POST | 使用提供的模型生成聊天中的下一条消息。 |
| Tags | /api/tags |
GET | 列出本地可提供的模型。 |
| Show | /api/show |
POST | 获取指定模型的详细信息。 |
| Copy | /api/copy |
POST | 从现有模型创建副本。 |
| Delete | /api/delete |
DELETE | 删除模型及其数据。 |
| Pull | /api/pull |
POST | 从 Ollama 库中下载指定模型。 |
| Push | /api/push |
POST | 将模型上传到模型库。 |
| ListRunning | /api/ps |
GET | 列出当前加载到内存中的模型。 |
| Version | /api/version |
GET | 获取 Ollama 服务的版本号。 |
1.1. 列出本地可用的模型
GET /api/tags

直接就是 AnythingLLM 调用 API,爽了,兄弟们。

快去修一下,
我都要把你的大模型玩坏了!!!
2. 防护建议
询问了一些大佬,确定 Ollama 本身真没有提供安全认证功能,最直接的建议还是直接限制访问来源。
例如:
2.1. 用 Linux 的防火墙
2.1.1. 确保防火墙已启用
sudo ufw enable
2.1.2. 只允许你的本地 PC 的公网 IP 访问 Ollama 服务的端口(默认 11434)
sudo ufw allow from 你的公网IP to any port 11434
2.2. 云服务器安全组:进行端口白名单的限制
2.3. 通过 Nginx 转发然后配置一些认证
2.3.1. 添加 Header 认证
location / {
set $auth_check 0;
if ($http_authorization != "Basic xxxxxxxx") {
set $auth_check 1;
}
if ($auth_check) {
return 403 "Forbidden";
}
proxy_pass http://192.168.31.110:11434/;
}
或者
location / {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://192.168.31.110:11434/;
}
2.3.2. IP 地址白名单/黑名单
location / {
allow 192.168.1.0/24;
deny all;
proxy_pass http://192.168.31.110:11434/;
}
2.3.3. 增加日志和监控
location / {
access_log /var/log/nginx/access.log combined;
proxy_pass http://192.168.31.110:11434/;
}