alleyviper/anis
GitHub: alleyviper/anis
ANIS 是一个为 ARGUS 网络防御系统提供众包威胁情报、IP 信誉查询和许可证管理的轻量级社区情报服务器。
Stars: 0 | Forks: 0
# ANIS — ARGUS 网络智能服务器
[](https://hub.docker.com/r/ai4sec/anis)
[](LICENSE)
[](https://github.com/ai4sec/anis/actions)
**ANIS** 是一个独立的威胁情报中心,ARGUS 实例连接到它以获取:
- **社区威胁情报** — 众包的 IP 信誉数据,来源于所有已连接的 ARGUS 部署
- **精选威胁情报源** — 35+ 个免费威胁情报源(FireHOL、Abuse.ch、Spamhaus、Tor Project、Blocklist.de 等)
- **许可证管理** — 针对部署 ARGUS 实例的基于等级的功能控制
- **IP 信誉 API** — 用于 nginx/ModSecurity 集成的实时 IP 评分
ANIS 旨在作为轻量级的社区中心运行(空闲时 RAM 占用 <30 MB),任何 ARGUS 运维者都可以自行托管,或将其实例指向一个共享的社区服务器。
## 架构
```
graph TD
A1[ARGUS Instance 1] -->|report attack IPs| ANIS
A2[ARGUS Instance 2] -->|report attack IPs| ANIS
A3[ARGUS Instance N] -->|report attack IPs| ANIS
ANIS -->|decisions delta| A1
ANIS -->|decisions delta| A2
ANIS -->|decisions delta| A3
FEEDS[Threat Feeds\nFireHOL, Abuse.ch\nSpamhaus, Tor, etc.] -->|pull every 1-24h| ANIS
ANIS -->|blocklist| NGINX[nginx + ModSecurity]
ADMIN[Admin Dashboard\nbrowser] -->|manage| ANIS
```
## 快速开始
```
# 1. Clone
git clone https://github.com/ai4sec/anis.git && cd anis
# 2. Configure
cp .env.example .env
# 编辑 .env — 设置 ANIS_ADMIN_KEY 和 ANIS_ADMIN_PASSWORD
# 3. Run
docker compose -f docker/docker-compose.yml up -d
# 4. 打开 dashboard
open http://localhost:8090
```
默认凭据:`admin` / 你的 `.env` 文件中 `ANIS_ADMIN_PASSWORD` 的值。
## 环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
| `ANIS_PORT` | `8090` | HTTP 监听端口 |
| `ANIS_DB_PATH` | `/data/anis.db` | SQLite 数据库路径 |
| `ANIS_ADMIN_KEY` | — | **必填。** 管理 API 密钥(`X-ANIS-Admin-Key` 请求头) |
| `ANIS_ADMIN_USERNAME` | `admin` | 控制面板登录用户名 |
| `ANIS_ADMIN_PASSWORD` | — | **必填。** 控制面板登录密码 |
| `ANIS_MODE` | `hub` | 运行模式 (`hub`) |
| `ANIS_ENABLE_FEEDS` | `true` | 启用精选情报源下载 |
| `ANIS_COMMUNITY_ENABLED` | `true` | 接受社区报告 |
| `ANIS_MAX_INSTANCES` | `1000` | 最大可注册的 ARGUS 实例数 |
| `ANIS_LOG_LEVEL` | `info` | 日志详细程度 (`info` 或 `silent`) |
## ARGUS 如何连接到 ANIS
在你的 ARGUS 实例中,将 ANIS 配置为情报上游:
```
ANIS_URL=https://anis.yourdomain.com
ANIS_LICENSE_KEY=ANIS-COMM-XXXX-XXXX-XXXX # from ANIS Licenses page
ANIS_INSTANCE_HASH=
```
ARGUS 将会:
1. 在启动时向 ANIS 注册(`POST /api/v1/instances/register`)
2. 向 ANIS 报告被封禁的 IP(`POST /api/v1/intelligence/report`)
3. 每 5 分钟拉取一次决策增量(`GET /api/v1/intelligence/decisions/delta`)
4. 根据置信度阈值自动应用社区封禁
## API 参考
完整文档请参见 [API.md](API.md)。
**公共端点(供 ARGUS 实例使用):**
| 方法 | 路径 | 描述 |
|---|---|---|
| `POST` | `/api/v1/instances/register` | 注册一个 ARGUS 实例 |
| `POST` | `/api/v1/license/validate` | 验证许可证密钥 |
| `POST` | `/api/v1/intelligence/report` | 报告攻击者 IP |
| `GET` | `/api/v1/intelligence/decisions` | 获取所有有效的决策 |
| `GET` | `/api/v1/intelligence/decisions/delta?since=` | 获取自指定时间戳以来的决策 |
| `GET` | `/api/v1/intelligence/check/:ip` | 检查 IP 信誉 |
| `GET` | `/api/v1/intelligence/stats` | 获取全局统计信息 |
| `GET` | `/api/v1/feeds/status` | 获取情报源健康状态 |
| `GET` | `/health` | 健康检查 |
## 许可证等级
| 等级 | 价格 | 情报源 | 速率限制 | 实例数 |
|---|---|---|---|---|
| Community | 免费 | 25 个社区情报源 | 1,000 请求/分钟 | 1 |
| Pro | 联系我们 | 所有 35+ 个情报源(VPN、地理位置、数据中心) | 10,000 请求/分钟 | 5 |
| Enterprise | 联系我们 | 所有情报源 + 优先支持 | 不限 | 不限 |
从 ANIS 控制面板 → 许可证 (Licenses) → 创建许可证 (Create License) 生成一个社区密钥。
## 情报源分类
完整的 35+ 个精选情报源列表请参见 [FEEDS.md](FEEDS.md)。
**分类:** 攻击者 · 僵尸网络 · 恶意软件 · Tor 出口节点 · VPN · 代理 · 扫描器 · 垃圾信息 · 地理位置风险 · Web 攻击 · 匿名基础设施
## 隐私
请参见 [PRIVACY.md](PRIVACY.md)。摘要:
- 仅存储和共享攻击者的 IP 地址
- 不包含受害者域名、用户数据或私有 IP
- 实例身份为单向哈希处理(不可逆)
- 可通过管理 API 根据请求删除所有数据
- 符合 GDPR 规定 — 不处理任何个人数据
## 许可证
MIT — 请参见 [LICENSE](LICENSE)
标签:Awesome, Docker, IP信誉, 威胁情报, 安全防御评估, 开发者工具, 版权保护, 系统管理, 网络安全, 自动化攻击, 请求拦截, 隐私保护