Mihnea1711/SOC_System

GitHub: Mihnea1711/SOC_System

一个基于Docker容器化部署的实时SOC系统学术论文项目,通过投票机制和异常检测规则实现威胁的检测、防护与响应。

Stars: 1 | Forks: 0

# 分布式入侵检测系统 这是一个容器化、事件驱动的安全运营中心 (SOC),旨在实时摄取、处理和分析网络与主机数据。该系统结合使用基于特征的规则和流式机器学习 (ML),以检测已知攻击和零日异常。 ## 系统架构与数据流 该系统建立在事件驱动的微服务架构之上,使用 Kafka 作为中枢神经系统。数据流经四个主要层级: 1. **采集:** Beats 代理从受监控的环境中捕获原始流量和日志。 2. **传输:** 事件被流式传输到 Kafka topic(`raw.logs`, `raw.packets`)中。 3. **处理与检测:** Python 引擎消耗原始数据流,对其进行清理并应用检测逻辑。告警将被推送回 Kafka(`alerts.signatures`, `alerts.anomalies`)。 4. **存储与可视化:** Elasticsearch 对告警进行索引,随后在 Kibana 中进行可视化展示。 ## 层级与服务 ### 1. 采集器 (采集层) - **Nginx (受监控主机):** 一个模拟 Web 服务器,用作 Web 攻击模拟的目标。 - **SSH Server (受监控主机):** 一个开放 22 端口的 Ubuntu 容器,用作暴力破解攻击的目标。 - **MySQL Database (受监控主机):** 一个数据库容器,用作数据泄露和暴力破解攻击的目标。 - **DNS Server (受监控主机):** 一个 Bind9 容器,用作 DNS 隧道传输和数据泄露的目标。 - **Filebeat:** 持续读取并解析 Nginx 的 `access.log` 和 `error.log` 文件。 - **Packetbeat:** 嗅探 Docker 桥接网络上的原始网络流量(TCP/HTTP 流、MySQL 线协议、DNS 查询、SSH 流)。 ### 2. 消息代理 (传输层) - **Kafka (KRaft 模式):** 处理高吞吐量的实时数据流,无需 Zookeeper。将采集层与处理层解耦,确保在检测引擎重启时不会丢失数据。 ### 3. 检测引擎 (处理层) 一个定制的 Python 服务,充当系统的大脑。它通过严格的 pipeline 处理事件: - **噪声过滤器:** 丢弃不相关的背景噪声(例如静态资源请求、内部 Docker DNS 检查)以节省处理能力。 - **标准化器:** 将不同的日志格式(Filebeat 与 Packetbeat)标准化为统一的 JSON schema。 - **富化器:** 为事件添加深度上下文,例如精确的 GeoIP 定位(城市、坐标、ASN/ISP)和结构化的威胁情报(对已知恶意 IP 进行分类并分配置信度分数)。 - **特征检测:** 使用有状态和无状态规则来捕获已知攻击(SQLi、XSS、路径遍历、暴力破解、帐号失陷)。 - **ML 异常检测:** 使用在线学习模型(`river` Half-Space Trees)跟踪滚动的 IP 统计信息(错误率、请求计数),并在无需预定义规则的情况下检测异常行为模式。 ### 4. 存储与展示 (数据湖层) - **Elasticsearch:** 一个针对搜索进行优化的 NoSQL 数据库,用于存储所有生成的告警。 - **Kibana:** 前端 UI,用于构建仪表板、搜索告警以及监控系统的健康状况。 ### 5. 自动化事件响应 - **事件响应:** 一个 Python 服务,监听 Kafka 告警并采取自动化行动(例如,动态更新 Nginx 黑名单或使用 Docker API 隔离失陷的容器)。 ### 6. 攻击模拟器 - **场景运行器:** 一个 Python 框架,用于编排基于 YAML 的攻击场景(例如,使用正常流量预热 ML 模型,然后发起分布式暴力破解或 SQL 注入攻击)。 ## 预期输出 当检测引擎识别出恶意活动时,它会生成告警。这些告警会被推送到 Kafka 并在 Elasticsearch 中建立索引。 典型的告警输出如下所示(JSON 格式): ``` { "rule_name": "ML Anomaly Detected", "severity": "HIGH", "source_ip": "45.133.1.22", "destination_ip": "172.20.0.5", "description": "Anomalous behavior detected with score 0.99", "@timestamp": "2026-05-31T19:12:37.000Z", "metadata": { "anomaly_score": 0.997, "features": { "request_count": 10.0, "error_rate": 1.0, "avg_payload_size": 0.0, "variance_score": 1.0 } }, "event": { "event_type": "web_log", "http_method": "POST", "url_path": "/login", "status_code": 401, "geoip": { "country": "Unknown" }, "threat_intel": { "is_known_attacker": true } } } ``` ### 如何运行 1. **启动环境:** 启动基础设施、采集器和检测引擎。 ./scripts/bootstrap.sh 2. **运行攻击场景:** 使用场景运行器生成正常流量(预热)并模拟攻击。 cd app/attacks # 首先,预热 ML 模型 python scenario_runner.py scenarios/scenario_0_warmup.yaml # 然后,运行攻击场景 python scenario_runner.py scenarios/scenario_1_recon_brute.yaml python scenario_runner.py scenarios/scenario_2_brute_xss.yaml python scenario_runner.py scenarios/scenario_3_web_exfil.yaml python scenario_runner.py scenarios/scenario_4_ssh_compromise.yaml python scenario_runner.py scenarios/scenario_5_mysql_exfiltration.yaml python scenario_runner.py scenarios/scenario_6_dns_tunneling.yaml 3. **停止并清理:** 关闭环境,并可选择清空所有数据卷(Kafka、Elasticsearch)。 ./scripts/teardown.sh [--wipe]
标签:Elastic Stack, Kafka, SonarQube插件, 入侵检测系统, 安全数据湖, 安全运营中心, 安全防护, 异常检测, 流量重放, 网络映射