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, 内存规避, 大语言模型, 数据脱敏, 网络安全, 逆向工具, 隐私保护