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参数,如许它就只能在当地访问了。
- ollama serve --host 127.0.0.1
复制代码 2.防火墙限定 IP 访问
如果你不警惕把服务器暴露在公网,黑客还是有可能找到弊端。这时候,防火墙就派上用场了。你可以使用 UFW(Uncomplicated Firewall)或 iptables 来限定外部访问。
如果你用的是 UFW,可以如许设置:
- sudo ufw allow from 192.168.1.0/24 to any port 11434
- sudo ufw enable
复制代码 如果你用的是 iptables,可以如许设置:
- sudo iptables -A INPUT -p tcp --dport 11434 -s 192.168.1.0/24 -j ACCEPT
- sudo iptables -A INPUT -p tcp --dport 11434 -j DROP
复制代码 这就好比在 Ollama 的“家”周围设置了一道“防火墙”,只有来自特定 IP 段的“客人”才气进入。
3.Nginx配置Authorization校验
防止 Ollama 暴露在公网上最简单的方法是使用 Nginx 作为代理,并配置 Authorization 校验来确保只有经过授权的哀求才气访问。
步骤 1:安装 Nginx
如果你还没有安装 Nginx,可以通过以下命令安装(以下为Centos7版本命令):
- # 安装nginx所需要的依赖包,确保安装了必要的依赖项
- yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel
- cd /opt # 进入根目录下的 opt 目录
- wget https://nginx.org/download/nginx-1.26.3.tar.gz # 下载tar包(如果没有wget命令,需要先安装,centos7版本命令:`yum install -y wget`)
- tar -zxvf nginx-1.26.3.tar.gz -C /opt/module # 解压到 /opt/module 目录下(module目录需自行创建)
- cd /opt/module/nginx-1.26.3 # 进入 nginx-1.26.3 目录
- ./configure # 执行 ./configure 命令
- make && make install # 编译并安装(可以组合成一个命令执行:`./configure && make && make install`)
- # 编译安装完后,在 /usr/local/ 目录下会自动生成一个 nginx 目录,代表安装成功!
- (base) [root@root nginx-1.26.3]# whereis nginx
- nginx: /usr/local/nginx
- #启动脚本是在 /usr/local/nginx/sbin 目录下的 nginx 可执行文件启动
- cd /usr/local/nginx/sbin/ # 进入 sbin 目录
- ./nginx # 启动 Nginx(或直接执行 `/usr/local/nginx/sbin/nginx` )
复制代码 步骤 2:配置 Nginx 代理和 Authorization 校验
编辑 Nginx 配置文件,通常位于/etc/nginx/nginx.conf或/usr/local/nginx/conf/nginx.conf。以下是一个示例配置:
- # 定义API Key校验规则
- map $http_authorization $api_auth {
- default 0; # 默认拒绝
- "Bearer sk-wNssKJnXLiDPygfBUY4dc73e" 1; # 仅允许此Key
- }
- server {
- listen 8080;
- server_name your_domain_or_ip;
- location / {
- # 校验Authorization头
- if ($api_auth = 0) {
- return 403 '{"status":403,"message":"Invalid API Key"}\n'; # 自定义错误响应
- }
- # 代理到后端服务
- proxy_pass http://127.0.0.1:11434;
-
- # (配置可选项...)
- proxy_set_header Authorization $http_authorization;
- proxy_set_header Host $host;
- }
- }
复制代码 配置了 Authorization 校验后重启 Nginx:./nginx -s reload,这时哀求则需要添加 Authorization 哀求头参数,如下所示:
- # curl 命令行授权请求
- curl -H "Authorization: Bearer your_secret_token" http://your_domain_or_ip
- # headers 请求头配置参考
- headers = {
- "Authorization": "Bearer " + your_secret_token, # 替换为实际校验的 API Key
- "Content-Type": "application/json"
- }
复制代码 如果配置准确,未授权哀求将返回 403 Invalid API Key,而授权哀求将返回正常相应。
4.Nginx配置身份认证
如果 Ollama 服务没有配置任何验证,这时候你需要给 Ollama 加上一层“安全防护”。常见的方法是使用 Nginx 作为代理,并配置 htpasswd 来举行身份验证。
首先,安装 Nginx 和 htpasswd:
- sudo apt-get install nginx apache2-utils
复制代码 然后,创建一个用户和密码文件:
- sudo htpasswd -c /etc/nginx/.htpasswd your_username
复制代码 接着,配置 Nginx 代理:
- server {
- listen 8080;
- server_name your_domain_or_ip;
- location / {
- proxy_pass http://127.0.0.1:11434;
- proxy_set_header Host $host;
-
- auth_basic "Restricted Access";
- auth_basic_user_file /etc/nginx/.htpasswd;
-
- # (配置可选项...)
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- }
- }
复制代码 Nginx 配置身份验证后,哀求格式示比方下:
- # curl 命令行请求
- curl -X POST -u <username>:<password> -H "Content-Type: application/json" -d '<json_data>' <url>
- # requests 客户端请求
- response = requests.post(url, auth=HTTPBasicAuth(username, password), json=data)
复制代码 如许只有输入准确的用户名和密码的“客人”才气正常哀求 Ollama 的模型。
5.关闭远程下载模型
Ollama 默认允许远程下载模型,为了制止这种环境,你需要关闭远程下载功能。启动 Ollama 时,加上--no-remote参数:
通过关闭远程下载功能,从而增强体系的安全性、优化资源的管理,并确保对模型的完全控制。
6.监控异常连接
你还可以使用netstat或lsof命令来监控网络,用于监控异常的连接,及时发现并克制“坏人”。
- sudo netstat -tuln
- sudo lsof -i :11434
复制代码 或使用其它更高级的网络监听工具,对不健康的网络流量举行监控及防范。
总结
Ollama 的“裸奔”危机给我们敲响了警钟:在享受 AI 技术带来的便利时,我们绝不能忽视安全问题。盼望广大用户能够器重这些安全隐患,及时采取措施,给自己的服务器和数据穿上“安全的外套”,让 Ollama 在安全的环境中继续发挥它的“大模型智能管家”作用。
大数据
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |