jissjames322/RedEye

GitHub: jissjames322/RedEye

RedEye 是一个生产级内部安全运营中心平台,为安全团队提供实时威胁监控、IP 情报查询、风险评分和安全事件调查能力。

Stars: 1 | Forks: 0

RedEye Logo

# 🐍 RedEye — IP 情报平台 RedEye(前身为 SentinelSOC)是一个生产级的内部安全运营中心 (SOC) 平台,旨在帮助安全团队监控登录活动、调查 IP 地址、计算风险评分、可视化全球威胁态势,并实时检测恶意/异常活动。 ## 🖼️ 应用截图 ### 📊 仪表盘与指标

Dashboard Screenshot

### 🔍 IP 地理定位与情报查询

IP Lookup Screenshot

### 🗺️ 全球威胁地图

Threat Map Screenshot

### 📈 报告与分析

Analytics Screenshot

## 🌟 核心功能 * **统一情报引擎**:支持独立或批量查询编排: * **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风险评分, 代码示例, 威胁情报, 安全事件调查, 安全运营, 开发者工具, 扫描框架, 数据分析, 网络威胁监控, 逆向工具