dfarid479/host-sentry

GitHub: dfarid479/host-sentry

一款专为WSL2/Windows设计的本地工作站安全监控程序,检测文件、凭据与Claude审计链并以仪表板统一呈现。

Stars: 0 | Forks: 0

# host-sentry 一款用于 WSL2/Windows 的独立工作站安全监控程序。在 systemd 下 24/7 运行,独立于任何 AI 编码助手。监控文件完整性违规、凭据蔓延、危险 Shell 模式、意外网络活动与恶意软件签名,并在本地实时仪表板中呈现所有事件。 构建目的是应对在开发机上运行具有广泛文件系统和 Shell 访问权限的 AI 编码助手(Claude Code)所带来的攻击面。 ## 监控内容 | 模块 | 检查内容 | 间隔 | |---|---|---| | **完整性监视器** | Claude 设置、MCP 配置、SSH 密钥、Shell rc 文件、内存文件的 SHA256 基线 | 每 4 小时 + WSL 路径的实时 inotify | | **秘密扫描器** | 14 种凭据模式 + 在所有项目文件和会话历史中的 Shannon 熵检测 | 每 24 小时 | | **进程监视器** | 与已知良好允许列表对比的监听套接字和出站连接 | 每 6 小时 | | **Claude 审计** | 跟踪 `~/.claude/history.jsonl`,检测危险工具调用模式(curl、base64 解码、authorized_keys 写入、rm -rf) | 每 4 小时 | | **YARA 扫描器** | 对 Downloads 和 /tmp 的恶意软件签名扫描 | 每 24 小时 | | **Windows 伴侣** | Defender 状态、计划任务、启动项、本地管理员、WSL 配置 —— 通过 PowerShell + 任务计划程序 | 每 1 小时 | ## 威胁模型 专门设计用于检测以下行为: - **Hook 滥用** — 写入 `~/.claude/settings.json` 或任意项目 `.claude/settings.local.json`(Shell 钩子 = 在你的用户下持久化代码执行) - **MCP 服务器沦陷** — 在 MCP 服务器目录中对 `package.json` / `package-lock.json` 的变更(依赖更新后) - **凭据蔓延** — 项目文件或会话历史中发现的 API 密钥、令牌与私钥头部 - **内存中毒** — 对 Claude 持久化内存目录的意外写入 - **提示注入持久化** — 任何可被 Claude 读取并可能包含攻击者 crafted 指令的文件 ## 仪表板 实时仪表板地址 `http://127.0.0.1:8765/dashboard` — 每 30 秒轮询。点击任意告警行可展开。可直接从浏览器确认(API 键存储在 localStorage 中)。 ![dashboard screenshot placeholder](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/5a48258cad033823.png) ## 要求 - Python 3.11+ - 启用 systemd 的 WSL2(Ubuntu 或 Kali),需在 `/etc/wsl.conf` 中设置 `systemd=true` - Windows 10/11(用于 PowerShell 伴侣和 Toast 通知) ## 安装 ``` git clone https://github.com/dfarid479/host-sentry.git cd host-sentry python3 -m venv venv source venv/bin/activate pip install -r requirements.txt cp .env.example .env # 编辑 .env — 生成 API 密钥: python3 -c "import secrets; print('API_SECRET_KEY=' + secrets.token_urlsafe(32))" ``` ## 部署(WSL systemd) ``` # 安装 systemd 用户单元 cp host-sentry.service ~/.config/systemd/user/ systemctl --user daemon-reload systemctl --user enable --now host-sentry # 验证 systemctl --user status host-sentry curl http://127.0.0.1:8765/health ``` ## Windows 伴侣(可选但推荐) 在 Windows PowerShell 中运行一次以导入两个计划任务: ``` # 登录时自动启动 WSL 服务 schtasks /Create /XML "\\wsl$\kali-linux\mnt\c\Users\\projects\host-sentry\host-sentry-logon.xml" /TN "host-sentry-logon" # 每小时 Windows 侧扫描 schtasks /Create /XML "\\wsl$\kali-linux\mnt\c\Users\\projects\host-sentry\windows-scan-task.xml" /TN "host-sentry-windows-scan" ``` ## 用法 ``` export SENTRY_AUTH="Authorization: Bearer $(grep API_SECRET_KEY .env | cut -d= -f2-)" # 立即运行扫描 curl -X POST -H "$SENTRY_AUTH" http://127.0.0.1:8765/scan/full # 列出未确认告警 curl -H "$SENTRY_AUTH" "http://127.0.0.1:8765/alerts?unacked_only=true" | python3 -m json.tool # 在有意文件更改后重新播种基线 curl -H "$SENTRY_AUTH" http://127.0.0.1:8765/baseline/refresh ``` 详见完整操作指南 [HOW-TO.md](HOW-TO.md)。 ## AI 分类(可选) 内置但默认禁用。启用后,中等及以上告警会被发送至 Claude API 进行分类(正常 / 可疑 / 恶意),并附带推理依据。每次分类调用会包含最近 10 条告警作为上下文,以便模型识别执行链,而不仅做孤立分类。 要启用,请在 `.env` 中添加: ``` AI_TRIAGE_ENABLED=true ANTHROPIC_API_KEY=sk-ant-... ``` 然后安装可选依赖并重启: ``` pip install anthropic systemctl --user restart host-sentry ``` ## 配置 所有设置位于 `app/config.py`,可通过 `.env` 覆盖。关键变量如下: | 变量 | 默认值 | 描述 | |---|---|---| | `API_SECRET_KEY` | (必需) | 本地 API 的 Bearer 令牌 | | `WATCH_PATHS` | (参见 config.py) | 要进行哈希监控的路径,冒号分隔 | | `SECRET_SCAN_PATHS` | (参见 config.py) | 凭据/熵扫描的目标路径 | | `TOAST_ENABLED` | `true` | Windows Toast 通知 | | `DISCORD_WEBHOOK_URL` | (空白) | 可选的 Discord 告警 | | `AI_TRIAGE_ENABLED` | `false` | 启用 Claude API 分类 | | `INTEGRITY_INTERVAL_SECONDS` | `14400` | 4 小时 | | `PROCESS_CHECK_INTERVAL_SECONDS` | `21600` | 6 小时 | | `CLAUDE_AUDIT_INTERVAL_SECONDS` | `14400` | 4 小时 | ## 技术栈 - **FastAPI** + **uvicorn** — API 与仪表板服务 - **APScheduler** — 周期性扫描任务 - **watchdog** — inotify 实时文件监控(WSL 原生路径) - **aiosqlite** — 用于基线、告警与状态的异步 SQLite - **YARA**(可选)— 恶意软件签名扫描 - **anthropic**(可选)— AI 分类 ## 博客文章 [host-sentry: A Local Security Monitor for the Machine Running Claude Code](https://danielfarid.github.io)
标签:AI 安全, AI 编码助手安全, API 密钥暴露, Claude 审计, Hook 注入检测, inotify, MCP 服务器安全, RFI远程文件包含, Shannon 熵检测, systemd 服务, Windows 安全, WSL2, x64dbg, YARA 扫描, 依赖包篡改, 允许列表, 内存文件监控, 凭证泄露检测, 威胁建模, 工作站安全监控, 已知良好基线, 开发环境防护, 持久化威胁, 提示注入, 本地仪表盘, 网络行为监控, 逆向工具, 链式检测, 集群管理