jissjames322/RedEye
GitHub: jissjames322/RedEye
RedEye 是一个生产级内部安全运营中心平台,为安全团队提供实时威胁监控、IP 情报查询、风险评分和安全事件调查能力。
Stars: 1 | Forks: 0
# 🐍 RedEye — IP 情报平台
RedEye(前身为 SentinelSOC)是一个生产级的内部安全运营中心 (SOC) 平台,旨在帮助安全团队监控登录活动、调查 IP 地址、计算风险评分、可视化全球威胁态势,并实时检测恶意/异常活动。
## 🖼️ 应用截图
### 📊 仪表盘与指标
### 🔍 IP 地理定位与情报查询
### 🗺️ 全球威胁地图
### 📈 报告与分析
## 🌟 核心功能
* **统一情报引擎**:支持独立或批量查询编排:
* **GeoIP2 地理定位**:通过 MaxMind 二进制数据库准确提取位置信息(国家、地区、城市、坐标、时区)。
* **RDAP/WHOIS 查询**:通过 `ipwhois` 直接解析网络注册信息(ASN、CIDR、注册商、组织、滥用联系方式)。
* **反向 DNS 解析器**:通过标准网络 socket 自动进行 PTR 映射。
* **VPN/代理检测器**:实时识别托管提供商空间、云实例和商业代理。
* **TOR 节点检测器**:直接从 Tor Project 自动下载并缓存实时出口节点列表。
* **模块化威胁评分**:评估映射到严重性分类(`LOW`、`MEDIUM`、`HIGH`、`CRITICAL`)的综合风险等级 (0-100)。
* **模块化检测引擎**:自动针对以下情况生成告警:
* TOR 出口节点活动
* VPN/代理/匿名器登录
* 数据中心/托管提供商登录
* 暴力破解阈值(来自同一 IP 的多次登录失败)
* 撞库攻击(针对同一用户名的多次登录失败)
* 不可能旅行速度(在不同地理位置以物理上不可能的速度成功登录)
* 每个用户账户的新国家/地区登录
* **批量 IP 列表导入**:专为安全分析师设计,用于批量检查大型 IP 地址列表。上传一个逐行包含 IP 地址的纯文本文件,即可自动运行情报查询,并在全球地图上即时标绘威胁位置。
* **高级深色 UI 仪表盘**:
* **KPI 统计**:代表事件、告警、追踪的 IP 和国家/地区的动态计数器。
* **可视化分析**:由 `Chart.js` 驱动的时间轴图表、风险分布甜甜圈图和国家/地区频率柱状图。
* **双地图集成**:IP 查询渲染一个嵌入式的 **Google Maps** 框架,并结合交互式的 **Leaflet.js** 地图。
* **全球威胁地图**:坐标热力图、聚合标记和弹出窗口详情。
## 🛠️ 技术栈
* **后端**:Python 3.12、Flask、Flask Blueprints、Flask RESTX
* **数据库**:SQLite、Flask-SQLAlchemy (ORM)、Flask-Migrate (Alembic 迁移)
* **前端**:原生 HTML5/CSS3(采用 Glassmorphism 的高级自定义设计系统)、JavaScript (ES6 Modules)
* **库**:Chart.js (v4)、Leaflet.js (v1.9)、MaxMind GeoIP2、ipwhois、dnspython
## 🚀 设置与安装
### 1. 前置条件
确保您的系统已安装 **Python 3.12+**。
### 2. 克隆代码库
```
git clone https://github.com/jissjames322/RedEye.git
cd RedEye
```
### 3. 创建并激活虚拟环境
```
# Windows
python -m venv venv
.\venv\Scripts\activate
# Linux / macOS
python3 -m venv venv
source venv/bin/activate
```
### 4. 安装依赖
```
pip install -r requirements.txt
```
### 5. 环境配置
在根目录下创建一个 `.env` 文件:
```
SECRET_KEY=change_this_to_a_long_random_secret
DATABASE_URL=sqlite:///sentinel.db
GEOIP_DB=database/GeoLite2-City.mmdb
UPLOAD_FOLDER=uploads
LOG_FOLDER=logs
```
### 6. 执行数据库迁移
创建表和 schema:
```
flask db upgrade
```
### 7. 运行应用程序
启动开发服务器:
```
python run.py
```
打开浏览器并访问 `http://127.0.0.1:5000`。
## 📁 文件夹结构
```
app/
├── blueprints/ # Route controllers (main.py, api.py)
├── models/ # Database schemas (ip_address.py, security_event.py, etc.)
├── repositories/ # SQL database operations (ip_repository.py, etc.)
├── services/ # Business logic pipeline & alert engine
├── intelligence/ # Geolocation, DNS, RDAP, VPN, TOR detectors
├── parsers/ # Log format decoders (Apache, SSH, MIS, Generic)
├── templates/ # HTML structure views
└── static/ # Static assets (css/style.css, js/main.js)
database/ # MaxMind mmdb file location
logs/ # Output log files (sentinel.log)
uploads/ # Temporary uploads storage
tests/ # Ingestion test suites
config.py # Application settings
run.py # Startup file
```
## 📈 REST API 端点
* `GET /api/health` — 检查系统状态
* `GET /api/dashboard` — 返回汇总统计数据、时间轴图表和地图数据
* `GET /api/events` — 返回带有过滤条件的分页安全日志事件
* `GET /api/ip/
` — 获取目标 IP 的数据库档案
* `POST /api/ip/lookup` — 执行独立的 IP 情报扫描
* `GET /api/ip/history` — 列出所有缓存的 IP 日志
* `POST /api/import` — 上传并导入服务器日志
* `GET /api/alerts` — 获取安全告警及统计数量
* `PUT /api/alerts//resolve` — 将告警状态标记为已解决
* `GET /api/map/data` — 获取坐标标绘数据集标签:IP风险评分, 代码示例, 威胁情报, 安全事件调查, 安全运营, 开发者工具, 扫描框架, 数据分析, 网络威胁监控, 逆向工具