McSloats/RuleRadar

GitHub: McSloats/RuleRadar

自动监控和索引多个主流安全检测规则仓库的变更,提供可搜索、可过滤的 Web 浏览界面与 Discord 通知。

Stars: 0 | Forks: 0

RuleRadar

监控检测规则仓库的新增、修改、删除和重命名规则。开箱即支持 [SigmaHQ/sigma](https://github.com/SigmaHQ/sigma)、[splunk/security_content](https://github.com/splunk/security_content)、[elastic/detection-rules](https://github.com/elastic/detection-rules)、[panther-labs/panther-analysis](https://github.com/panther-labs/panther-analysis)、[sublime-security/sublime-rules](https://github.com/sublime-security/sublime-rules) 和 [anvilogic-forge/armory](https://github.com/anvilogic-forge/armory) —— 同时支持添加自定义仓库。所有数据均存储在本地 SQLite 数据库中,并可通过内置的 Web 界面进行浏览。无需配置文件 —— 所有配置都通过 Web UI 完成。

RuleRadar — Dashboard

## 功能简介 每两小时 RuleRadar 会执行以下操作: 1. 通过 `git fetch` 拉取所有已配置仓库的变更,并与上次已知的 commit 进行 diff 对比 2. 解析新增和修改的规则文件(大多数仓库为 `.yml`/`.yaml`;Elastic 为 `.toml`) 3. 根据各自的源格式提取标题、描述、MITRE ATT&CK 映射和检测逻辑 4. 将所有检测和变更事件持久化存储到 SQLite 5. 向每个配置了个人 Discord webhook 的用户发送摘要 Web 界面提供以下功能: - **Detections** —— 按标题、描述、来源、MITRE TTP 和时间窗口进行过滤;跨检测逻辑、作者和引用进行关键词搜索;保存过滤预设 - **Updates** —— 按时间顺序排列的新增、修改、删除和重命名规则的信息流,可按来源、变更类型和时间窗口进行过滤 - **Settings** —— 用户专属的 Discord webhook、保存的过滤预设、密码修改 - **Admin** —— 添加/删除用户、重置密码、授予/撤销管理员权限、管理受监控的仓库 ## 部署说明 请从以下三种方法中选择一种。所有方法均会将 Web 界面暴露在 **http://localhost:5000**。 首次访问时,系统会提示您创建管理员账号。登录后,前往 **Admin → Monitored Repositories** 以启用您想要监控的仓库。初始克隆每个仓库大约需要 2-5 分钟。 ### 方法 1 — 本地安装 **前置条件:** Python 3.10+,`git` #### 安装 ``` git clone https://github.com/McSloats/RuleRadar.git cd RuleRadar python3 -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt python3 start.py ``` `start.py` 会在同一个进程中启动 Flask Web 服务器(端口 5000)和每两小时执行一次的调度器。传入 `--run-now` 参数可在启动时立即触发一次扫描。 如有需要,可以单独运行各个组件: | 命令 | 作用 | |---------|-------------| | `python3 webapp/app.py` | 仅启动 Web 界面(端口 5000) | | `python3 core/scheduler.py` | 仅启动每两小时执行一次的调度器 | | `python3 core/ruleradar.py` | 立即执行一次扫描周期 | #### 更新 ``` source .venv/bin/activate # Windows: .venv\Scripts\activate git pull pip install -r requirements.txt python3 start.py ``` #### 卸载 / 清理 ``` # 停止运行中的进程(使用 Ctrl+C 或 kill 掉 PID),然后: deactivate cd .. rm -rf RuleRadar # Windows: Remove-Item -Recurse -Force RuleRadar ``` 这将删除代码、虚拟环境、SQLite 数据库 (`ruleradar.db`) 以及存储在 `data/` 下的所有克隆仓库。 ### 方法 2 — Docker Compose **前置条件:** 带有 Compose 插件 (v2) 的 Docker。预构建的镜像会自动从 Docker Hub ([`tsloats/ruleradar`](https://hub.docker.com/r/tsloats/ruleradar)) 拉取 —— 无需在本地构建。 #### 安装 ``` # 下载 Compose 文件 curl -O https://raw.githubusercontent.com/McSloats/RuleRadar/main/docker-compose.yml # 在后台启动两个服务(web + scheduler) docker compose up -d ``` 所有数据 —— SQLite 数据库、克隆的仓库和密钥 —— 都存储在名为 `ruleradar-db` 的命名卷中,并在重启后依然存在。 运行时的常用命令: ``` docker compose logs -f # stream live logs from both services docker compose ps # check container status and health ``` #### 更新 ``` docker compose pull # fetch the latest image from Docker Hub docker compose up -d # recreate containers with the updated image ``` 您的数据卷将被保留;在更新过程中不会丢失任何数据。 #### 停止 / 清理 ``` # 停止容器(数据会被保留) docker compose down # 停止容器并删除所有数据 docker compose down -v ``` `down -v` 会删除 `ruleradar-db` 卷 —— 这将永久删除数据库、所有克隆的仓库和密钥。 ### 方法 3 — Docker Pull(手动,不使用 Compose) **前置条件:** Docker Engine。如果您希望直接管理容器而不使用 Compose 文件,请使用此方法。 #### 安装 ``` # 拉取 image docker pull tsloats/ruleradar:latest # 为持久化数据创建一个 named volume docker volume create ruleradar-db # 启动 web 容器 docker run -d \ --name ruleradar-web \ -p 5000:5000 \ -v ruleradar-db:/app/data \ -e RULERADAR_DB=/app/data/ruleradar.db \ -e PYTHONUNBUFFERED=1 \ --restart unless-stopped \ tsloats/ruleradar:latest # 启动 scheduler 容器(等待 web 启动完成) docker run -d \ --name ruleradar-scheduler \ -v ruleradar-db:/app/data \ -e RULERADAR_DB=/app/data/ruleradar.db \ -e PYTHONUNBUFFERED=1 \ --restart unless-stopped \ tsloats/ruleradar:latest \ python3 core/scheduler.py ``` 运行时的常用命令: ``` docker logs -f ruleradar-web # stream web logs docker logs -f ruleradar-scheduler # stream scheduler logs docker ps # check running containers ``` #### 更新 ``` # 拉取新的 image docker pull tsloats/ruleradar:latest # 重新创建容器(data volume 会被保留) docker stop ruleradar-web ruleradar-scheduler docker rm ruleradar-web ruleradar-scheduler docker run -d \ --name ruleradar-web \ -p 5000:5000 \ -v ruleradar-db:/app/data \ -e RULERADAR_DB=/app/data/ruleradar.db \ -e PYTHONUNBUFFERED=1 \ --restart unless-stopped \ tsloats/ruleradar:latest docker run -d \ --name ruleradar-scheduler \ -v ruleradar-db:/app/data \ -e RULERADAR_DB=/app/data/ruleradar.db \ -e PYTHONUNBUFFERED=1 \ --restart unless-stopped \ tsloats/ruleradar:latest \ python3 core/scheduler.py ``` #### 停止 / 清理 ``` # 停止并移除容器(data volume 会被保留) docker stop ruleradar-web ruleradar-scheduler docker rm ruleradar-web ruleradar-scheduler # 同时移除 data volume(永久删除所有数据) docker volume rm ruleradar-db # 可选地移除 image docker rmi tsloats/ruleradar:latest ``` ## 配置说明(全部通过 Web UI 完成 —— 无需文件) | 设置项 | 位置 | 描述 | |---------|-------|-------------| | 受监控的仓库 | Admin → Monitored Repositories | 启用六个内置仓库(Sigma、Splunk、Elastic、Panther、Sublime、Anvilogic)中的任意一个,或添加您自己的自定义仓库。仓库通过 git 在本地克隆 —— 无需 API token。 | | Discord webhook | Settings → Discord Notifications | 用于接收扫描摘要的用户专属 webhook。在 Discord 中创建:Server Settings → Integrations → Webhooks。 | | 保存的过滤器 | Settings → Saved Filters | 命名预设(来源、变更类型、标题、MITRE TTP、时间窗口),在 Detections 和 Updates 页面上显示为快捷访问按钮。 | | 用户 | Admin → Users | 添加用户、重置密码、授予/撤销管理员权限、删除用户。 | ## 架构 | 组件 | 描述 | |-----------|-------------| | `web` | Flask Web 界面 —— 登录、浏览、搜索、管理设置 | | `scheduler` | 通过 APScheduler 每两小时触发一次扫描(00:00, 02:00 … 22:00 UTC) | 两个组件共享同一个 SQLite 数据库(WAL 模式)。在 Docker 中,它们共享 `ruleradar-db` 卷。首次设置时,由管理员启用仓库;RuleRadar 对每个仓库执行浅克隆 (`git clone --depth=1`),并对所有匹配的规则文件进行索引。随后的扫描使用 `git fetch`,仅处理自上次索引的 commit 以来发生变更的文件。
标签:AMSI绕过, 威胁检测, 安全运营, 扫描框架, 网络安全研究, 规则监控, 请求拦截, 逆向工具