PostboxRetinal/cloudSIEM
GitHub: PostboxRetinal/cloudSIEM
基于 Elastic Stack 的简化云 SIEM 平台,实现多源日志集中化、标准化、威胁检测与可视化,用于云计算课程的安全监控实践。
Stars: 0 | Forks: 0
# CloudSIEM
## 简化的 SIEM 平台,用于使用 Elastic Stack 集中化、标准化、关联和可视化安全事件。
本仓库对应于**云计算**课程的**项目 8:使用 Elastic Stack 和威胁情报的日志分析与安全平台**。
## 描述
本项目的目标是构建一个能够实现以下功能的安全监控与分析平台:
- 集中化来自多个异构源的日志;
- 将事件转换为通用 schema;
- 通过规则和分析检测可疑行为;
- 在管理和运营 dashboard 中可视化安全状态;
- 在受控环境中演示对模拟攻击的检测。
该解决方案旨在作为使用 Elastic 生态系统真实组件的端到端 SIEM 流程的学术实现。
## 目标
- 集中化并标准化来自多个源的日志。
- 实施异常检测和事件关联。
- 构建管理和运营安全 dashboard。
- 模拟攻击场景并验证其检测。
- 记录事件响应程序。
## 项目范围
该平台至少应包含:
- `Elasticsearch` 用于存储、索引和 ILM。
- `Logstash` 用于解析、转换和充实。
- `Kibana` 用于可观察性、安全和 dashboard。
- `Filebeat` 和/或 `Metricbeat` 用于收集日志和指标。
- `Docker Compose` 或 `Kubernetes` 用于部署。
- `Python` 脚本用于生成流量和测试事件。
- `Wazuh` 作为可选组件以提供额外检测。
## 提议的架构
```
Fuentes de logs
|- Syslog
|- auth.log
|- Nginx/Apache
|- Kubernetes
`- Logs simulados por scripts
Beats / Recolección
`- Filebeat / Metricbeat
Pipeline de ingesta
`- Logstash
|- grok
|- mutate
|- geoip
`- routing de errores
Almacenamiento y gestión
`- Elasticsearch
|- índices ECS
|- ILM
`- retención de 30 días
Analítica y visualización
`- Kibana SIEM / Dashboards / Discover
Detección
|- reglas de correlación
`- machine learning / alertas
```
## 预期的日志源
该项目必须至少集成 3 个不同的日志源。为答辩指定的目标源为:
- 系统日志 (`syslog`);
- 安全日志 (`auth.log`);
- Web 应用日志 (`nginx` 或 `apache`);
- Kubernetes 日志。
所有事件必须在 Kibana 中可见,并尽可能与 `ECS` (Elastic Common Schema) 保持一致。
## 功能和技术需求
| ID | 需求 | 主要技术 | 验收标准 |
| --- | --- | --- | --- |
| `R8.1` | 使用 `Docker Compose` 部署具有 3 个节点的 `Elasticsearch`、`Logstash` 和 `Kibana`;配置具有 `ILM` 和 30 天保留期的索引。 | `Elasticsearch`, `Docker Compose` | 集群处于 `green` 状态;ILM 已应用并验证;在加速测试中有过渡到 `warm` 和/或 `cold` 的证据。 |
| `R8.2` | 配置至少从 3 个源摄取日志:系统 (`syslog`)、Web 应用 (`nginx` 或 `apache`)、Kubernetes 和/或安全 (`auth.log`)。 | `Filebeat`, `Metricbeat`, `Logstash` | 日志在 Kibana 中可见;`ECS` 字段已正确映射。 |
| `R8.3` | 实施带有 `grok`、`mutate` 和 `geoip` 过滤器的 `Logstash` pipeline;将格式错误的日志拒绝并隔离到单独的错误索引中。 | `Logstash`, `Grok`, `GeoIP` | 成功解析率超过 95%;被拒绝的日志已存储并记录原因。 |
| `R8.4` | 实施至少 5 条检测规则:SSH 暴力破解、端口扫描、多个 `404` 错误、非工作时间登录以及对敏感路径的访问。 | `Kibana SIEM`,可选 `Wazuh` | 每条规则必须通过为该场景生成的测试日志正确触发。 |
| `R8.5` | 模拟至少 3 个攻击场景:暴力破解、使用 `nmap` 扫描以及反映在日志中的 SQL 注入。 | `nmap`, `hydra`, `Python` | 这 3 个场景必须被检测到并在 60 秒内生成警报;包含证据。 |
| `R8.6` | 构建高管 dashboard,包含当日 top 威胁、可疑 IP 的地理分布图、每周警报趋势以及系统总体健康状况。 | `Kibana Dashboards` | Dashboard 具有自动更新功能且非技术人员也能理解。 |
| `R8.7` | 构建运营 dashboard,包含实时日志、活动警报、top 用户/IP 以及深入到特定事件的钻取功能。 | `Kibana Discover`, `Kibana Dashboards` | 使用 dashboard 可在 5 分钟内完成对模拟事件的调查。 |
| `R8.8` | 记录至少 2 个已检测到的事件的响应 playbook,包括调查、遏制、根除和经验教训。 | `Markdown`, `GitHub Wiki` | 未参与创建的成员必须能够遵循该 playbook 并对模拟事件做出响应。 |
## 交付物
- 部署至少包含 3 个不同日志源的 ELK Stack。
- 至少配置并测试了 5 条威胁检测规则。
- 包含高管视图和运营视图的 SIEM Dashboard。
- 至少 2 种类型事件的响应 Playbook。
## 待演示的攻击场景
建议用于系统验证的场景为:
1. `SSH 暴力破解`
2. `使用 nmap 进行端口扫描`
3. `记录在 Web 日志中的 SQL 注入`
对于每个场景,建议记录以下内容:
- 受影响的日志源;
- 事件中的预期模式;
- 关联的规则或警报;
- Kibana 中的证据;
- 检测时间;
- Playbook 中定义的响应动作。
## 预期的仓库结构
随着实施的推进,本仓库应包含类似于以下的结构:
```
.
├── README.md
├── docker-compose.yml
├── elasticsearch/
├── logstash/
│ ├── pipeline/
│ └── config/
├── kibana/
│ ├── dashboards/
│ └── alerts/
├── beats/
│ ├── filebeat/
│ └── metricbeat/
├── generators/
│ └── python/
├── playbooks/
└── docs/
```
## 分支流程
本仓库使用 `develop` 作为团队的主要集成分支。
### `develop` 分支
- 团队的所有工作必须首先集成到 `develop` 中。
- 团队成员必须在集成测试、功能验证和部署之前将代码推送到 `develop`。
- `develop` 是整合文档、配置、pipeline、dashboard、规则和模拟脚本更改的分支。
### `main` 分支
- `main` 必须保持稳定并随时可用于交付或演示。
- 不得直接向 `main` 提交更改。
- 所有针对 `main` 的更改必须通过预先批准的 `Pull Request` 提交。
- 只有当更改已经在 `develop` 中经过审查和验证后,才应开启针对 `main` 的 `Pull Request`。
### 推荐流程
1. 从 `develop` 创建工作分支。
2. 在工作分支中实施并验证更改。
3. 开启指向 `develop` 的 `Pull Request` 或根据团队商定的动态进行更改的集成。
4. 在任何部署或演示之前在 `develop` 中进行测试。
5. 只有当更改准备好发布或交付时,才开启指向 `main` 的预先批准的 `Pull Request`。
## 成功标准
如果项目能够实现以下目标,则被认为已达到其目标:
- 在单一平台中集中化安全事件;
- 以低延迟检测模拟攻击;
- 提供技术和高管层级的可视化;
- 通过 dashboard 和 playbook 促进调查和响应。
## 仓库状态
当前状态:`初始文档阶段`。
本 README 定义了项目的范围、目标和预期交付物。技术栈的部署、pipeline、dashboard 和 playbook 的实施应逐步纳入本仓库。
标签:Apache, Beats, CISA项目, CTI, Docker Compose, Elasticsearch, Elastic Stack, Filebeat, IP 地址批量处理, Logstash, Metricbeat, Nginx, Python, Syslog, Wazuh, Web服务器日志, 事件关联, 云计算, 信息收集自动化, 内容过滤, 威胁情报, 子域名突变, 学术项目, 安全信息和事件管理, 安全可视化, 容器化部署, 库, 应急响应, 开发者工具, 异常检测, 攻击模拟, 数据看板, 无后门, 日志收集, 日志规范化, 日志集中化, 流量重放, 版权保护, 网络安全审计, 网络安全监控, 规则引擎, 越狱测试, 逆向工具, 驱动开发, 驱动签名利用