问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

如何为Ollama添加身份认证,避免“裸奔”带来的安全隐患

创作时间:
作者:
@小白创作中心

如何为Ollama添加身份认证,避免“裸奔”带来的安全隐患

引用
CSDN
1.
https://blog.csdn.net/weixin_41961749/article/details/145651509

如何为Ollama添加身份认证,避免“裸奔”带来的安全隐患

背景:Ollama服务器的“裸奔”现象

最近,DeepSeek等国产大模型的热度飙升,很多公司和开发者开始搭建自己的大模型平台。然而,随着部署数量的增加,也出现了一个严重的安全隐患——Ollama等大模型的服务器在没有任何安全措施的情况下,直接暴露在互联网上。这种“裸奔”状态意味着任何人都可以绕过认证直接访问这些服务,造成数据泄露、算力滥用甚至是模型文件的被删除等问题。

根据奇安信资产测绘鹰图平台的监测数据显示,全球有大量的Ollama服务器处于“裸奔”状态,其中国内的比例与全球相当高。专家建议,立即修改Ollama配置,加入身份认证手段,同时加强防火墙、入侵检测等安全配置,以防范潜在的安全风险。

为什么需要为Ollama添加身份认证?

Ollama作为一款支持运行多个大模型的工具,默认情况下并未启用身份认证功能。很多开发者可能忽视了这个问题,导致其大模型服务暴露给了不明身份的访问者,这不仅给服务带来了风险,还可能引发大规模的资源滥用事件。因此,为Ollama配置身份认证,限制未授权的访问,是防止数据泄露、保护计算资源以及提升系统安全的必要措施。

接下来,介绍两种常见的为Ollama添加身份认证的方法,帮助提升部署的安全性。

方法一:通过Caddy反向代理添加HTTP Basic Auth认证

1. 安装Caddy

Caddy是一个功能强大的反向代理服务器,可以轻松地为Ollama提供HTTP Basic Auth认证,同时自动处理HTTPS协议,保证数据传输的安全。首先,需要安装Caddy。

  • Mac/Linux系统
curl https://webi.sh/caddy | sh  
  • Windows系统
curl.exe https://webi.ms/caddy | powershell  

2. 创建认证密码

为了进行HTTP Basic Auth认证,需要设置一个用户名和密码。可以将密码存储在一个password.txt文件中,然后使用Caddy提供的hash-password工具进行加密。

  • 创建password.txt文件,放入想要设置的密码。
  • 使用以下命令生成密码的哈希值:
caddy hash-password < ./password.txt  

3. 配置环境变量

为了保护密码信息,可以将用户名和加密后的密码存储在一个.env文件中。示例如下:

  • 创建caddy.env文件,并配置用户名和加密密码:
BASIC_AUTH_USER='apitoken'  
BASIC_USER_AUTH='$2a$14$sI1j0RbhzKHMZ4cHU8otHOkB3Dgl9egF2D.CXB6C0/Qk5dtaMHS/u'  

4. 配置Caddyfile

接下来,创建一个Caddyfile,配置反向代理和HTTP Basic Auth认证。以下是Caddyfile的配置示例:

api.example.com {  
    handle /* {  
        basicauth {  
            {env.BASIC_AUTH_USER} {env.BASIC_USER_AUTH}  
        }  
        reverse_proxy localhost:11434  
    }  
}  

5. 启动Caddy

完成配置后,使用以下命令启动Caddy服务器:

caddy run --config ./Caddyfile --envfile ./caddy.env  

通过以上步骤,Caddy会将所有对Ollama服务的请求进行身份验证,确保只有输入正确的用户名和密码的用户才能访问。

方法二:使用Nginx代理与Cloudflare隧道配置身份认证

如果更倾向于使用Nginx进行反向代理,结合Cloudflare隧道来暴露Ollama服务,也可以非常方便地为服务添加身份认证。这个方法特别适合需要将Ollama服务暴露到互联网上的场景。

1. 配置Dockerized Nginx服务器

这个方法的核心是使用Docker部署一个Nginx反向代理服务器,并通过Cloudflare隧道将本地的Ollama服务暴露到互联网。具体步骤如下:

  1. 克隆项目
git clone https://github.com/kesor/ollama-proxy.git  
cd ollama-proxy  
  1. 配置环境变量
    将项目中的示例环境文件复制到.env.secret,并根据需要修改:
cp .env.secret-example .env.secret  
  1. 设置Cloudflare Tunnel和Ollama密钥
    .env.secret文件中配置Cloudflare Tunnel token和Ollama的API密钥:
CLOUDFLARE_TUNNEL_TOKEN="your_cloudflare_tunnel_token"  
OLLAMA_SECRET_API_KEY="your_ollama_secret_api_key"  

2. 启动Nginx和Cloudflare隧道

通过Docker Compose启动服务:

docker-compose up -d  

这样,Ollama就会通过Cloudflare隧道安全地暴露在互联网上,且只有包含正确Authorization头的请求才能访问。

结语:提升Ollama安全,确保数据与资源安全

无论是使用Caddy反向代理还是Nginx与Cloudflare隧道配置身份认证,确保Ollama服务不“裸奔”在互联网上,是保护服务安全的关键一步。配置合适的身份认证和安全措施,能够有效避免数据泄露、算力滥用等问题,保障大模型平台更加安全、稳定。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号