如何:使用Terraform在Azure上构建应用型紫队实验室(Windows域控、成员服务器及HELK!)
Jordan Drysdale & Kent Ickler
摘要
Ubuntu基础系统,安装AZCLI,解压terraform,获取认证令牌,运行脚本,即可获得新域环境。 项目地址:https://github.com/DefensiveOrigins/APT-Lab-Terraform
对于持续关注我们工作的同仁们——现已发布三个网络研讨会、周六的四小时入门培训课程以及参加虚拟课程的学员们——实验室现已正式可用。通过以下简单步骤即可在Azure上部署使用。下述指令将使用Terraform在Azure上创建三个系统,完美复现我们倡导的课堂环境(域控制器+成员服务器+HELK)。它们具有相同的IP地址、相同的凭据,一切您已熟悉的配置。
以下步骤假设您已拥有Microsoft Azure账户。若尚未注册,请访问https://azure.microsoft.com/en-us/free/ 领取200美元信用额度。
根据估算,仅凭信用额度即可运行本指南构建的实验室约30天。感谢您的阅读、关注与支持。
分步指南
步骤1
在Digital Ocean上创建新的Ubuntu 18.04实例(月费5美元)
步骤2
安装AZCLI
|
|
步骤3
获取terraform二进制文件,解压并添加到PATH。建议将工具包存放于/opt/目录(源自Fletch的实践习惯)。注意:二进制文件位置会随时间变化,请从https://www.terraform.io/downloads.html 获取最新terraform包地址。
|
|
验证安装:
|
|
步骤4
此步骤较为复杂,可能在部署过程中引发问题。需收集必要的令牌信息通过AZCLI验证Azure订阅。
|
|
该命令将提示进行AZ云认证。可访问现有Azure会话并按指示操作。
设置认证会话到指定订阅:
|
|
创建具有基于角色访问控制的服务主体:
|
|
此命令将输出敏感信息(下图中以零值显示,源自微软参考文章)。这些值需填入LabBuilder.py脚本:
- appId → client_id
- password → client_secret
- tenant → tenant_id
步骤5
获取仓库并配置LabBuilder脚本以适应您的订阅和服务主体。
|
|
使用任意编辑器修改LabBuilder.py:
|
|
步骤6
开始构建!
|
|
预计完整构建时间约27分钟(实际测试耗时23分53.8秒)。
输出结果为微软分配的公网IP地址。该地址提供远程桌面服务,使用labs.local\itadmin用户登录,密码为"APTClass!"(无引号)。请注意:此时光学栈未配置(Elastic中无数据,未安装Sysmon等)。
代码库详细说明(包含所有底层系统、服务、用户等)请参见git仓库。实验室环境高级概览如下(同样记录于git仓库):
- Windows域控制器:10.10.98.10
- 公网IP限制访问Windows成员系统
- Windows工作站:10.10.98.14
- HELK:10.10.98.20
服务端口:
- Kafka:9092
- Logstash:5044
- Elastic:443
- SSH:22
成本说明:该实验室在Azure上每日运行成本约6-8美元(AWS测试成本为此两倍以上)。Azure新用户可获得200美元信用额度。
实用链接
- https://github.com/DefensiveOrigins/APT-Lab-Terraform
- https://github.com/Cyb3rWard0g/HELK
- https://defensiveorigins.com
- https://www.terraform.io/downloads.html
- https://www.terraform.io/docs/providers/azurerm/guides/service_principal_client_secret.html
后续计划
下一步将使用两个独立脚本安装完整Windows光学栈并传输日志。运行这些脚本后,监听的Apache Kafka代理将开始工作,您将在Elastic中看到日志数据。相关脚本将在同一仓库中发布。