maiconburn/innerwarden

GitHub: maiconburn/innerwarden

一款用于Linux和macOS的主机安全代理,提供日志收集、攻击检测和可选自动响应能力。

Stars: 0 | Forks: 0

# InnerWarden 一款用于 Linux 和 macOS 的开源主机安全代理。它实时监控系统活动,使用确定性规则检测攻击,并在置信度足够高时自主响应。 两个 Rust 二进制文件。运行时无外部依赖。 - `innerwarden-sensor` — 确定性遥测收集和事件检测(无 AI,无 HTTP) - `innerwarden-agent` — 增量分析、AI 辅助分流、响应技能、仪表板和 Telegram 告警 默认态势较为保守: - 所有收集器均为仅追加的 JSONL - 响应器默认禁用 - `dry_run = true` 是推荐的起始设置 - 涉及隐私的收集器需明确主动开启 ## 功能介绍 ### Sensor — 收集 Sensor 尾随日志文件和系统接口,将每个事件归一化为通用格式,并写入 `events-YYYY-MM-DD.jsonl` 和 `incidents-YYYY-MM-DD.jsonl`。 **内置来源:** - `/var/log/auth.log` — SSH 登录尝试、失败、无效用户 - `journald` — sshd、sudo、kernel(防火墙信号)、任何配置单元 - Docker 事件 — start、stop、die、OOM - 文件完整性 — 可配置路径的 SHA-256 轮询 - nginx 访问日志 — HTTP 层事件(Combined Log Format) - `auditd EXECVE` — Shell 命令轨迹(选填,需明确同意) - `auditd TTY` — 原始键盘输入(选填,隐私影响较高) - `log stream` (macOS) — 用于 SSH、sudo 和系统事件的统一日志 **集成收集器:** | 工具 | 摄取内容 | 方式 | |------|----------------|-----| | Falco | 内核/容器异常告警 | 尾随 Falco JSON 日志 | | Suricata | 网络 IDS 告警(alert、dns、http、tls、anomaly) | 尾随 EVE JSON 日志 | | osquery | 主机查询(端口、cron、sudoers、进程、用户) | 尾随差分结果日志 | 高和严重级别的 Falco 告警以及 Suricata 严重级别 1/2 的告警会跳过检测层,直接作为事件发送给代理——因为工具已经完成了检测。 所有收集器均为故障开放:错误会被记录,但绝不会导致 Sensor 崩溃。 ### Sensor — 检测器 六个内置检测器在归一化事件流上运行: | 检测器 | 捕获内容 | 来源 | |----------|----------------|--------| | `ssh_bruteforce` | 来自同一 IP 的重复 SSH 失败 | auth.log / journald | | `credential_stuffing` | 来自一个 IP 尝试大量不同用户名 | auth.log / journald | | `port_scan` | 源 IP 快速探测唯一端口 | firewall / kernel logs | | `sudo_abuse` | 用户爆发性执行可疑特权命令 | journald sudo | | `search_abuse` | 对高成本 HTTP 端点的高频请求 | nginx access log | | `execution_guard` | 通过 AST 分析检测可疑 Shell 命令模式 | auditd EXECVE | `execution_guard` 使用 [tree-sitter-bash](https://github.com/tree-sitter/tree-sitter-bash) 对命令进行结构化解析。它能检测 `curl | sh` 管道、从 `/tmp` 执行、反向 Shell 模式、混淆命令以及分阶段序列(下载 → chmod → 执行)。 目前仅在 `observe` 模式下运行——生成事件,不进行自动拦截。 ### Agent — 分析与响应 - 通过字节偏移游标增量读取 JSONL(重启时不重新读取) - 在任何 AI 调用之前应用算法门控(严重性、私有 IP、已被拦截) - 在时间窗口内关联事件并聚类,以提供更丰富的 AI 上下文 - 支持 OpenAI、Anthropic 和 Ollama(本地/离线)作为 AI 提供商 - 在明确启用时执行有边界的响应技能 - 通过 Telegram 发送实时告警和审批请求 **响应技能:** | 技能 | 层级 | 功能 | |-------|------|-------------| | `block-ip-ufw` | Open | 通过 ufw 拦截 IP (Linux) | | `block-ip-iptables` | Open | 通过 iptables 拦截 IP (Linux) | | `block-ip-nftables` | Open | 通过 nftables 拦截 IP (Linux) | | `block-ip-pf` | Open | 通过 pf 防火墙拦截 IP (macOS) | | `suspend-user-sudo` | Open | 临时拒绝 sudo,带有自动过期 TTL | | `rate-limit-nginx` | Open | 在 nginx 层返回 HTTP 403 拒绝,带有 TTL | | `monitor-ip` | Premium | 通过 tcpdump + 元数据边车进行有边界流量捕获 | | `honeypot` | Premium | SSH/HTTP 蜜罐,包含隔离配置文件和取证移交 | **运维人员通信:** - 带有最低严重级别过滤的 Webhook HTTP POST - Telegram T.1:高/严重事件的实时推送告警 - Telegram T.2:对待处理操作的行内批准/拒绝——决策会被审计 **仪表板(本地,需认证):** - HTTP Basic 认证(Argon2 哈希),默认只读 - 通过 Server-Sent Events 实现实时事件时间线(无需轮询) - 攻击者路径查看器,带有 AI 生成的章节栏 - 报告标签页:健康摘要、日环比趋势、异常提示 - 运维人员操作:从浏览器拦截 IP 和暂停用户(需设置 `responder.enabled = true`) - 行内实体搜索、告警弹窗、深度链接调查状态 ### 模块 检测器和技能被打包成模块——针对特定威胁类别的垂直解决方案: | 模块 | 覆盖范围 | |--------|---------------| | `ssh-protection` | SSH 暴力破解 + 凭据填充 → block-ip | | `network-defense` | 端口扫描 → block-ip | | `sudo-protection` | Sudo 滥用 → suspend-user-sudo | | `execution-guard` | Shell 命令 AST 分析 → suspicious_execution 事件 | | `file-integrity` | SHA-256 文件监控 → Webhook 告警 | | `container-security` | Docker 生命周期事件(可观测性) | | `search-protection` | nginx 访问日志 → search_abuse → rate-limit-nginx | | `threat-capture` | monitor-ip + honeypot (Premium) | | `falco-integration` | Falco JSON 日志 → 事件透传 | | `suricata-integration` | Suricata EVE JSON → 事件透传 | | `osquery-integration` | osquery 结果日志 → 富化事件 | ## 架构 ``` External tools (Falco, Suricata, osquery) -> log files -> innerwarden-sensor -> events-YYYY-MM-DD.jsonl -> incidents-YYYY-MM-DD.jsonl -> innerwarden-agent -> decisions-YYYY-MM-DD.jsonl -> telemetry-YYYY-MM-DD.jsonl -> summary-YYYY-MM-DD.md -> Telegram alerts / approvals -> local dashboard ``` ## 支持的环境 - **Linux** — Ubuntu 22.04+(主要参考平台),任何基于 `systemd` 的发行版 - **macOS** — Ventura 及更高版本(launchd 服务、pf 防火墙、`log stream` 收集器) 提供 `x86_64` 和 `aarch64` 的预构建二进制文件。 ## 快速开始 ### 构建和测试 ``` make test # 374 tests (145 agent + 116 ctl + 113 sensor) make build ``` ### 使用夹具配置在本地运行 ``` make run-sensor # writes to ./data/ make run-agent # reads from ./data/ ``` ### 启动仪表板 ``` innerwarden-agent --dashboard-generate-password-hash export INNERWARDEN_DASHBOARD_USER=admin export INNERWARDEN_DASHBOARD_PASSWORD_HASH='$argon2id$...' make run-dashboard ``` 仪表板:`http://127.0.0.1:8787` 深度链接调查状态: ``` /?date=2026-03-13&subject_type=ip&subject=203.0.113.10&window_seconds=300 ``` ## 在 Linux 或 macOS 上安装 ``` curl -fsSL https://get.innerwarden.dev | bash ``` 执行内容: - 下载适用于您架构的预构建二进制文件(~10 秒) - 创建 `/etc/innerwarden/{config.toml,agent.toml,agent.env}` - 创建并启用 `systemd` 单元或 `launchd` plists - 以保守配置启动(`responder.enabled = false`、`dry_run = true`) - 在启用 Shell 审计前提示隐私同意 - `--with-integrations` 标志:检测并选择性安装 Falco、Suricata 和 osquery,并预配置收集器 或者从源码构建: ``` INNERWARDEN_BUILD_FROM_SOURCE=1 curl -fsSL https://get.innerwarden.dev | bash ``` 首次部署姿态: - `responder.enabled = false` - `dry_run = true` - 在任何远程暴露之前配置好仪表板认证 ## 控制平面 ``` innerwarden list # list all capabilities and modules innerwarden enable block-ip # enable IP blocking (ufw backend) innerwarden enable block-ip --param backend=nftables innerwarden enable sudo-protection innerwarden enable shell-audit # prompts for privacy consent innerwarden status # services + capabilities + modules innerwarden doctor # diagnostics with fix hints (exit 1 on issues) innerwarden upgrade # fetch and install latest release (SHA-256 verified) innerwarden upgrade --check # check without installing innerwarden module install # install a module (SHA-256 verified) innerwarden module update-all # update all modules with update_url ``` ## 安全更新路径 ``` make rollout-precheck HOST=user@server make deploy HOST=user@server ssh user@server "sudo systemctl restart innerwarden-agent innerwarden-sensor" make rollout-postcheck HOST=user@server ``` 快速回滚: ``` make rollout-rollback HOST=user@server ``` 或者从二进制文件自更新: ``` innerwarden upgrade ``` ## 安全模型 - 响应技能受配置门控(默认 `responder.enabled = false`) - `dry_run = true` 是部署期间推荐的默认设置 - 通过 `auditd` 进行的 Shell 审计涉及隐私——仅在明确授权下启用 - `execution_guard` 在 v0.1 中仅以 `observe` 模式运行——检测但不拦截 - 蜜罐功能有边界限制且需主动开启 - AI 仅为建议性质,除非您明确允许自动执行 ## 常见问题 **这是 EDR 吗?** 不。这是一个专注于主机安全可观测性和响应的项目,具有仅追加的工件、有边界的调查功能和可选的响应技能。 **它会默认拦截吗?** 不会。安全的起始姿态是 `responder.enabled = false` 和 `dry_run = true`。 **我需要 AI 提供商吗?** 不需要。收集、检测、JSONL 工件、报告和仪表板功能在没有 AI 的情况下均可正常工作。 AI 层仅用于置信度评分的决策引擎,这是可选的。 **我可以在没有 Falco 或 Suricata 的情况下使用它吗?** 可以。集成收集器是可选的。内置的 Sensor 检测器覆盖 SSH、sudo、端口扫描、API 滥用和命令执行,无需任何外部工具。 **我可以添加自定义检测器或技能吗?** 可以。请参阅 [docs/module-authoring.md](docs/module-authoring.md)。 ## 仓库指南 - [ROADMAP.md](ROADMAP.md) — 计划与发布内容 - [CHANGELOG.md](CHANGELOG.md) — 发布说明 - [CONTRIBUTING.md](CONTRIBUTING.md) — 贡献者工作流 - [SECURITY.md](SECURITY.md) — 漏洞报告 - [docs/index.md](docs/index.md) — 文档索引 - [docs/format.md](docs/format.md) — JSONL 事件和事件模式 - [docs/module-authoring.md](docs/module-authoring.md) — 构建自定义模块指南 - [docs/integrated-setup.md](docs/integrated-setup.md) — 在 Ubuntu 22.04 上设置 Falco + Suricata + osquery + Telegram - [CLAUDE.md](CLAUDE.md) — 维护者操作文档 ## 许可证 MIT。请参阅 [LICENSE](LICENSE)。
标签:AI辅助分析, AI风险缓解, CSV导出, Docker监控, EDR, Falco集成, macOS安全, Nginx监控, osquery集成, PE 加载器, Rust, SOAR, SSH监控, Suricata集成, Telegram告警, Web截图, Web报告查看器, x64dbg, 可视化界面, 安全代理, 审计日志, 容器安全, 开源, 无线安全, 时序数据库, 端点防护, 系统加固, 网络安全, 网络安全审计, 网络流量审计, 脆弱性评估, 自动化响应, 请求响应过滤, 请求拦截, 通知系统, 隐私保护, 零依赖