Ollama 的“裸奔”大冒险:怎样给你的 AI 穿上“安全裤” ...

打印 上一主题 下一主题

主题 1651|帖子 1651|积分 4953

Ollama 的“裸奔”大冒险:怎样给你的 AI 穿上“安全裤”

如今人工智能(AI)已经像春天的野草一样,疯狂地在各个领域蔓延。而大模型工具 Ollama,无疑是这场 AI 狂潮中的“网红”。它就像一个超级智能的“管家”,能够资助用户在当地轻松部署和管理各种大模型,比如 DeepSeek-R1。然而,最近国家网络安全转达中心的一则告诫,却让这个“网红”工具陷入了“裸奔”的尴尬田地。
Ollama 的“裸奔”危机

Ollama 默认配置下存在严重的安全隐患,这就好比一个超级智能的“管家”在没有任何衣服的环境下出门,效果被一群“不怀好意”的客户盯上了。具体来说,Ollama 在当地部署时会启动一个 Web 服务,并默认开放 11434 端口,而且没有任何身份验证机制。这意味着,任何路过的“坏人”都可以随意调用它的 API,获取模型信息,乃至窃取模型文件,就像在无人看管的超市里随意拿走商品一样。
更糟糕的是,如果这个服务暴露在公网,这些路人们就可以像“免费的午餐”一样,滥用服务器的算力,乃至发起 DDoS 攻击,让服务器刹时瘫痪。这不仅会导致数据泄漏,还会让辛苦训练的 AI 模型沦为他人的“嫁衣”,乃至让服务器沦为“挖矿肉鸡”,让用户的云服务器账单暴涨。
这个说法并不夸张,让我们进入搜索引擎搜索:Ollama is running,大批裸奔的 Ollama 服务暴露在公网上。

我们随机选择一个服务器,发送一个简单的哀求:curl http://<host>:<port>//api/tags,获取 Ollama 已加载的模型:

调用这个"deepseek-r1:32b"模型小试一下:

要是直接通过 REST API 哀求 Ollama 的 run 或 pull 接口,拉取大参数的模型去运行,那可就直接把服务器的负载打崩了。
怎样给 Ollama 穿上“安全的外套”?

面对如此严重的安全隐患,用户们该怎样掩护自己的服务器和数据呢?以下是一些“安全加固”的发起:
1.克制公网访问

Ollama 如果设置了OLLAMA_HOST=0.0.0.0,这意味着它对全部网络接口开放,包括公网。为了制止这种环境,你需要让 Ollama 只在当地运行。启动 Ollama 时,加上--host 127.0.0.1参数,如许它就只能在当地访问了。
  1. ollama serve --host 127.0.0.1
复制代码
2.防火墙限定 IP 访问

如果你不警惕把服务器暴露在公网,黑客还是有可能找到弊端。这时候,防火墙就派上用场了。你可以使用 UFW(Uncomplicated Firewall)或 iptables 来限定外部访问。
如果你用的是 UFW,可以如许设置:
  1. sudo ufw allow from 192.168.1.0/24 to any port 11434
  2. sudo ufw enable
复制代码
如果你用的是 iptables,可以如许设置:
  1. sudo iptables -A INPUT -p tcp --dport 11434 -s 192.168.1.0/24 -j ACCEPT
  2. sudo iptables -A INPUT -p tcp --dport 11434 -j DROP
复制代码
这就好比在 Ollama 的“家”周围设置了一道“防火墙”,只有来自特定 IP 段的“客人”才气进入。
3.Nginx配置Authorization校验

防止 Ollama 暴露在公网上最简单的方法是使用 Nginx 作为代理,并配置 Authorization 校验来确保只有经过授权的哀求才气访问。
步骤 1:安装 Nginx
如果你还没有安装 Nginx,可以通过以下命令安装(以下为Centos7版本命令):
  1. # 安装nginx所需要的依赖包,确保安装了必要的依赖项
  2. yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel
  3. cd /opt  # 进入根目录下的 opt 目录
  4. wget https://nginx.org/download/nginx-1.26.3.tar.gz  # 下载tar包(如果没有wget命令,需要先安装,centos7版本命令:`yum install -y wget`)
  5. tar -zxvf nginx-1.26.3.tar.gz -C /opt/module  # 解压到 /opt/module 目录下(module目录需自行创建)
  6. cd /opt/module/nginx-1.26.3  # 进入 nginx-1.26.3 目录
  7. ./configure  # 执行 ./configure 命令
  8. make && make install  # 编译并安装(可以组合成一个命令执行:`./configure && make && make install`)
  9. # 编译安装完后,在 /usr/local/ 目录下会自动生成一个 nginx 目录,代表安装成功!
  10. (base) [root@root nginx-1.26.3]# whereis nginx
  11. nginx: /usr/local/nginx
  12. #启动脚本是在 /usr/local/nginx/sbin 目录下的 nginx 可执行文件启动
  13. cd /usr/local/nginx/sbin/  # 进入 sbin 目录
  14. ./nginx  # 启动 Nginx(或直接执行 `/usr/local/nginx/sbin/nginx` )
复制代码
步骤 2:配置 Nginx 代理和 Authorization 校验
编辑 Nginx 配置文件,通常位于/etc/nginx/nginx.conf或/usr/local/nginx/conf/nginx.conf。以下是一个示例配置:
  1. # 定义API Key校验规则
  2. map $http_authorization $api_auth {
  3.     default 0;  # 默认拒绝
  4.     "Bearer sk-wNssKJnXLiDPygfBUY4dc73e" 1;  # 仅允许此Key
  5. }
  6. server {
  7.     listen 8080;
  8.     server_name your_domain_or_ip;
  9.     location / {
  10.         # 校验Authorization头
  11.         if ($api_auth = 0) {
  12.             return 403 '{"status":403,"message":"Invalid API Key"}\n';  # 自定义错误响应
  13.         }
  14.         # 代理到后端服务
  15.         proxy_pass http://127.0.0.1:11434;
  16.         
  17.         # (配置可选项...)
  18.         proxy_set_header Authorization $http_authorization;
  19.         proxy_set_header Host $host;
  20.     }
  21. }
复制代码
配置了 Authorization 校验后重启 Nginx:./nginx -s reload,这时哀求则需要添加 Authorization 哀求头参数,如下所示:
  1. # curl 命令行授权请求
  2. curl -H "Authorization: Bearer your_secret_token" http://your_domain_or_ip
  3. # headers 请求头配置参考
  4. headers = {
  5.     "Authorization": "Bearer " + your_secret_token,  # 替换为实际校验的 API Key
  6.     "Content-Type": "application/json"
  7. }
复制代码
如果配置准确,未授权哀求将返回 403 Invalid API Key,而授权哀求将返回正常相应。
4.Nginx配置身份认证

如果 Ollama 服务没有配置任何验证,这时候你需要给 Ollama 加上一层“安全防护”。常见的方法是使用 Nginx 作为代理,并配置 htpasswd 来举行身份验证。
首先,安装 Nginx 和 htpasswd:
  1. sudo apt-get install nginx apache2-utils
复制代码
然后,创建一个用户和密码文件:
  1. sudo htpasswd -c /etc/nginx/.htpasswd your_username
复制代码
接着,配置 Nginx 代理:
  1. server {
  2.     listen 8080;
  3.     server_name your_domain_or_ip;
  4.     location / {
  5.         proxy_pass http://127.0.0.1:11434;
  6.         proxy_set_header Host $host;
  7.         
  8.         auth_basic "Restricted Access";
  9.         auth_basic_user_file /etc/nginx/.htpasswd;
  10.         
  11.         # (配置可选项...)
  12.         proxy_set_header X-Real-IP $remote_addr;
  13.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  14.     }
  15. }
复制代码
Nginx 配置身份验证后,哀求格式示比方下:
  1. # curl 命令行请求
  2. curl -X POST -u <username>:<password> -H "Content-Type: application/json" -d '<json_data>' <url>
  3. # requests 客户端请求
  4. response = requests.post(url, auth=HTTPBasicAuth(username, password), json=data)
复制代码
如许只有输入准确的用户名和密码的“客人”才气正常哀求 Ollama 的模型。
5.关闭远程下载模型

Ollama 默认允许远程下载模型,为了制止这种环境,你需要关闭远程下载功能。启动 Ollama 时,加上--no-remote参数:
  1. ollama serve --no-remote
复制代码
通过关闭远程下载功能,从而增强体系的安全性、优化资源的管理,并确保对模型的完全控制。
6.监控异常连接

你还可以使用netstat或lsof命令来监控网络,用于监控异常的连接,及时发现并克制“坏人”。
  1. sudo netstat -tuln
  2. sudo lsof -i :11434
复制代码
或使用其它更高级的网络监听工具,对不健康的网络流量举行监控及防范。
总结

Ollama 的“裸奔”危机给我们敲响了警钟:在享受 AI 技术带来的便利时,我们绝不能忽视安全问题。盼望广大用户能够器重这些安全隐患,及时采取措施,给自己的服务器和数据穿上“安全的外套”,让 Ollama 在安全的环境中继续发挥它的“大模型智能管家”作用。
大数据

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表