freedom-finance-stack/suraksha-shield
GitHub: freedom-finance-stack/suraksha-shield
一个开源威胁情报服务,通过 AWS 自动化部署提供 IOC 查询与分类接口。
Stars: 1 | Forks: 0
# Suraksha Shield
一个开源威胁情报服务
本仓库提供了一个 AWS CloudFormation 模板([cf.json](./infra/aws/cf.json)),用于创建和管理 Lambda 函数以及 EventBridge 调度器。IP 集合可以作为 AWS WAF WebACL 中的规则使用。
### API 端点
1. IOCs API
- **端点**: https://surakshashield.razorpay.com/v1/surakshashield/iocs
- **描述**: 该 API 端点检索妥协指标(IOCs)。IOCs 是帮助识别潜在威胁或恶意活动的信息片段。
- **响应格式**:
[
{
"category": "****",
"value": "**.**.**.**",
"event_timestamp": "***",
"cluster_tags": "****",
"type": "****",
"attributeid": "***",
"tags": "****"
}
]
2. IOCTypes API
- **端点**: https://surakshashield.razorpay.com/v1/surakshashield/ioctypes
- **描述**: 该 API 端点提供 IOC 类型列表。IOC 类型对威胁情报中使用的不同指标进行分类。
- **响应**: 返回 IOC 类型列表
3. IOCCategories API
- **端点**: https://surakshashield.razorpay.com/v1/surakshashield/ioccategories
- **描述**: 该 API 端点返回 IOC 类别列表。类别将不同的 IOC 分组为有意义的分类,以帮助组织和理解威胁数据。
- **响应**: 返回 IOC 类别列表
## 快速开始
### 前置条件
在开始之前,请确保具备以下条件:
- 拥有足够权限以创建 CloudFormation 堆栈、Lambda 函数和 EventBridge 规则的 AWS 账户。
- 已安装并配置好本地机器上的 AWS CLI。
### 克隆仓库
将仓库克隆到本地机器:
```
git clone https://github.com/freedom-finance-stack/suraksha-shield.git
cd suraksha-shield
```
### 编辑 CloudFormation 模板
要为 Lambda 函数配置 [cf.json](./infra/aws/cf.json) 文件,请按照以下步骤操作:
1. 在您喜欢的文本编辑器中打开 [cf.json](./infra/aws/cf.json) 文件。
2. 定位到 `SurakshaShieldLambdaFunction` 资源块。它应类似于以下内容:
"SurakshaShieldLambdaFunction": {
"Type": "AWS::Serverless::Function",
"Properties": {
"Handler": "lambda.lambda_handler",
"Runtime": "python3.9",
"CodeUri": "/home/cloudshell-user/suraksha-shield/infra/aws/lambda",
"Role": { "Fn::GetAtt" : [ "SurakshaShieldLambdaRole" , "Arn" ] },
"Environment": {
"Variables": {
"IP_SET_NAME": "ipset-suraksha-shield-block",
"REGION": "ap-south-1",
"SURAKSHASHIELD_API_KEY": "XXXXX"
}
},
"VpcConfig": {
"SecurityGroupIds": ["sg-xxxxxxxx"],
"SubnetIds": ["subnet-xxxxxxxx"]
}
}
}
3. 根据需要更新环境变量部分:
- **IP_SET_NAME**: 设置为所需的 IP 集合名称。
- **REGION**: 更新为部署资源的 AWS 区域。
- **SURAKSHASHIELD_API_KEY**: 将 "XXXXX" 替换为 razorpay 安全团队提供的实际 API 密钥。
示例:
"Environment": {
"Variables": {
"IP_SET_NAME": "your-ip-set-name",
"REGION": "your-region",
"SURAKSHASHIELD_API_KEY": "your-api-key"
}
}
5. 保存对 JSON 文件的更改。
请确保将所有占位符替换为实际数据,并根据具体需求调整配置。
### 部署 CloudFormation 堆栈
要使用 JSON 模板部署 CloudFormation 堆栈,请按照以下步骤操作:
1. **打包 CloudFormation 模板**
首先,打包 CloudFormation 模板以上传本地工件(例如 Lambda 函数代码)到 S3 桶。运行以下 AWS CLI 命令:
aws cloudformation package \
--template-file ./infra/aws/cf.json \
--s3-bucket your-s3-bucket-name \
--s3-prefix your-s3-prefix \
--output-template-file packaged-template.json \
--use-json
- 将 **'your-s3-bucket-name'** 替换为用于上传工件的 S3 桶名称。
- 将 **'your-s3-prefix'** 替换为 S3 对象的前缀(可选)。
该命令将生成一个 packaged-template.json 文件,其中引用已上传的工件。
2. **部署 CloudFormation 模板**
使用打包的模板文件部署 CloudFormation 堆栈:
aws cloudformation deploy \
--template-file packaged-template.json \
--stack-name my-threat-intelligence-stack \
--capabilities CAPABILITY_IAM
- 将 **'packaged-template.json'** 替换为打包模板文件的路径(如果位于其他位置)。
- 将 **'my-threat-intelligence-stack'** 替换为要分配给 CloudFormation 堆栈的名称。
3. **设置 AWS NAT 网关和 VPC**
部署 CloudFormation 堆栈后,设置 AWS NAT 网关并在 VPC 中运行 Lambda 函数以获取静态 IP。该静态 IP 需要被 Razorpay 安全团队(security@razorpay.com)列入白名单。
### 设置 NAT 网关与 VPC 的步骤:
1. **创建 VPC(如不存在):**
- 进入 VPC 控制台并创建一个新的 VPC。
- 确保 VPC 同时包含私有子网和公有子网:
- 用于 Lambda 函数的私有子网。
- 用于 NAT 网关的公有子网。
2. **设置 NAT 网关:**
- 进入 VPC 控制台并在公有子网中创建一个 NAT 网关。
- 弹性 IP(EIP):为 NAT 网关分配一个弹性 IP。该 IP 将作为 Lambda 函数出站流量的静态 IP 使用。
3. **配置路由表:**
- 创建两个路由表:
- 公有路由表:与该公有子网关联,并设置通往 Internet 网关的路由以实现公网访问。
- 私有路由表:与该私有子网关联,并设置通往 NAT 网关的路由以实现出站访问。
4. **更新 Lambda 函数以在 VPC 中运行:**
- CloudFormation 堆栈部署完成后,手动更新 Lambda 函数配置以在 VPC 中运行。
- 进入 Lambda 控制台。
- 选择通过 CloudFormation 创建的 Lambda 函数。
- 在 VPC 部分,选择新创建的 VPC。
- 选择 Lambda 函数应运行的私有子网。
- 添加适合 Lambda 函数的安全组(可使用现有或新建)。
5. **获取静态 IP:**
- 配置好 NAT 网关后,分配给 NAT 网关的弹性 IP(EIP)将被 Lambda 函数用于出站流量。
- 可在 EC2 控制台中找到该弹性 IP。
6. **与 Razorpay 共享静态 IP:**
- 设置完成后,将 NAT 网关的弹性 IP 提供给 Razorpay 安全团队(security@razorpay.com)以便 IP 白名单。
### 后续步骤
**创建与管理 IP 集合**
CloudFormation 模板将创建一个 Lambda 函数和一个 EventBridge 调度器来管理 IP 集合。随后,IP 集合可以作为规则用于 AWS WAF WebACL。
1. 导航至 AWS WAF 控制台。
2. 创建或更新您的 WebACL。
3. 向 WebACL 添加新规则,并选择由 CloudFormation 堆栈创建的 IP 集合。
标签:AMSI绕过, API端点, AWS CloudFormation, DNS解析, EventBridge, IOC, IOCCategories, IOCTypes, IP集合, Lambda函数, WAF WebACL, 威胁情报, 威胁情报服务, 威胁检测, 安全情报, 安全运营, 开发者工具, 开源威胁情报, 开源项目, 扫描框架, 指标妥协, 特权提升, 网络安全, 自动化部署, 逆向工具, 隐私保护