Ollama部署的大模型有没有中招

如何便捷快速的在本地部署大模型,当然是 Ollama 梭哈。

简简单单跑各种各样的大模型,还能及其方便的调用 API,

但是 ollama 本身并没有提供安全认证功能,部署后会开放一个接口服务,如果直接部署或者穿透到公网,无疑是明晃晃的未授权,来看看公网上有多少服务:
image
能够直接使用 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 POST 列出当前加载到内存中的模型。
Version /api/version GET 获取 Ollama 服务的版本号。

1.1- 列出本地可用的模型

GET /api/tags

image|942x405

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

image

快去修一下,

我都要把你的大模型玩坏了!!!

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/;
}