Diyara03/stratos-bep

GitHub: Diyara03/stratos-bep

一个基于Django的多层次商业电子邮件保护系统,提供邮件摄取、威胁情报、评分判定与角色化仪表盘,解决邮件安全检测与可视化的教学与实战问题。

Stars: 0 | Forks: 0

# Stratos -- 商业电子邮件保护系统 Stratos 是一个多层次商业电子邮件保护(BEP)平台,通过三阶段检测管道分析每封传入邮件,并给出 **Clean**(正常)、**Suspicious**(可疑)或 **Malicious**(恶意)的判定。该系统作为威斯敏斯特国际大学塔什干分校(WIUT)本科毕业设计项目,基于 Group-IB 生产级 BEP 架构并针对学生规模进行适配。 ## 功能特性 | 功能 | 详情 | |---|---| | **邮件摄取** | 带有浏览器 OAuth 设置的 Gmail API 连接器 | | **预处理** | SPF / DKIM / DMARC 评分,白名单/黑名单 | | **关键词检测** | 24 个钓鱼关键词,每个 +2 分,最高 +20 | | **URL 分析** | URLhaus + VirusTotal 查询,基于 IP 的 URL 检测,短链接检测 | | **附件扫描** | 与 MalwareBazaar 的 SHA-256 比对,13 种危险扩展名,双扩展名,MIME 不匹配 | | **YARA 扫描** | 6 条自定义规则:VBA 宏、PE 可执行文件、JS 混淆、双扩展名、OLE、勒索软件 | | **接收链分析** | 跳数异常、公网链中的私有 IP、时间戳错乱 | | **威胁情报** | 通过 Celery Beat 每日同步 MalwareBazaar 与 URLhaus | | **判定引擎** | 评分 0-100,可配置阈值(默认:清洁 <25,可疑 25-69,恶意 >=70) | | **仪表盘** | 10 个页面,浅色主题,基于角色的访问控制(管理员 / 分析师 / 只读) | | **系统设置** | 仅管理员可访问的 UI,用于配置 Gmail OAuth、API 密钥(加密)、检测阈值 | | **REST API** | 5 个端点,DRF,支持会话 + Token 认证 | | **导出** | CSV 邮件摘要、IOC 导出、JSON 威胁情报统计 | | **测试** | 473 个测试,核心管道覆盖率 95%+ | | **生产就绪** | Docker Compose + Caddy 反向代理 + gunicorn | ## 架构 ``` Email --> PARSE --> PREPROCESS --> CHECK --> DECIDE --> ACT | Target: <30 seconds CLEAN / SUSPICIOUS / MALICIOUS ``` ### 三阶段管道 | 阶段 | 组件 | 最高分 | 关键检查 | |---|---|---|---| | 1 | **预处理器** | ~65 | SPF/DKIM/DMARC 认证,黑名单(+40/+30),Reply-To 不匹配(+10),显示伪造(+10) | | 2 | **检测器** | +125 | 关键词(最高 +20)、URL(最高 +40)、附件(最高 +50)、链路(最高 +15) | | 3 | **决策器** | - | 聚合分数,应用阈值,已知恶意软件覆盖判定 | ### 判定阈值(可在设置界面配置) | 分数 | 判定 | 动作 | |---|---|---| | 0-24 | 清洁 | 投递至收件箱 | | 25-69 | 可疑 | 隔离并供分析师审查 | | 70-100 | 恶意 | 自动拦截 | ## 技术栈 | 层级 | 技术 | |---|---| | 后端 | Python 3.10+,Django 4.2,Django REST Framework | | 数据库 | PostgreSQL 15 | | 任务队列 | Redis 7 + Celery 5.3 | | 邮件来源 | Gmail API(OAuth2 网页流程) | | 威胁情报 | MalwareBazaar、URLhaus、VirusTotal、AbuseIPDB | | 检测 | yara-python,python-magic | | 前端 | Django 模板,Vanilla JS,Inter 字体 | | 部署 | Docker Compose(6 个容器:django、postgres、redis、celery、celery-beat、caddy) | | 安全 | Fernet 加密的 API 密钥、RBAC、whitenoise、gunicorn | ## 快速开始 ### 选项 A:Docker(推荐) ``` git clone https://github.com/Diyara03/stratos-bep.git cd stratos-bep cp .env.example .env # 编辑 .env:设置 SECRET_KEY、POSTGRES_PASSWORD、ALLOWED_HOSTS # 开发 docker compose up -d # 生产(使用 Caddy 反向代理 + gunicorn) docker compose -f docker-compose.prod.yml up -d ``` ### 选项 B:本地开发 ``` python -m venv venv source venv/bin/activate # or venv\Scripts\activate on Windows pip install -r requirements.txt python manage.py migrate python manage.py demo_setup python manage.py runserver ``` ### 演示凭据 | 用户名 | 密码 | 角色 | |---|---|---| | admin | admin123 | 管理员(完全访问) | | analyst | analyst123 | 分析师(审核与导出) | | viewer | viewer123 | 只读用户(仅查看) | 运行 `python manage.py demo_setup` 可创建这些用户及 10 封示例邮件。 ## 部署(赫兹云) 完整分步指南:[docs/DEPLOYMENT.md](docs/DEPLOYMENT.md) ``` # 在服务器上(Ubuntu 22.04) apt update && apt upgrade -y curl -fsSL https://get.docker.com | sh apt install -y docker-compose-plugin cd /opt git clone https://github.com/Diyara03/stratos-bep.git stratos cd stratos cp .env.example .env nano .env # Set SECRET_KEY, POSTGRES_PASSWORD, ALLOWED_HOSTS docker compose -f docker-compose.prod.yml up -d docker compose -f docker-compose.prod.yml exec django python manage.py createsuperuser ``` 访问地址 `http://YOUR_SERVER_IP`。通过 **设置**(管理员 > 设置)配置 Gmail 与 API 密钥。 ## 系统设置(仅管理员) 部署完成后,可通过浏览器配置集成,无需 SSH: | 设置项 | 操作 | |---|---| | **Gmail** | 上传 OAuth 凭证 JSON,点击“连接 Gmail 账户”,通过 Google 授权 | | **VirusTotal** | 粘贴 API 密钥,点击测试,保存 | | **AbuseIPDB** | 粘贴 API 密钥,点击测试,保存 | | **阈值** | 调整清洁/恶意滑块,保存 | | **获取频率** | 设置轮询频率(默认:10 秒) | | **威胁情报同步** | 开启每日 MalwareBazaar 与 URLhaus 导入 | API 密钥在存储时加密(Fernet AES-128-CBC)。 ## 项目结构 ``` stratos-bep/ accounts/ # User model with RBAC (Admin/Analyst/Viewer) emails/ # Core app: models, services, views, settings services/ preprocessor.py # SPF/DKIM/DMARC + whitelist/blacklist checker.py # Keywords, URLs, attachments, chain decider.py # Score aggregation + verdict analyzer.py # Pipeline orchestrator parser.py # Gmail message parser gmail_connector.py settings_views.py # System configuration UI management/commands/ demo_setup.py # Create demo scenario demo_teardown.py # Clean demo data threat_intel/ # TI models + sync tasks reports/ # Export + report models stratos_server/ # Django project settings templates/ # 11 HTML templates (light theme) static/ # CSS + JS + favicon tests/ # 473 tests across 19 files docs/ # Architecture, deployment, admin guide, playbook docker-compose.yml docker-compose.prod.yml Caddyfile ``` ## 关键数据 | 指标 | 数值 | |---|---| | Django 模型 | 16 个,分布在 4 个应用 | | 测试数量 | 473(全部通过) | | 核心覆盖率 | 95%+ | | 界面页数 | 10 | | API 端点 | 5 | | 设置端点 | 10 | | 钓鱼关键词 | 24 | | YARA 规则 | 6 | | 危险扩展名 | 13 | | Docker 服务 | 6(生产环境) | ## 截图 仪表盘、邮件详情、隔离区、威胁情报与设置页面的截图已部署在应用程序中。 ## 管理命令 ``` python manage.py demo_setup # Full demo scenario (10 emails, TI data, users) python manage.py demo_setup --flush # Clear and recreate python manage.py demo_teardown # Remove demo data, keep users python manage.py sync_ti_feeds # Manual TI feed sync python manage.py fetch_emails # Manual Gmail fetch ``` ## API 端点 | 方法 | 端点 | 描述 | |---|---|---| | GET | `/api/emails/` | 分页邮件列表(支持过滤) | | GET | `/api/emails//` | 包含完整分析的邮件详情 | | GET | `/api/quarantine/` | 隔离条目列表 | | POST | `/api/quarantine//action/` | 释放 / 拦截 / 删除 | | GET | `/api/dashboard/stats/` | 仪表盘统计 JSON | 所有端点均需认证(会话或 Token)。 ## 学术背景 - **大学**:威斯敏斯特国际大学塔什干分校(WIUT) - **学位**:文学学士(荣誉)商业信息系统 - **模块**:6BUIS007C-n(商业信息系统项目) - **灵感来源**:Group-IB 商业电子邮件保护 ## 许可证 本项目作为学术提交开发,版权归属于威斯敏斯特大学,符合 BISP 手册第 4 章附录 3 的规定。
标签:Ask搜索, BEP, Caddy, Celery Beat, Django, DKIM, DMARC, DNS信息、DNS暴力破解, Docker, Gmail API, Gunicorn, IOC导出, IP信誉, JSON威胁情报, MalwareBazaar, MIME类型检测, NIDS, OAuth, Python Web框架, RBAC, REST API, SHA-256, SPF, URLhaus, URL分析, VirusTotal, Web安全, YARA规则, 仪表盘, 前端轻主题, 单元测试, 双扩展名, 反向代理, 反钓鱼, 商业邮件保护, 威胁情报, 学生项目, 安全防御评估, 定时任务, 容器化, 开发者工具, 搜索引擎查询, 测试用例, 测试覆盖, 版权保护, 生产就绪, 电子邮件安全, 短链接检测, 网络测绘, 蓝队分析, 覆盖率, 角色权限控制, 跳数异常, 逆向工具, 邮件网关, 配置阈值, 附件扫描