InnerWarden/innerwarden

GitHub: InnerWarden/innerwarden

一款轻量级自托管主机安全代理,通过多源日志检测威胁并自动或人工批准执行防御动作。

Stars: 9 | Forks: 0

# Inner Warden [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/7a8e041971163618.svg)](https://github.com/InnerWarden/innerwarden/actions/workflows/ci.yml) [![安全](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/e9dc07a424163628.svg)](https://github.com/InnerWarden/innerwarden/actions/workflows/security.yml) [![发布](https://img.shields.io/github/v/release/InnerWarden/innerwarden?label=release&color=blue)](https://github.com/InnerWarden/innerwarden/releases/latest) [![许可证: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![GitHub Stars](https://img.shields.io/github/stars/InnerWarden/innerwarden)](https://github.com/InnerWarden/innerwarden/stargazers) [![最近提交](https://img.shields.io/github/last-commit/InnerWarden/innerwarden)](https://github.com/InnerWarden/innerwarden/commits/main) ![使用 Rust 构建](https://img.shields.io/badge/built%20with-Rust-orange) ![内存](https://img.shields.io/badge/memory-under%2050MB-green) ![AI 可选](https://img.shields.io/badge/AI-optional-lightgrey) **你的服务器应该具备自我防御能力。** Inner Warden 是一个用于 Linux 和 macOS 的自主安全代理。它检测攻击,向你发出警报,并在你允许的情况下自动做出响应。无需云端,无依赖。仅需两个 Rust 守护进程和一个 CLI。 ``` curl -fsSL https://innerwarden.com/install | sudo bash ``` 10 秒即可安装。默认以仅观察模式启动。由你决定何时正式上线。

Dashboard — real-time threat overview

Dashboard — IP investigation view

## 它的功能 1. **监控** — 从主机收集信号:SSH、Docker、nginx、sudo、shell 审计、防火墙日志 2. **检测** — 十三个状态检测器识别暴力破解、凭证填充、端口扫描、sudo 滥用等 3. **告警** — Telegram、Slack、浏览器推送、webhook — 实时推送到你的手机 4. **决策** — 可选咨询 AI 获取带置信度评分的建议(非必需) 5. **行动** — 封禁 IP、暂停 sudo、部署蜜罐、捕获流量。或者什么也不做 — 由你决定。 所有操作均在本地进行,可审计,且可撤销。 ## 当你的服务器受到攻击时会发生什么 ``` 00:00 SSH brute-force begins from 203.0.113.10 00:45 Detector fires — 8 failed logins, 5 usernames, one IP AI evaluates: "coordinated brute-force" Confidence: 0.94 Recommended action: block_ip 00:46 Firewall rule added: ufw deny from 203.0.113.10 00:46 Telegram alert lands on your phone 00:46 Decision logged to audit trail Threat contained. ``` 启用自动执行时无需人工干预。否则,你需要通过 Telegram 或仪表板批准。完整的审计追踪。每个操作均可撤销。 ## 响应技能 当威胁被确认时,Inner Warden 会选择合适的工具。 | 技能 | 作用 | |-------|-------------| | **Block IP** | 通过 ufw、iptables、nftables 或 pf (macOS) 在防火墙拒绝 | | **Suspend sudo** | 通过 sudoers 插入文件撤销用户的 sudo 权限。TTL 后自动过期。 | | **Kill process** | 终止受损用户的所有进程。受 TTL 限制。 | | **Block container** | 暂停 Docker 容器。TTL 后自动恢复。 | | **Deploy honeypot** | 带有 LLM 驱动 shell 的 SSH/HTTP 诱饵 — 捕获凭证和行为 | | **Rate limit nginx** | 在 nginx 层面拦截滥用 HTTP 流量,受 TTL 限制 | | **Monitor IP** | 有时限的 tcpdump 捕获,用于取证分析 | 所有技能均受时限、可审计且可撤销。除非你延长,否则任何操作都不会超过其 TTL。 ## 检测内容 | 检测器 | 威胁 | MITRE | |----------|--------|-------| | `ssh_bruteforce` | 来自单一 IP 的重复 SSH 失败 | T1110.001 | | `credential_stuffing` | 来自单一 IP 的多次用户名尝试 | T1110.004 | | `port_scan` | 快速唯一端口探测 | T1595 | | `sudo_abuse` | 用户突发执行大量特权命令 | T1548 | | `search_abuse` | 对高开销端点的频繁请求 | — | | `execution_guard` | 通过 AST 分析检测可疑 shell 命令 | T1059 | | `web_scan` | HTTP 错误洪泛 — 路径遍历、LFI 探测 | T1190 | | `user_agent_scanner` | 已知扫描器特征(Nikto、sqlmap、Nuclei 等 20+ 种)及 rDNS 机器人验证 | T1595.002 | | `suricata_alert` | 来自同一源 IP 的重复 IDS 警报(Suricata 集成) | — | | `docker_anomaly` | 快速容器重启、OOM 终结 | T1610 | | `integrity_alert` | /etc/passwd、/etc/shadow、sudoers、SSH 密钥的变更 | T1098 | | `osquery_anomaly` | 新的 SUID 二进制文件、未授权 SSH 密钥、crontab 变更 | T1053 | | `distributed_ssh` | 协调的僵尸网络扫描 — 多个 IP,每个仅少量尝试 | T1110 | `execution_guard` 使用 tree-sitter-bash 结构化解析命令。它能捕获 `curl | sh` 管道、`/tmp` 执行、反向 shell 模式以及分阶段的 download-chmod-execute 序列。 ## 工作原理 ``` [Sensor] → [Detectors] → [AI triage] → [Skill execution] watch identify assess & block / suspend / activity patterns recommend honeypot / capture ``` **Sensor(传感器)** — 确定性信号收集。无 AI,无 HTTP。来源:auth.log、journald、Docker 事件、文件完整性、nginx、shell 审计、macOS unified log、syslog 防火墙。可选:Falco、Suricata、osquery、Wazuh、AWS CloudTrail。 **Agent(代理)** — 读取事件,应用算法门控(跳过低严重性、私有 IP、已封禁项),可选发送给 AI 进行置信度评分分诊,执行选定的技能。受策略门控:除非你明确启用,否则不会运行任何操作。 两个 Rust 守护进程。无外部依赖。总内存占用低于 50 MB。仪表板在闲置 15 分钟后休眠。 ## AI 是可选的 — 且受控 Inner Warden 无需任何 AI 提供商即可检测和记录威胁。随时添加 AI: - **置信度评分建议** — 不是简单的二进制是/否,而是 0.0–1.0 的评分决策 - **策略门控执行** — AI 提供建议,你的策略决定是否运行 - **完全透明** — 每个 AI 决策都记录在仅追加的 JSONL 中,包含推理过程 - **三种提供商** — OpenAI、Anthropic 或 Ollama(完全本地,无需 API 密钥) 除非你明确启用自动执行,否则 AI 仅作参考。你设置置信度阈值。 ## 操作员介入 并非所有事情都应自动化。 - **Telegram** — 每个高/严重级别的事件都会推送到你的手机。通过内联按钮批准或拒绝。 - **Slack** — 通过传入 webhook 发送事件通知 - **浏览器推送** — 原生 Web Push (VAPID),无中继服务 - **Webhook** — 向任何端点发送 HTTP POST,支持严重性过滤 - **仪表板** — 本地认证 UI:调查、实体搜索、操作员操作、实时 SSE、攻击者路径查看器 ## 安全模型 Inner Warden 以最安全的姿态启动。 | 默认值 | 含义 | |---------|---------| | `responder.enabled = false` | 不采取任何行动。仅观察。 | | `dry_run = true` | 仅记录它*将*执行的操作,而不实际执行。 | | `execution_guard` 处于观察模式 | 检测可疑命令,不拦截。 | | Shell 审计需选择加入 | 需要明确的隐私同意。 | | AI 可选 | 检测和日志记录无需任何提供商即可工作。 | | 仅追加审计追踪 | 所有决策记录在 `decisions-YYYY-MM-DD.jsonl` 中。 | 当你信任所看到的内容时再正式上线: ``` [responder] dry_run = false ``` ## 模块 按需启用。 | 模块 | 威胁 | 响应 | |--------|--------|----------| | `ssh-protection` | SSH 暴力破解 + 凭证填充 | 封禁 IP | | `network-defense` | 端口扫描 | 封禁 IP | | `sudo-protection` | Sudo 权限滥用 | 暂停用户 sudo | | `execution-guard` | 恶意 shell 命令 (AST) | 终止进程 / 观察 | | `search-protection` | HTTP 端点滥用 | nginx 速率限制 | | `file-integrity` | 未授权文件更改 | 告警 | | `container-security` | Docker 生命周期异常 | 封禁容器 / 观察 | | `threat-capture` | 主动威胁调查 | 蜜罐 + 流量捕获 | | `nginx-error-monitor` | HTTP 错误洪泛、路径遍历 | 封禁 IP | | `slack-notify` | 事件通知 | Slack webhook | | `cloudflare-integration` | L7 DDoS / 僵尸网络 IP | 在 Cloudflare 边缘封禁 | | `abuseipdb-enrichment` | IP 信誉上下文 | 丰富 AI 提示词 | | `geoip-enrichment` | 国家/ISP 地理定位 | 丰富 AI 提示词 | | `fail2ban-integration` | 同步活跃的 fail2ban 封禁 | 执行封禁 | | `crowdsec-integration` | CrowdSec 社区情报 | 执行封禁 (实验性) | | `falco-integration` | 内核/容器异常 | 事件透传 | | `suricata-integration` | 网络 IDS 警报 | 事件透传 | | `osquery-integration` | 主机状态查询 | 丰富事件 | | `wazuh-integration` | Wazuh HIDS 警报 | 事件透传 | ``` innerwarden enable block-ip innerwarden enable ssh-protection innerwarden enable shell-audit # prompts for privacy consent ``` 社区模块: ``` innerwarden module install # SHA-256 verified innerwarden module search # search the registry ``` ## 保护 AI 代理 如果你在服务器上运行 OpenClaw、n8n、Langchain 或任何自主 AI 代理,Inner Warden 可以监控它的行为并在出现问题时将其停止。 ``` innerwarden enable openclaw-protection ``` 这可以实时监控你的代理执行的每一个命令 — 使用结构化分析 (tree-sitter AST),而不仅仅是正则表达式。下载并执行管道、反向 shell、分阶段攻击和混淆命令都能在造成损害之前被捕获。 ### 让你的代理在行动前先询问 Inner Warden 暴露了一个供 AI 代理查询的 API: ``` # "我的服务器现在安全吗?" curl -s http://localhost:8787/api/agent/security-context # → {"threat_level": "low", "recommendation": "safe to proceed"} # "这个命令运行安全吗?" curl -s -X POST http://localhost:8787/api/agent/check-command \ -H "Content-Type: application/json" \ -d '{"command": "curl https://example.com/setup.sh | bash"}' # → {"risk_score": 40, "recommendation": "review", "signals": ["download_and_execute"]} # "连接到这个 IP 安全吗?" curl -s "http://localhost:8787/api/agent/check-ip?ip=203.0.113.10" # → {"known_threat": true, "blocked": true, "recommendation": "avoid"} ``` 你的代理在执行前调用 `check-command`。如果建议是 `deny`,它就会停止。无需更改代理运行时 — 只需一个 HTTP 调用。 有关完整的集成指南,请参阅 [AI Agent Protection 文档](modules/openclaw-protection/docs/README.md)。 ## 扫描顾问 让你的服务器告诉你它需要什么。 ``` $ innerwarden scan sshd running → ssh-protection ESSENTIAL [NATIVE] docker running → container-security RECOMMENDED [NATIVE] nginx running → search-protection RECOMMENDED [NATIVE] falco not found → falco-integration OPTIONAL [EXTERNAL] requires: falco install fail2ban running → fail2ban-integration RECOMMENDED [NATIVE] Conflicts detected: fail2ban-integration + abuseipdb-enrichment — both auto-block IPs; enable one Activation sequence: 1. innerwarden enable block-ip 2. innerwarden enable ssh-protection 3. innerwarden enable fail2ban-integration ``` **NATIVE** = 读取现有日志,零外部依赖。**EXTERNAL** = 需要安装单独的工具。 ## 安装 ``` curl -fsSL https://innerwarden.com/install | sudo bash ``` 无需 API 密钥。它的作用: - 创建专用的 `innerwarden` 服务用户 - 下载经过 SHA-256 验证的架构二进制文件 (x86_64 / aarch64) - 将配置写入 `/etc/innerwarden/`,创建数据目录 - 通过 systemd (Linux) 或 launchd (macOS) 启动 sensor + agent - 安全姿态:检测激活,不启用响应技能,`dry_run = true` 带有外部集成: ``` curl -fsSL https://innerwarden.com/install | sudo bash -s -- --with-integrations ``` 从源码构建: ``` INNERWARDEN_BUILD_FROM_SOURCE=1 curl -fsSL https://innerwarden.com/install | sudo bash ``` ### 配置 AI AI 分诊是可选的。当你需要置信度评分的决策时添加它。 **OpenAI:** ``` # /etc/innerwarden/agent.env OPENAI_API_KEY=sk-... ``` **Anthropic:** ``` # /etc/innerwarden/agent.env ANTHROPIC_API_KEY=sk-ant-... ``` ``` # /etc/innerwarden/agent.toml [ai] provider = "anthropic" model = "claude-haiku-4-5-20251001" ``` **Ollama (本地,无需密钥):** ``` curl -fsSL https://ollama.ai/install.sh | sh && ollama pull llama3.2 ``` ``` # /etc/innerwarden/agent.toml [ai] enabled = true provider = "ollama" model = "llama3.2" ``` 更改配置后: ``` sudo systemctl restart innerwarden-agent # Linux sudo launchctl kickstart -k system/com.innerwarden.agent # macOS ``` 运行 `innerwarden doctor` 来验证你的提供商。 ### 安装后 ``` innerwarden status # verify services are running innerwarden doctor # diagnose issues with fix hints innerwarden test # inject a synthetic incident and verify the full pipeline responds innerwarden list # see capabilities and modules ``` 准备就绪后启用响应技能: ``` innerwarden enable block-ip # IP blocking (ufw default, or iptables/nftables) innerwarden enable sudo-protection # detect + respond to sudo abuse innerwarden enable shell-audit # shell command trail via auditd ``` ### 配置通知 ``` innerwarden notify telegram # interactive wizard innerwarden notify slack --webhook-url https://hooks.slack.com/... innerwarden notify web-push --subject mailto:you@example.com innerwarden notify webhook --url https://hooks.example.com/notify innerwarden notify test # verify all channels ``` ### 正式上线 启用技能后,响应器处于活动状态,但仍处于 `dry_run = true` 状态。当你信任这些决策时: ``` innerwarden configure responder --enable --dry-run false ``` ### 更新 ``` innerwarden upgrade # fetch + install latest (SHA-256 verified) innerwarden upgrade --check # check without installing ``` ### 控制平面 ``` innerwarden list # capabilities + modules innerwarden status # services + active capabilities innerwarden doctor # diagnostics with fix hints innerwarden enable block-ip # activate innerwarden enable block-ip --param backend=iptables innerwarden disable block-ip # deactivate and clean up innerwarden --dry-run enable block-ip # preview innerwarden scan # detect + recommend innerwarden allowlist add --ip 10.0.0.0/8 # skip AI for trusted ranges innerwarden allowlist add --user deploy # skip AI for trusted users innerwarden configure ai # interactive AI provider setup (12 providers) innerwarden configure responder --enable --dry-run false innerwarden backup # archive configs to tar.gz innerwarden metrics # events, decisions, AI latency, uptime innerwarden test # verify full pipeline end-to-end ``` ## 支持的环境 - **Linux** — Ubuntu 22.04+,任何基于 systemd 的发行版 - **macOS** — Ventura 及更高版本 (launchd, pf firewall, unified log) 预构建二进制文件:两个平台均支持 `x86_64` 和 `aarch64`。 ## 构建和测试 ``` make test # 640 tests make build # debug build (sensor + agent + ctl) make replay-qa # end-to-end integration test ``` 本地运行: ``` make run-sensor # writes to ./data/ make run-agent # reads from ./data/ ``` ## 常见问题 **这是 EDR 吗?** 不。它是一个自包含的防御代理,具有受限的响应技能和完整的审计追踪。无云端,无回传,完全在你的主机上运行。 **它默认会封禁吗?** 不。以仅观察模式启动。当你准备好时,启用响应技能并禁用 dry-run。 **我需要 AI 提供商吗?** 不需要。检测、日志记录、仪表板和报告均可在没有 AI 的情况下。AI 为自主响应增加置信度评分分诊 — 它是可选的。 **这与 Fail2ban 有何不同?** Fail2ban 根据正则表达式模式封禁 IP。Inner Warden 拥有 13 个检测器,8 个响应技能(包括 sudo 暂停、进程终止、容器暂停、蜜罐和流量捕获),12 个 AI 提供商,Telegram 机器人,AbuseIPDB 情报共享,以及完整的调查仪表板。 **我可以添加自定义检测器或技能吗?** 可以。请参阅 [模块编写指南](docs/module-authoring.md)。 ## 链接 - [网站](https://www.innerwarden.com) - [路线图](ROADMAP.md) - [更新日志](CHANGELOG.md) - [贡献](CONTRIBUTING.md) - [安全策略](SECURITY.md) - [文档](docs/index.md) - [模块编写](docs/module-authoring.md) - [集成设置指南](docs/integrated-setup.md) (Ubuntu 22.04 上的 Falco + Suricata + osquery + Telegram) ## 许可证 MIT。详见 [LICENSE](LICENSE)。
标签:AbuseIPDB, AI风险缓解, AI驱动, CISA项目, CrowdSec, CSV导出, DNS 反向解析, Docker安全, EDR, IP封禁, macOS安全, Nginx日志分析, PE 加载器, Rust, Shell监控, SOAR, Sudo审计, 免杀技术, 入侵检测系统, 可视化界面, 安全数据湖, 底层分析, 开源, 异常检测, 插件系统, 暴力破解检测, 端口扫描检测, 网络安全, 网络流量审计, 脆弱性评估, 自主防御Agent, 自动化响应, 蜜罐, 证书利用, 请求拦截, 轻量级安全, 通知系统, 隐私保护