djkeane/GenesisLLMGuard
GitHub: djkeane/GenesisLLMGuard
一款 macOS 平台上的本地 LLM 应用安全监控系统,提供 prompt 注入检测、网络行为监控、防火墙自动隔离及 Obsidian 日志集成。
Stars: 0 | Forks: 0
# GenesisLLMGuard
**AI 安全监控与威胁防御系统**
GenesisLLMGuard 是一个用于 macOS 上本地 LLM(大语言模型)应用的综合安全监控系统。它提供实时的 prompt 注入防护、针对所有 LLM 应用的网络监控、通过 pf 防火墙自动隔离攻击者,以及向 Obsidian 持久记录威胁日志。
## 功能特性
### 🛡️ Prompt 注入防护
- **反向代理**拦截所有发往 Ollama 的请求(端口 11435)
- **19 种检测模式**,涵盖 prompt 注入、越狱尝试、角色欺骗等
- **实时阻断**并发送即时的 macOS 通知
- **Base64 编码攻击检测**
- 多轮对话中的**角色反转检测**
### 🔍 多 LLM 网络监控器
监控 12+ 种 LLM 应用:
- Ollama, Claude, ChatGPT, Gemini, Jan, LLM Studio
- AnyLLM, OpenCode, Hermes, PI, Mem, OpenClaude
检测内容:
- **暴露的服务** — 监听在非 localhost 接口上的应用
- **远程访问尝试** — 外部 IP 连接到 LLM 端口
- **异常的出站连接** — LLM 应用连接到未知主机
- **新进程检测** — 当 LLM 应用启动时
### 🚫 自动隔离(PF 防火墙)
- 通过 macOS Packet Filter (pf) 自动封锁攻击 IP
- 可配置的阈值(默认:2 次尝试)
- 通过 sudoers 实现免密 pfctl
- 重启后依然生效
### 📋 Obsidian 集成
- 每次攻击都会作为带有时间戳的 Markdown 笔记记录到您的仓库中
- 完整详情:时间戳、源 IP、应用、模型、攻击类型
- **修复建议** — 针对每种攻击类型提供具体、可操作的网络安全建议
- Obsidian 中的每小时摘要报告
### 🔔 macOS 通知
- 针对远程访问尝试的关键警报(带声音)
- 针对提示注入尝试的警告
- 针对新的 LLM 进程启动的信息提示
- 去重(每条消息 30 秒冷却时间)
- 进行速率限制以防止通知垃圾信息
### 💾 持久化攻击数据库
- 位于 `/opt/homebrew/var/genesis-attackers.json` 的基于 JSON 的数据库
- 跟踪攻击者 IP、尝试次数、首次/最后出现时间、攻击类型
- 隔离状态跟踪
## 安装说明
### 快速安装
```
curl -fsSL https://raw.githubusercontent.com/djkeane/GenesisLLMGuard/main/install.sh | bash
```
### 手动安装
```
# 克隆 repository
git clone https://github.com/djkeane/GenesisLLMGuard.git
cd GenesisLLMGuard
# 设为可执行
chmod +x install.sh
# 运行 installer
./install.sh
```
### 手动设置(逐步指南)
```
# 1. 复制 guard script
sudo cp src/genesis_llm_guard/*.py /opt/homebrew/var/ -r
# 2. 为 attack logs 创建 Obsidian symlink
mkdir -p "/Users/$(whoami)/Documents/Obsidian/LLM Guard"
ln -sf /opt/homebrew/var/genesis-obsidian-logs \
"/Users/$(whoami)/Documents/Obsidian/LLM Guard/Attacks"
# 3. 加载 launch agent
cp config/genesis.guard.plist ~/Library/LaunchAgents/
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/genesis.guard.plist
```
## 使用说明
### 将应用指向 guard 代理
不要连接到 `localhost:11434`,而是连接到 `localhost:11435`:
```
# Ollama CLI
OLLAMA_HOST=127.0.0.1:11435 ollama run llama3
# OpenCode 配置
# 将 API endpoint 设置为 http://127.0.0.1:11435
```
### 检查状态
```
curl http://127.0.0.1:11435/health
```
### 查看攻击日志
```
# Main log
tail -f /opt/homebrew/var/log/genesis-guard.log
# Attack log
tail -f /opt/homebrew/var/log/genesis-attacks.log
# Obsidian vault notes
ls ~/Documents/Obsidian/"LLM Guard"/Attacks/
```
### 管理隔离
```
# 列出已隔离的 IP
sudo pfctl -t genesis_quarantine -T show
# 释放 IP
sudo pfctl -t genesis_quarantine -T delete
```
### 环境变量
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `GUARD_HOST` | `127.0.0.1` | 代理绑定地址 |
| `GUARD_PORT` | `11435` | 代理端口 |
| `GUARD_ACTION` | `block` | 操作:`block`、`log` 或 `sanitize` |
| `GUARD_SCAN_INTERVAL` | `15` | 网络扫描间隔(秒) |
| `GUARD_QUARANTINE_THRESHOLD` | `2` | 触发自动隔离前的尝试次数 |
| `GUARD_LOG_DIR` | `/opt/homebrew/var/log` | 日志目录 |
## 攻击类型与修复建议
### Prompt 注入
| 类型 | 描述 | 修复建议 |
|------|-------------|-------------|
| `system_prompt_override` | 尝试覆盖系统指令 | Prompt 加固,指令隔离 |
| `role_escape` | 逃离分配的角色 | 服务端角色验证 |
| `dan_jailbreak` | "Do Anything Now" 越狱 | 模式数据库,LLM guard 模型 |
| `instruction_leak` | 尝试提取系统 prompt | 服务端组装,输出过滤 |
| `token_injection` | 特殊 token 注入 | Token 清洗 pipeline |
| `encoded_injection` | Base64 编码攻击 | 熵分析,双重解码 |
### 网络安全
| 类型 | 描述 | 修复建议 |
|------|-------------|-------------|
| `exposed_listener` | 非本地主机上的服务 | 立即绑定到 127.0.0.1 |
| `remote_access` | 到 LLM 端口的外部连接 | PF 封锁 + 端口审计 |
| `unusual_outbound` | 可疑的出站连接 | DNS 过滤,允许列表 |
## 架构设计
```
┌─────────────┐ ┌──────────────────┐ ┌───────────┐
│ LLM App │────▶│ Guard Proxy │────▶│ Ollama │
│ (opencode, │ │ localhost:11435 │ │ localhost │
│ claude...) │ │ │ │ :11434 │
└─────────────┘ └──────────────────┘ └───────────┘
│
┌─────┴──────┐
│ Monitor │
│ Thread │
└─────┬──────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ PF │ │ Obsidian│ │macOS │
│Quarantine│ │ Logs │ │ Notify │
└─────────┘ └─────────┘ └─────────┘
```
## 安全说明
- guard 代理仅监听 `127.0.0.1` (localhost)
- PF 隔离使用专用的 anchor 和 table
- sudoers 条目仅限于特定的 pfctl 操作
- 攻击数据库在本地存储,并仅授予用户访问权限
- 所有来自 LLM 应用的出站连接都会被监控并记录
## 许可证
MIT 许可证 — 详情请参阅 [LICENSE](LICENSE)。
标签:AI安全, Chat Copilot, Homebrew安装, LLM应用防火墙, Obsidian, PF防火墙, 提示注入防护, 逆向工具