在EC2上使用SOF-ELK处理M365统一审计日志(三部分之第二部分)

本文详细介绍了如何在AWS EC2上部署SOF-ELK以处理Microsoft 365统一审计日志,包括从OVA转换到AMI、配置IAM策略和安全组,实现灵活可扩展的日志分析解决方案。

在EC2上使用SOF-ELK处理M365 UAL(第二部分)

在“处理M365 UAL”的第一部分中,我们讨论了统一审计日志(UAL)的价值、获取、解析和查询UAL数据的一些挑战,以及使用PowerShell和SOF-ELK克服这些挑战的策略,重点是正确格式化导出的数据以便轻松导入到本地安装的SOF-ELK虚拟机中。在本文中,我们将探讨在EC2上启动SOF-ELK,为UAL处理提供更大的可移植性、灵活性和可扩展性!

快速部署SOF-ELK

对于快速简便的SOF-ELK部署,很难比下载预打包的虚拟机并通过VMWare本地运行更好。但当您需要额外的计算能力、与他人协作进行调查或利用易于访问基于云的数据或系统时,在EC2上部署SOF-ELK值得额外的努力。

从虚拟机到AMI的转换

我们首先像本地VM部署一样,下载并解压缩VM。下一步是从提取的VM创建OVA。如果您有VMWare Workstation或Fusion,可以启动VMWare,导入VM,选择它,然后转到“文件”和“导出到OVF”。

重要提示: 输入文件名时确保指定文件扩展名为“.ova”,例如“sof-elk-20230623.ova”。

或者,您可以使用命令行“OVF Tool”,它包含在VMWare Workstation、Fusion和Player中。只需打开终端,导航到VMWare安装目录下的“OVFTool”目录。从那里调用ovftool可执行文件,提供源VMX文件的路径和导出路径,记得给文件名加上“.ova”扩展名。

准备上传和转换

接下来,我们需要准备将导出的“ova”上传到S3并转换为Amazon Machine Image(AMI)。我们将创建一个S3桶、一个描述导入的“containers.json”文件、为导入创建Identity and Access Management(IAM)角色和策略,并使用AWS CLI导入我们的镜像。别担心……我们将逐步进行!

您可以在Web UI或CLI中完成大多数必要的AWS步骤,但除非使用“Migration Hub Orchestrator”,否则需要CLI进行“import-image”任务。因此,让我们从安装和设置CLI开始,详细内容见以下Amazon指南:

  • 安装或更新最新版本的AWS CLI – AWS Command Line Interface (amazon.com)
  • 设置AWS CLI – AWS Command Line Interface (amazon.com)

安装并配置AWS CLI后,我们将为上传创建一个S3桶,特别注意使桶区域与要执行镜像导入的区域匹配:

1
aws s3 mb s3://your-unique-import-bucket-name --region us-east-1

配置IAM角色和策略

接下来,我们将设置允许VM导入/导出所需的服务角色(“vmimport”)和策略。您可以通过Web UI或CLI完成此操作。在继续之前,值得检查下面链接页面顶部的“VM导入/导出所需权限”,以确保您有足够的权限完成这些任务!

由于Web UI更直观并提供一些语法错误检查,我将转到https://console.aws.amazon.com/iamv2并选择“Policies, Create Policy”,然后单击“JSON”。在“Policy editor”中,您可以复制/粘贴并替换默认文本来创建新的“vmimport”策略。

重要提示: 将“your-unique-bucket-name”条目(x2)更改为匹配您的S3“镜像导入”桶:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect": "Allow",
         "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket" 
         ],
         "Resource": [
            "arn:aws:s3:::your-unique-import-bucket-name",
            "arn:aws:s3:::your-unique-import-bucket-name/*"
         ]
      },
      {
         "Effect": "Allow",
         "Action": [
            "ec2:ModifySnapshotAttribute",
            "ec2:CopySnapshot",
            "ec2:RegisterImage",
            "ec2:Describe*"
         ],
         "Resource": "*"
      }
   ]
}

对JSON策略条目满意后,单击“Next”并提供描述性策略名称,例如“VM_Import_Policy”,根据需要添加描述,添加“Tags”以帮助将来识别此资源,然后单击“Create policy”。

现在我们的策略已准备就绪,让我们创建一个角色。从IAM Web UI,单击“Roles”,然后“Create role”,然后“Custom trust policy”,并用以下JSON替换默认策略文本:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": { "Service": "vmie.amazonaws.com" },
         "Action": "sts:AssumeRole",
         "Condition": {
            "StringEquals":{
               "sts:Externalid": "vmimport"
            }
         }
      }
   ]
}

在“Add permissions”屏幕上,找到并选择您的“VM_Import_Policy”。单击“Next”,提供“Role name”,并根据需要添加描述和标签。最后,单击“Create role”。

上传OVA并导入镜像

我们的S3桶已就位,带有相关策略的角色已准备就绪,现在我们可以返回AWS CLI上传我们的OVA:

1
aws s3 cp C:\VMs\sof-elk-20230623.ova s3://your-unique-import-bucket-name/ --region us-east-1

当上传进行时,我们可以准备“containers.json”文件。启动任何文本编辑器,复制/粘贴以下文本,编辑OVA的“Description”和“URL”以匹配您的上传桶和所需的OVA名称。然后将文件保存为“containers.json”:

1
2
3
4
5
6
7
[
  {
    "Description": "SOF-ELK 20230623 OVA",
    "Format": "ova",
    "Url": "s3://your-unique-import-bucket-name/sof-elk-20230623.ova"
  }
]

OVA上传完成后,我们可以通过AWS CLI启动“镜像导入”:

1
aws ec2 import-image --description “SOF-ELK 20230623 OVA” --disk-containers file://C:\VMs\containers.json

如果一切顺利,您应该看到类似于下图的输出,“Status”为active,“StatusMessage”为pending:

注意输出中的“ImportTaskId”,因为我们可以使用它来检查镜像导入的状态:

1
aws ec2 describe-import-image-tasks –import-task-ids import-ami-02d6da26f8b862f5a

“StatusMessage”现在应显示“converting”。在CLI中再次按向上箭头重复命令并密切关注进度。请耐心等待,因为这需要一段时间,并且“Progress”指示器感觉像“剩余零秒”约30分钟!坚持住,我们快完成了。

启动SOF-ELK实例

导入镜像任务完成后(“Status” = completed),记下“ImageId”,然后我们将转到EC2 Web UI:https://us-east-1.console.aws.amazon.com/ec2(注意,在此示例中我针对us-east-1区域)。不幸的是,AMI会基于上述“ImageId”接收随机生成的名称。因此,让我们转到“Images\AMIs”,然后从任务状态输出中找到AMI ID,选择它,然后单击“Tags\Manage Tags”,并添加“Name”和描述性值,例如“SOF-ELK 20230623”。选择AMI后,我们可以单击顶部菜单上的“Launch instance from AMI”按钮进入启动向导。

我们已接近完成,我只用了“处理”这个词两次!在“启动实例”向导中,给您的实例一个“Name”,从可用的实例类型中选择(我选择了t3.medium),创建或选择现有的密钥对,根据需要调整网络设置,并创建新的安全组或使用现有组。

重要提示: 我们的镜像基于默认的SOF-ELK VM,这意味着使用众所周知的默认凭据!请不要在安全组(SG)中向全世界开放SSH!我的意图几乎总是从另一个EC2实例访问SOF-ELK,因此我通常制作一个自引用SG,并添加SOF-ELK实例和任何其他需要访问的实例,不允许任何外部直接访问SOF-ELK。

从EC2 Web UI,转到“Security Groups, Create security group”,命名为描述性名称,例如“SOF-ELK Security Group”,添加描述和任何所需的标签,然后单击“Create security group”。选择新的SG,单击“Edit inbound rules, Add rule”,将类型设置为“All TCP”(如果需要,可以更严格,只允许TCP端口22和5601),将“Source”设置为“Custom”,然后将安全组添加到自身并“Save”。接下来,将SG分配给您的SOF-ELK实例和任何其他需要访问SOF-ELK的实例。

对安全组选择满意后,单击“Launch instance”。当实例初始化时,我将记下私有IP,然后访问我的EC2分析服务器,预期从那里访问SOF-ELK:

1
SSH from an EC2 Instance to SOF-ELK

最终检查

进行最终检查,启动浏览器并导航到SOF-ELK URL,http://you-sof-elk-local-ip:5601:

SOF-ELK Web UI:它活了!

您现在正式准备好使用SOF-ELK和EC2的所有灵活性、可访问性和规模来处理M365 UAL!请参考“第一部分”以复习如何通过PowerShell导出数据并查询以用于审计/调查目的。在本系列的下一篇也是最后一篇中,我们将讨论当您面对CSV格式的UAL导出数据时该怎么办,这些数据未正确格式化以供SOF-ELK摄入。敬请关注,感谢阅读!

阅读:

  • 第一部分
  • 第三部分
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计