# SecuBox CVE 第7层防御系统 > **Languages:** [English](../DOCS/CVE-LAYER7.md) | [Francais](../DOCS-fr/CVE-LAYER7.md) | 中文 **版本:** 1.0.0 **最后更新:** 2026-02-28 ## 概述 CVE 第7层创新结合了三个防御支柱,实现全面的 Web 应用安全: 1. **mitmproxy WAF** - 实时威胁模式检测 (70+ CVE 模式) 2. **CrowdSec 场景** - 具有自适应阈值的智能封禁决策 3. **CVE 分诊代理** - AI 驱动的漏洞评估和修复 ## 架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 第7层: 请求处理 │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ HAProxy (端口 8080) → mitmproxy (MITM 检查) │ │ │ │ ↓ │ │ │ │ secubox_analytics.py │ │ │ │ (70+ CVE 模式, 亚100毫秒检测) │ │ │ └──────────────────────────────────────────────────────────┘ │ │ ↓ │ │ [决策树] │ │ ┌────────────────┬─────────────┬──────────────┐ │ │ ↓ ↓ ↓ ↓ │ │ [允许] [记录威胁] [自动封禁] [告警] │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 威胁日志管道 │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ 日志文件: │ │ │ │ • /var/log/secubox-access.log (所有请求) │ │ │ │ • /data/threats.log (CrowdSec 解析器输入) │ │ │ │ • /data/autoban-requests.log (封禁决策) │ │ │ │ • /tmp/secubox-subdomain-metrics.json (分析) │ │ │ └──────────────────────────────────────────────────────────┘ │ │ ↓ │ │ [CrowdSec 引擎] │ │ 8 个 mitmproxy 专用场景 │ │ ┌─────────────────┬──────────────┬──────────┐ │ │ ↓ ↓ ↓ ↓ │ │ [CVE] [扫描器] [SSRF] [Shell] │ │ 封禁30分 封禁10-30分 封禁10分 封禁60分 │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 响应与修复 │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ CrowdSec 防火墙 Bouncer: │ │ │ │ • 基于 IP 的阻断 (iptables/nftables 规则) │ │ │ │ • 白名单/黑名单集成 │ │ │ └──────────────────────────────────────────────────────────┘ │ │ ↓ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ CVE 分诊代理 (可选): │ │ │ │ • 将 CVE 模式与 NVD 数据关联 │ │ │ │ • LocalAI 影响评估 │ │ │ │ • 补丁建议 │ │ │ └──────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` ## 组件 1: mitmproxy WAF 分析 ### 位置 - **配置:** `/etc/config/mitmproxy` - **分析插件:** `/srv/mitmproxy/addons/secubox_analytics.py` - **WAF 规则:** `/srv/mitmproxy/waf-rules.json` ### CVE 模式类别 | 类别 | 模式数 | 严重性 | 自动封禁 | |------|--------|--------|----------| | **SQL 注入** | 18 | 严重 | 是 | | **命令注入** | 16 | 严重 | 是 | | **XSS** | 17 | 高 | 阈值 | | **路径遍历** | 14 | 高 | 阈值 | | **XXE** | 8 | 严重 | 是 | | **SSRF** | 14 | 高 | 阈值 | | **Log4Shell/JNDI** | 8 | 严重 | 是 | | **CVE 2021-2025** | 70+ | 严重 | 立即 | | **路由器僵尸网络** | 20+ | 严重 | 立即 | ### 支持的 CVE (2021-2025) **2024-2025:** - CVE-2025-15467 (OpenSSL CMS 堆栈溢出) - CVE-2025-0282 (Ivanti Connect Secure) - CVE-2024-3400 (PAN-OS GlobalProtect) - CVE-2024-21887 (Ivanti Connect Secure) - CVE-2024-1708/1709 (ScreenConnect) - CVE-2024-27198 (TeamCity) - CVE-2024-21762 (Fortinet FortiOS) **2023:** - CVE-2023-34362 (MOVEit SQL 注入) - CVE-2023-22515 (Confluence 权限提升) - CVE-2023-46747 (F5 BIG-IP) - CVE-2023-4966 (Citrix Bleed) **2021-2022:** - CVE-2021-44228 (Log4Shell) - CVE-2021-41773 (Apache 路径遍历) - CVE-2022-22965 (Spring4Shell) - CVE-2022-1388 (F5 BIG-IP) ### 自动封禁配置 ```uci config autoban 'autoban' option enabled '1' option ban_duration '4h' option min_severity 'high' option sensitivity 'moderate' option moderate_threshold '3' option moderate_window '300' option whitelist '127.0.0.1,192.168.255.1' ``` **敏感度级别:** - **激进:** 首次严重威胁立即封禁 - **适中:** 5分钟内3次威胁后封禁 (默认) - **宽容:** 1小时内5次威胁后封禁 ## 组件 2: CrowdSec 场景 ### 位置 - **场景:** `/etc/crowdsec/scenarios/` - **解析器:** `/etc/crowdsec/parsers/s01-parse/secubox-mitmproxy.yaml` - **采集:** `/etc/crowdsec/acquis.d/secubox-mitmproxy.yaml` ### mitmproxy 威胁场景 | 场景 | 类型 | 触发条件 | 封禁时长 | |------|------|----------|----------| | `secubox/mitmproxy-attack` | Leaky | SQLi, XSS, CMDi, LFI, XXE | 15分 | | `secubox/mitmproxy-cve` | Trigger | CVE + 严重级别 | 30分 | | `secubox/mitmproxy-botscan` | Leaky | 漏洞扫描器 | 30分 | | `secubox/mitmproxy-shell-hunter` | Trigger | Shell/后门搜索 | 60分 | | `secubox/mitmproxy-config-hunter` | Leaky | 配置文件搜索 | 30分 | | `secubox/mitmproxy-scanner` | Leaky | 管理员/环境扫描 | 10分 | | `secubox/mitmproxy-ssrf` | Leaky | SSRF 尝试 | 10分 | | `secubox/mitmproxy-suspicious-ua` | Leaky | 可疑 User-Agent | 15分 | ### 日志格式 (JSON) ```json { "timestamp": "2026-02-28T12:00:00Z", "source_ip": "1.2.3.4", "host": "example.com", "request": "GET /../../../etc/passwd HTTP/1.1", "threat_type": "path_traversal", "pattern": "../../../etc/passwd", "severity": "critical", "cve": "", "category": "lfi", "is_bot": true, "bot_type": "vulnerability_scanner", "bot_behavior": "config_hunting" } ``` ## 组件 3: CVE 分诊代理 ### 位置 - **配置:** `/etc/config/cve-triage` - **CLI:** `/usr/bin/cve-triage` - **库:** `/usr/lib/cve-triage/` ### 工作流 1. **收集器** (`collector.sh`): - 收集已安装的软件包 (opkg, dpkg, apk) - 扫描 LXC 容器和 Docker 镜像 - 与 NVD API 交叉引用 2. **分析器** (`analyzer.sh`): - 基于 CVSS 的严重性评分 - LocalAI 影响评估 (可选) - 攻击向量分析 3. **推荐器** (`recommender.sh`): - 补丁建议 - 缓解策略 - 监控指导 4. **应用器** (`applier.sh`): - 基于队列的审批工作流 - 自动应用选项 (可配置) - 回滚能力 ### 配置 ```uci config cve-triage 'main' option enabled '1' option scan_interval '3600' option min_severity 'medium' option auto_apply_patches '0' option localai_analysis '1' ``` ## 集成点 ### mitmproxy → CrowdSec 1. mitmproxy 将 JSON 威胁日志写入 `/data/threats.log` 2. CrowdSec `secubox-mitmproxy` 解析器提取字段 3. 8 个场景评估严重性并决定封禁时长 4. 防火墙 Bouncer 应用 IP 阻断 ### mitmproxy → CVE 分诊 1. 检测中的 CVE 字段传递给分诊代理 2. 分诊与 NVD API 关联 3. 生成修复建议 4. 如需更新自动封禁敏感度 ### 自动封禁反馈循环 1. 高严重性 CVE 尝试触发立即封禁 2. 来自同一 IP 的重复尝试升级封禁时长 3. 白名单/WireGuard 端点保护防止误报 4. CrowdSec 社区黑名单集成 ## 文件位置 | 组件 | 路径 | 用途 | |------|------|------| | WAF 配置 | `/etc/config/mitmproxy` | 自动封禁设置 | | WAF 规则 | `/srv/mitmproxy/waf-rules.json` | 模式定义 | | 分析 | `/srv/mitmproxy/addons/secubox_analytics.py` | 检测引擎 | | 威胁日志 | `/data/threats.log` | CrowdSec 输入 | | 访问日志 | `/var/log/secubox-access.log` | 所有请求 | | 自动封禁日志 | `/data/autoban-requests.log` | 封禁决策 | | 场景 | `/etc/crowdsec/scenarios/` | CrowdSec 规则 | | CVE 分诊 | `/usr/lib/cve-triage/` | 代理库 | ## 指标与监控 ### 子域指标 实时 JSON 导出: `/tmp/secubox-subdomain-metrics.json` - 每域请求计数 - 威胁类型分布 - 每子域 Top 20 URI - 基于国家的统计 ### 速率限制 ```python RATE_LIMITS = { 'path_scan': {'window': 60, 'max': 20}, 'auth_attempt': {'window': 60, 'max': 10}, 'bot_request': {'window': 60, 'max': 30}, 'normal': {'window': 60, 'max': 100}, } ``` ## 命令 ### 查看活动威胁 ```bash # 最近的威胁 tail -f /data/threats.log | jq # 自动封禁日志 cat /data/autoban-requests.log # CrowdSec 决策 cscli decisions list ``` ### 手动封禁/解禁 ```bash # 封禁 IP 4 小时 cscli decisions add --ip 1.2.3.4 --duration 4h --reason "手动封禁" # 移除封禁 cscli decisions delete --ip 1.2.3.4 ``` ### 检查状态 ```bash # mitmproxy WAF 状态 mitmproxyctl status # CrowdSec 状态 cscli metrics # CVE 分诊状态 cve-triage status ``` ## 另请参阅 - [mitmproxy UCI 配置](../package/secubox/secubox-app-mitmproxy/README.md) - [CrowdSec 自定义场景](../package/secubox/secubox-app-crowdsec-custom/README.md) - [CVE 分诊代理](../package/secubox/secubox-cve-triage/README.md)