1 前言

  近日,国家信息安全漏洞共享平台收录了一个Ollama的漏洞,编号CNVD-2025-04094。​该漏洞可能导致攻击者在未授权的情况下访问高危接口,进而窃取敏感数据、滥用资源或篡改系统配置。如果 Ollama 服务端口(默认为 11434)直接暴露于公网,且未启用身份认证机制,远程攻击者可能在未授权的情况下访问其高危接口。​这可能导致敏感数据泄露、计算资源滥用或系统配置被篡改,进一步扩大攻击范围。​
在这里插入图片描述
  GIS数据大都是涉密数据,很多GISer本地部署大模型都是使用的Ollama工具,那么就必然涉及到该漏洞的修复工作,防止数据泄密。接下来作者就结合自己的实践经验,给出五种漏洞修复方式,供大家参考。

2 修复方式

2.1 设置Ollama环境变量

# 在powershell中执行以下命令
# 设置仅允许本地访问(需重启Ollama服务生效)
$env:OLLAMA_HOST="127.0.0.1"
ollama serve

友情提示0.1.34之后的版本默认已经设置了该环境变量,比如作者之前的安装教程使用的是0.5.4版本,便无需担心这个问题了,不是最新版本的建议升级版本。

手动配置步骤:

右键【此电脑】→【属性】→【高级系统设置】→【环境变量】→【新建】→【变量名:OLLAMA_HOST】→【变量值:127.0.0.1】→【保存确定,重启电脑】

2.2 配置Windows防火墙

# 在powershell中执行以下命令
# 新增防火墙规则阻断11434端口的公网访问
New-NetFirewallRule -DisplayName "Block_Ollama_Public" -Direction Inbound -LocalPort 11434 -Protocol TCP -Action Block

手动配置步骤:

【Windows Defender 防火墙】→【入站规则】→【新建规则】
类型:端口
协议:TCP
端口:11434
操作:阻止

2.3 配置Ollama允许指定IP(段)访问

# 修改Ollama配置文件(默认路径:C:\Users\用户名\.ollama\config.yaml)
allowed_ips:
  - 192.168.1.0/24  # 内网IP段
  - 10.10.10.5      # 特定授权IP

2.4 配置Nginx反向代理

https配置:

# https
# 在Nginx配置中添加Basic认证
server {
    listen 443 ssl;
    server_name yourdomain.com;
    
    ssl_certificate     C:/ssl/ollama.crt;
    ssl_certificate_key C:/ssl/ollama.key;

    location / {
        proxy_pass http://127.0.0.1:11434;
        auth_basic "Ollama Admin";
        auth_basic_user_file C:/nginx/conf/.htpasswd;
        
        # IP白名单叠加
        allow 192.168.1.0/24;
        deny all;
    }
}

http配置:

# http
server {
    listen 80;
    server_name yourdomain.com;
    
    location / {
        proxy_pass http://backend_server:port;  # 替换为实际后端地址
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

2.5 禁用高危接口

# 在powershell中执行以下命令
$apis = @("pull","delete","push")
foreach ($api in $apis) {
    New-NetFirewallRule -DisplayName "Block_Ollama_$api" -Direction Inbound -Program "C:\Program Files\Ollama\ollama.exe" -RemoteAddress Any -Action Block -Enabled True
}

3 一键修复

  为了方便大家使用,作者已经整理好了以上操作的一键修复工具,可复制以下代码,在电脑上新建一个fix.bat文件,然后右键以管理员权限运行即可。

@echo off
chcp 65001
:: Ollama一键修复脚本(CNVD-2025-04094)| 需管理员权限
:: 更新时间:2024年5月

:: 检查管理员权限
net session >nul 2>&1
if %errorLevel% neq 0 (
    echo 正在请求管理员权限...
    powershell Start-Process -Verb RunAs -FilePath "%comspec%" -ArgumentList "/c cd /d \"%~dp0\" & \"%~0\""
    exit /b
)

:: 设置环境变量
echo [Step 1/4] 配置服务监听范围...
setx OLLAMA_HOST "127.0.0.1" /m >nul
taskkill /f /im ollama.exe >nul 2>&1
start "" /B ollama serve

:: 配置防火墙规则
echo [Step 2/4] 创建公网访问限制规则...
powershell -Command "if (-not (Get-NetFirewallRule -DisplayName 'Block_Ollama_Public' -ErrorAction SilentlyContinue)) { New-NetFirewallRule -DisplayName 'Block_Ollama_Public' -Direction Inbound -LocalPort 11434 -Protocol TCP -Action Block }"


:: 高危API防护
echo [Step 3/4] 创建高危API防护规则...
powershell -Command "$apis = @('pull','delete','push'); foreach ($api in $apis) { $rule_name = 'Block_Ollama_'+$api; if (-not (Get-NetFirewallRule -DisplayName $rule_name -ErrorAction SilentlyContinue)) { New-NetFirewallRule -DisplayName $rule_name -Direction Inbound -Program 'C:\Program Files\Ollama\ollama.exe' -RemoteAddress Any -Action Block } }"

:: 完成提示
echo [Step 4/4] Ollama漏洞修复操作完成!
echo -------------------------------
echo 请重启计算机使所有配置生效
echo -------------------------------
pause

不想手动创建bat文件的同学,或者创建失败的同学,可在公众号回复Ollama漏洞自动获取该文件。

4 总结

  GIS中很多数据都是涉密的,因此一定要保证本地数据的安全。本文总结了针对Ollama漏洞的各种操作,常规操作比如添加环境变量、配置防火墙等都已经给出了具体示例,还提供了一键修复工具的示例代码。复杂操作比如配置自定义访问端口中yaml文件配置和nginx配置也给出了示例,希望对读者有所帮助,回见~

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐