GOlbacevskis/PseudoLLM

GitHub: GOlbacevskis/PseudoLLM

PseudoLLM 是一个基于 FastAPI 的隐私网关,在 Elastic 安全告警 JSON 发送至外部 LLM 前对其进行去标识化处理,响应可在本地还原。

Stars: 0 | Forks: 0

# PseudoLLM – Elastic 告警去标识化与 LLM 分析 PseudoLLM 是一个使用 FastAPI 构建的隐私网关,它会在将 Elastic/Kibana 告警 JSON 中的敏感值发送到外部 LLM 之前对其进行去标识化处理。响应可以在本地进行还原以供展示。 该应用程序支持 OpenAI 和 Anthropic 模型、可重用的提示词文件、可配置的去标识化规则以及审计日志。 ## 主要功能 - 感知 JSON 的去标识化,使用基于 HMAC 的一致性 token。 - 不区分大小写的字段路径、后缀和 glob 匹配。 - 可配置的排除项,用于处理公共元数据,例如 MITRE ATT&CK ID。 - 替换文本字段中已发现的敏感值。 - 支持 OpenAI 和 Anthropic 模型选择。 - 支持特定账户模型的自定义模型 ID。 - 从 `prompts/*.txt` 加载提示词模板。 - 可选的 LLM 响应本地还原。 - JSONL 审计日志。 - 通过 `.env` 或浏览器 UI 提供 API 密钥。 ## 处理流程 ``` Elastic alert JSON | v JSON-aware pseudonymization | v Pseudonymized JSON --> OpenAI or Anthropic | | | v +-------------- LLM response | v Local de-pseudonymization ``` 只有经过去标识化处理的 JSON 才会被发送到所选的 LLM 提供商。 ## 项目结构 ``` . |-- web_llm.py FastAPI application and LLM integrations |-- pseudonymize_logs.py Pseudonymization logic and configuration |-- templates/ | `-- index.html Browser interface |-- prompts/ | `-- security_analysis.txt Default analysis prompt |-- requirements.txt |-- .env.example `-- .gitignore ``` ## 环境要求 - Python 3.10 或更高版本。 - OpenAI 或 Anthropic API 密钥。 - 通过浏览器输入 API 密钥时需要使用 HTTPS。 ## 本地安装 创建并激活虚拟环境: ``` python3 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip python -m pip install -r requirements.txt ``` 在 Windows PowerShell 中,使用以下命令激活: ``` .venv\Scripts\Activate.ps1 ``` ## 配置 复制示例配置: ``` cp .env.example .env ``` 编辑 `.env`: ``` PSEUDO_SECRET=replace-with-a-long-random-secret OPENAI_API_KEY=sk-replace-me ANTHROPIC_API_KEY=sk-ant-replace-me LLM_MODEL=gpt-5.2 DEFAULT_PROMPT_FILE=security_analysis.txt ``` 只需一个 LLM 提供商密钥。或者,也可以在 UI 中输入 API 密钥。浏览器持久化使用 `localStorage`,仅应在通过 HTTPS 连接的可信设备上启用。 切勿将 `.env` 或真实的告警 JSON 提交到 Git。 ## 运行应用程序 ``` uvicorn web_llm:app --host 127.0.0.1 --port 8000 ``` 打开 。 必须通过 FastAPI 打开该页面。直接打开 `templates/index.html` 会导致 `/prompts` 和其他 API endpoint 无法正常工作。 ## 提示词模板 将提示词文件放置在 `prompts` 目录中: ``` prompts/security_analysis.txt prompts/short_summary.txt prompts/incident_report.txt ``` 所有 `.txt` 文件都会显示在提示词列表中。默认文件通过以下方式选择: ``` DEFAULT_PROMPT_FILE=security_analysis.txt ``` 如果无法读取配置的文件,服务器将使用简短的内置备用提示词。 ## 去标识化配置 主要的配置列表位于 `pseudonymize_logs.py` 中: - `KNOWN_FIELD_PATHS` – 已知的敏感 JSON 路径。 - `KEY_GLOB_PATTERNS` – glob 规则,例如 `*.id`。 - `PSEUDONYMIZATION_EXCLUDED_PATHS` – 必须保持不变(排除)的路径。 - `PATH_SEED_PATTERNS` – 从文件路径和 SID 中提取的敏感值。 排除规则优先于包含规则。MITRE ATT&CK 战术和技术 ID(例如 `TA0003`、`T1098` 和 `T1059.001`)将被视为公开值。 ## API endpoint | 方法 | 路径 | 用途 | |---|---|---| | `GET` | `/` | Web 界面 | | `GET` | `/prompts` | 可用的提示词模板 | | `POST` | `/pseudonymize` | 在不调用 LLM 的情况下对 JSON 进行去标识化 | | `POST` | `/analyze` | 进行去标识化/分析并返回 LLM 响应 | ## Rocky Linux 部署 典型的生产环境路径是 `/opt/pseudollm`。避免在使用 `noexec` 挂载的 `/home` 文件系统上执行该服务。 安装项目及其依赖项: ``` sudo mkdir -p /opt/pseudollm sudo chown "$USER":"$USER" /opt/pseudollm cd /opt/pseudollm python3 -m venv .venv .venv/bin/python -m pip install --upgrade pip .venv/bin/python -m pip install -r requirements.txt sudo useradd --system --home-dir /opt/pseudollm --shell /sbin/nologin pseudollm sudo chown -R pseudollm:pseudollm /opt/pseudollm ``` 将生产环境密钥存储在项目之外: ``` sudo install -d -m 700 /etc/pseudollm sudo install -o root -g root -m 600 .env /etc/pseudollm/pseudollm.env ``` 示例 `/etc/systemd/system/pseudollm.service`: ``` [Unit] Description=PseudoLLM web service After=network-online.target [Service] Type=simple User=pseudollm WorkingDirectory=/opt/pseudollm EnvironmentFile=/etc/pseudollm/pseudollm.env ExecStart=/opt/pseudollm/.venv/bin/python -m uvicorn web_llm:app --host 127.0.0.1 --port 8000 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target ``` 使用以下命令启用: ``` sudo systemctl daemon-reload sudo systemctl enable --now pseudollm sudo systemctl status pseudollm ``` 使用 Nginx 或其他带有 HTTPS 的反向代理进行外部访问。 ## 安全说明 - 轮换任何以前出现在源文件或终端记录中的 API 密钥。 - 切勿发布生产环境的 `.env`、审计日志或原始 Elastic 告警。 - 浏览器保存的 API 密钥可以被同源下运行的 JavaScript 访问。 - 在将本项目用于新的事件 schema 之前,请检查 `PSEUDONYMIZATION_EXCLUDED_PATHS`。 - 去标识化降低了泄露风险,但不能替代正式的隐私和安全审查。 在提交之前仔细检查 `git status`。原始告警和 `.env` 不得出现在暂存文件列表中。 ## 许可证 目前暂未包含任何许可证。在公开发布之前请添加许可证。MIT、Apache-2.0 和 GPL-3.0 是常见的选择,但它们具有不同的重用要求。
标签:Anthropic, AV绕过, CIS基准, DLL 劫持, FastAPI, OpenAI, Petitpotam, 内存规避, 大语言模型, 数据脱敏, 网络安全, 逆向工具, 隐私保护