liberatti/ipxa
GitHub: liberatti/ipxa
IPXA 是一个高性能、隐私优先的自托管威胁情报聚合平台,提供 IP 信誉查询、GeoIP 定位与实时黑洞列表集成,支持在 Web 服务器边缘节点拦截恶意流量。
Stars: 0 | Forks: 0
# 🛡️ IPXA
**IPXA** 是一个高性能、在设计上注重隐私的威胁情报聚合平台。它提供即时的 IP 信誉查询、GeoIP 数据以及与 15+ 实时黑洞列表 (RBLs) 的集成,所有这些都完全运行在您自己的基础设施上。
[](https://hub.docker.com/r/liberatti/ipxa)
[](LICENSE)
[](https://github.com/sponsors/liberatti)

*通过我们优质的 Web 仪表板,即时可视化任何 IP 地址的来源和风险评分。*

*用于隔离安全配置的多工作空间环境。*
## ⚡ 性能与隐私
- 🚀 **超低延迟**:响应时间低于 5ms。
- 🔒 **100% 隐私**:完全在您的基础设施上运行。
- 💰 **零成本**:无单次请求费用或订阅限制。
- 🔌 **物理隔离就绪**:针对受限和高安全环境进行了优化。
## 🌐 用户门户
**用户门户**(默认在端口 `5000` 访问)是主要的搜索界面,用户可以在本地查询 IP 地址,以验证地理位置、ASN 和信誉详细信息。

*即时查询并可视化任何 IP 地址的地理来源和威胁评分。*
## 🎨 管理界面
**管理界面**(通过 `/admin` 路径在端口 `5001` 访问)具有一个安全的仪表板,用于管理工作空间、RBL 威胁列表和监控参数。它包含安全的会话管理登录系统和一键登出功能。
您可以使用以下环境变量配置访问凭据:
- **ADMIN_EMAIL**:管理员邮箱(默认值:`admin@local`)
- **ADMIN_PASSWORD**:管理员密码(默认值:`admin`)

*通过优质的暗黑模式管理仪表板,动态管理您的工作空间、feed 和配置。*
## 🚀 核心功能
* 🌍 **智能 GeoIP**:与 MaxMind 和 ip2asn 本地集成,实现闪电般的快速查询。
* 🚫 **RBL 编排**:动态管理 15+ 威胁 feed 源(信誉与绕过)。
* ⚡ **多种 API 类型**:专用的 endpoint 用于详尽的数据、安全检查或基于高速 header 的响应。
* 🏢 **多工作空间**:在不同环境或客户端之间隔离配置和 API 密钥。
* 🎨 **管理仪表板**:高对比度、暗黑模式界面,用于实时监控和数据管理。
## 🛠️ 快速部署
IPXA 作为轻量级 Docker 镜像分发。
### Docker Compose
```
volumes:
data:
services:
ipxa:
image: liberatti/ipxa:latest
environment:
- API_KEY=dev
# - SECURITY_ENABLED=false
# - IPINFO_TOKEN=
# - IBLOCKLIST_USERNAME=
# - IBLOCKLIST_PASSWORD=
# - MAXMIND_ACCOUNT_ID=
# - MAXMIND_LICENSE_KEY=
volumes:
- data:/data
ports:
- "5001:5000"
deploy:
resources:
limits:
memory: 256M
portal:
image: liberatti/ipxa-portal:latest
environment:
- IPXA_API_KEY=dev
- IPXA_API_URL=http://ipxa:5000
ports:
- "5000:5000"
deploy:
resources:
limits:
memory: 64M
```
## 🔗 服务器集成
IPXA 为流行的 Web 服务器提供了原生、高性能的中间件 hook,允许您在边缘节点拦截恶意流量。这些 hook 支持**标准化的 JSON 错误响应**,并带有唯一的 `request_id` 追踪,以增强可观测性。
### Apache (`mod_lua`)
使用 `mod_lua` 将 IPXA 直接集成到您的 Apache 配置中,以动态评估 IP。
**快速设置:**
1. 安装 `mod_lua` 和 `lua-socket`(例如:`yum install httpd mod_lua lua-socket`)。
2. 将 `hooks/httpd/lua/*.lua` 复制到您的 Apache lua 目录(例如:`/etc/httpd/lua/`)。
3. 使用您的 IPXA API URL 和设置更新 `/etc/httpd/lua/config.lua`。
4. 挂载到您的 `VirtualHost` 中:
ServerName example.com
DocumentRoot /var/www/html
# IPXA Access Control
LuaHookAccessChecker /etc/httpd/lua/ipxa.lua ip_info_check
# IPXA JSON Error Handler
Alias /errors /etc/httpd/lua/errors.lua
SetHandler lua-script
ErrorDocument 403 /errors
*(详情请参阅 `hooks/httpd/README.md`)。*
### OpenResty / Nginx
通过 OpenResty 利用 Nginx 中 Lua 的强大功能,实现超低延迟的 IP 检查,并带有本地缓存。
**快速设置:**
1. 安装 `lua-resty-http` 软件包(通过 `luarocks`)。
2. 将 `hooks/openresty/lua/` 的内容复制到您的 OpenResty `lualib` 路径(例如:`/usr/local/openresty/lualib/ipxa/`)。
3. 使用您的 IPXA API URL 和黑名单设置更新 `config.lua`。
4. 配置您的 `nginx.conf`:
http {
# ...
lua_package_path "/usr/local/openresty/lualib/ipxa/?.lua;;";
lua_shared_dict ip_cache 10m; # Required for caching
server {
# ...
error_page 403 /lua-error;
location / {
access_by_lua_file /usr/local/openresty/lualib/ipxa/ip_info_check.lua;
}
location = /lua-error {
internal;
content_by_lua_file /usr/local/openresty/lualib/ipxa/errors.lua;
}
}
}
*(请查看 `hooks/openresty/nginx.conf` 和 `hooks/openresty/Dockerfile` 获取可用的示例)。*
### 🛡️ 响应格式
当请求被拦截时,hook 将返回机器可读的 JSON 响应,而不是默认的 HTML 错误页面。这确保了浏览器和 API 客户端之间一致的错误处理。
**被拦截响应示例:**
```
{
"error": "Forbidden",
"status": 403,
"request_id": "b10ed3a6f76ad62a75a956ce3e922336",
"message": "ipxa [block/risk-score]: 172.20.0.1 risk_score=14"
}
```
## 📡 API 参考
### 1. 完整 IP 信息
`GET /api/ip/info/{address}`
返回全面的 GeoIP、ASN 和信誉数据。
**响应示例:**
```
{
"ip": {
"address": "14.152.94.1",
"broadcast": "14.152.95.255",
"network": "14.152.80.0",
"prefix": 20,
"version": 4
},
"location": {
"continent": "Asia",
"country_code": "CN",
"country_name": "China"
},
"organization": {
"asn_description": "",
"asn_name": "CT-DONGGUAN-IDC CHINANET Guangdong province network",
"asn_number": 134763
},
"security": {
"reasons": [
"rbl:firehol_level1"
],
"risk_score": 0
}
}
```
### 2. 安全检查
`GET /api/ip/check/{address}`
专注于信誉和风险评估的简化响应。
**响应示例:**
```
{
"ip": "14.152.94.1",
"risk_score": 0,
"reasons": ["rbl:firehol_level1"]
}
```
### 3. 快速决策 (Headless)
`GET /api/ip/quick/{address}`
针对防火墙和中间件进行了优化。在正文和 `x-risk-score` header 中返回风险评分。
**响应示例:**
```
{
"risk_score": 9
}
```
## 🛠️ 测试与开发
IPXA 包含一个 `api.rest` 文件,用于快速的 API 测试。
1. **VS Code**:安装 [REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) 扩展。
2. **运行**:打开 `api.rest` 并点击任何 endpoint 上方的 `Send Request`。
3. **探索**:使用这些示例作为您自己集成的基准。
## 🔌 RBL Feed 管理
虽然高级用户仍然可以在 `config/` 中添加 JSON 文件,但 IPXA 现在具有一个完整的**管理面板**,可以通过 UI 动态管理 feed。
| 字段 | 描述 |
| :--- | :--- |
| `name` | 易于阅读的 feed 标识符 |
| `slug` | 唯一的内部标识符 |
| `type` | `reputation`(用于拦截)或 `bypass`(用于白名单) |
| `source` | 用于下载的公共 URL(CIDR 或 IP 列表) |
| `format` | `cdir_text`(纯文本)或 `cdir_gz`(压缩格式) |
| `risk_score` | 此 feed 在最终决策中的权重 (0-10) |
## 📦 集成的 Feed
包含预配置的行业标准 feed 库:
- **FireHOL Level 1-4**:高度精选的聚合。
- **Cisco Talos & DShield**:全球威胁情报。
- **Abuse.ch Feodo**:僵尸网络 C2 追踪。
- **Spamhaus DROP**:SBL 咨询拦截。
- **Emerging Threats**:已知的受感染主机。
- **Blocklist.de & GreenSnow**:SSH/邮件暴力破解。
## ⚖️ 责任限制
**免责声明**:本软件按“原样”提供,不提供任何形式的明示或暗示的保证。对于因使用本软件或与本软件相关的其他交易而引起的或与之相关的任何索赔、损害或其他责任(无论是在合同、侵权或其他行为中),作者和贡献者均不承担责任。
**使用风险自负**:您需对基于 IPXA 提供的数据做出的任何决定或采取的任何行动承担全部责任。该软件涉及与安全相关的功能;配置错误或滥用可能会导致服务中断或安全漏洞。
## 📄 许可证
本项目基于 Apache License 2.0 授权。有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:Docker, GitHub, IP信誉, rizin, 威胁情报, 安全研发, 安全防御评估, 实时处理, 开发者工具, 私有化部署, 网络情报, 自动化扫描, 请求拦截, 防御规避