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, 可视化界面, 安全代理, 审计日志, 容器安全, 开源, 无线安全, 时序数据库, 端点防护, 系统加固, 网络安全, 网络安全审计, 网络流量审计, 脆弱性评估, 自动化响应, 请求响应过滤, 请求拦截, 通知系统, 隐私保护, 零依赖