mentat-is/gulp
GitHub: mentat-is/gulp
基于 OpenSearch 的图形化安全事件响应日志处理平台,支持多源数据摄入、SIGMA 规则查询和团队协作分析。
Stars: 56 | Forks: 7





[描述](#description) - [架构](#architecture) - [安装](#installation) - [运行与示例](#commandline-examples) - [GUI](#clients) - [故障排除](./docs/troubleshooting.md)
## 描述
Gulp 是一款功能强大的软件工具,旨在简化事件响应和分析。其核心功能包括:
- **数据摄入插件**:得益于其通用的插件系统,Gulp 可以从多种来源摄入数据。
- **OpenSearch 和 ECS**:Gulp 基于 OpenSearch 构建,并使用 *Elasticsearch Common Scheme (ECS)* 作为其摄入格式,确保了兼容性和易用性。
- **高速多处理引擎**:Gulp 的引擎专为速度而设计,通过多处理提供快速的数据摄入和查询能力。
- **使用 SIGMA 规则查询**:Gulp 支持使用 Sigma 规则进行查询,允许通过数千条规则轻松实现一键并行查询。
- **协作平台**:Gulp 包含一个协作平台,使团队能够在同一事件上协同工作。功能包括记笔记、高亮显示和添加链接。
- [**创新性的 UI**](https://github.com/mentat-is/gulpui-web):Gulp 的用户界面包含多个屏幕上的按上下文(即日志源)可缩放时间线,用于可视化事件,使理解和分析事件变得更加容易。
- **可扩展**:Gulp 在设计时充分考虑了可扩展性。随着数据和团队的增长,您可以简单地添加更多 gulp 节点、更多核心以增加并行摄入和查询能力,以及更多 OpenSearch 和 PostgreSQL 节点。这使得 Gulp 成为一个灵活的解决方案,能够适应您不断变化的需求!
- **基于 Python**:Gulp 使用 Python 编写,尽可能利用开源库。由于 Python 被广泛使用和理解,这最大限度地提高了社区的采用便利性。
[这里是详细的数据表](./DATASHEET.md)
## 架构
- [GULP 架构](./docs/architecture.md)
### 插件开发
- [插件与映射](./docs/plugins_and_mapping.md)
- [测试指南](./docs/testing.md)
### 与其他应用程序集成
gulp 当然可以[与其他应用程序集成](./docs/integration.md) !
## 安装
- [docker](<./docs/install_docker.md>)
- [从源码安装/开发环境设置](./docs/install_dev.md)
- [安装额外插件](./docs/install_dev.md#7-optional-installing-extra-plugins)
### 客户端
[gulp web ui](https://github.com/mentat-is/gulpui-web)
### 环境变量
可以设置以下环境变量来覆盖配置选项。
- `GULP_BIND_TO_ADDR`, `GULP_BIND_TO_PORT`:如果设置,gulp 将监听此接口和端口(否则使用默认值 `0.0.0.0`, `8080`)。
- 要使覆盖生效,必须同时指定 `GULP_BIND_TO_ADDR` 和 `GULP_BIND_TO_PORT`,否则仅指定其中一个的值将被忽略。
- `GULP_WORKING_DIR`:这是 gulp 的**工作目录**(默认为 `~/.config/gulp`),其中包含:
- `gulp_cfg.json`:配置文件,如果不存在则使用[模板](./gulp_cfg_template.json)初始化
- `plugins`:可选的额外插件(优先级高于 `$INSTALLDIR/plugins`)
- `mapping_files`:可选的额外映射文件(优先级高于 `$INSTALLDIR/mapping_files`)
- `certs`:可选的 [SSL](#ssl) 证书,用于 HTTPS
- `ingest_local` 目录,用于存储用于快速摄入的大文件(`ingest_local` API)
- `tmp_upload` 文件夹,用于在摄入期间缓存部分上传
- `GULP_OPENSEARCH_URL`:如果设置,将覆盖配置中的 `opensearch_url`。
- `GULP_POSTGRES_URL`:如果设置,将覆盖配置中的 `postgres_url`。
- `GULP_REDIS_URL`:如果设置,将覆盖配置中的 `redis_url`。
- `GULP_S3_URL`:如果设置,将覆盖配置中的 `s3_url`。
- `GULP_INTEGRATION_TEST`:**仅用于测试**,在集成测试(即 client api)期间必须将其设置为 1,以禁用可能产生干扰的调试功能。
### 暴露的服务
#### gulp
- [gulp swagger 页面 http://localhost:8080/docs](http://localhost:8080/docs)
- [gulp web UI http://localhost:3000](http://localhost:3000)
- **用户/密码:`admin/admin`**(默认 gulp 管理员用户)
#### PostgreSQL
- postgreSQL 在 **localhost:5432**
- **用户/密码:`postgres/Gulp1234!`**
- [adminer 在 http://localhost:8001](http://localhost:8081) 用于管理 postgreSQL(使用 `--profile dev`)
- **服务器/用户/密码:`postgres/postgres/Gulp1234!`**
#### OpenSearch
- [opensearch 在 http://localhost:9200](http://localhost:9200)
- **用户/密码:`admin/Gulp1234!`**
- [elasticvue 在 http://localhost:8082](http://localhost:8082) 用于可视化 OpenSearch 索引(使用 `--profile dev`)
- [opensearch dashboards 在 http://localhost:5001](http://localhost:5601) 用于更全面的 OpenSearch 管理。
#### redis
- redis 在 **localhost:6379**
- **用户/密码:`default/Gulp1234!`**
- [redis insight 在 http://localhost:5540](http://localhost:8002) 用于管理 redis(使用 `--profile dev`)
#### MinIO
- [minio 在 http://localhost:9000](http://localhost:9000)
- **用户/密码:`admin/Gulp1234!`**
- 这被用作 S3 兼容的文件存储,供可能需要它的插件使用。
### SSL
要使用 SSL,可以提供以下配置选项和文件变量:
#### OpenSearch
- Gulp 配置
- `opensearch_verify_certs`:设置为 `false` 以跳过服务器验证
- 证书文件
- `$GULP_WORKING_DIR/certs/opensearch-ca.pem`:Gulp 连接到 Opensearch 服务器的 CA 证书
- `$GULP_WORKING_DIR/certs/opensearch.pem`:Gulp 连接到 Opensearch 服务器的客户端证书
- `$GULP_WORKING_DIR/certs/opensearch.key`:***无密码***的客户端证书密钥
#### PostgreSQL
- Gulp 配置
- `postgres_ssl`:对 postgres 连接使用 SSL,设置为 `false` 以不使用。
- `postgres_verify_certs`:设置为 `false` 以跳过服务器验证
- 证书文件
- `$GULP_WORKING_DIR/certs/postgres-ca.pem`:Gulp 连接到 PostgreSQL 服务器的 CA 证书
- `$GULP_WORKING_DIR/certs/postgres.pem`:Gulp 连接到 PostgreSQL 服务器的客户端证书
- `$GULP_WORKING_DIR/certs/postgres.key`:客户端证书密钥
#### gulp
- Gulp 配置
- `https_enforce`:设置为 `true` 以强制仅通过 HTTPS 连接到 Gulp
- `https_enforce_client_certs`:设置为 `true` 以强制检查由 `gulp-ca.pem` CA 签名的客户端证书
- 证书文件
- `$GULP_WORKING_DIR/certs/gulp-ca.pem`:Gulp CA
- `$GULP_WORKING_DIR/certs/gulp.pem`:Gulp 服务器证书
- `$GULP_WORKING_DIR/certs/gulp.key`:Gulp 服务器证书密钥
#### redis & MinIO
查看它们的具体文档:基本上您必须将证书放在 `$GULP_WORKING_DIR/certs` 中,该目录[已挂载到容器中](./docker-compose.yml),并调整它们的配置。
## 命令行示例
默认启动,在首次运行时创建一个名为 `test_operation` 的协作数据库操作。
```
gulp
```
删除与 `ALL`(所有)现有操作相关的数据,包括协作数据库和 OpenSearch 上的数据。
```
gulp --reset-collab
```
删除与 `ALL`(所有)现有操作相关的数据,包括协作数据库和 OpenSearch 上的数据,最后创建/重建 `my_operation`。
```
gulp --reset-collab --create my_operation
```
仅作用于 `my_operation`:创建/重建操作,删除协作数据库和 OpenSearch 上所有相关数据。
```
gulp --create my_operation
```
标签:AMSI绕过, ASN信息, ECS, Elasticsearch, HTTPX, Mutation, Sigma规则, SOC工具, Terraform, 协作平台, 可视化, 后端开发, 多进程, 威胁检测, 安全运营, 库, 应急响应, 扫描框架, 插件架构, 搜索引擎查询, 数字取证, 数据摄取, 日志处理, 测试用例, 漏洞发现, 目标导入, 自动化脚本, 请求拦截, 逆向工具, 高速查询


