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防火墙, 提示注入防护, 逆向工具