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

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

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

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

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

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

VMWare Workstation – 导出到OVF

然后,系统会提示您指定导出保存的位置和名称。

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

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

VMWare Workstation “ovftool” – 导出到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

创建S3存储桶用于上传OVA

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

  • VM导入/导出所需权限 – VM Import/Export (amazon.com)

由于Web UI更直观并提供一些语法错误检查,我将转到https://console.aws.amazon.com/iamv2,选择“策略,创建策略”,然后单击“JSON”。在“策略编辑器”中,您可以复制/粘贴并替换默认文本来创建一个新的“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": "*"
      }
   ]
}

注意: 如果您参考上面的AWS链接,可能会注意到他们推荐的策略是针对“VM导入/导出”的。在本文的上下文中,我省略了“导出”存储桶配置。

对JSON策略条目满意后,单击“下一步”,提供描述性策略名称,例如“VM_Import_Policy”,根据需要添加描述,添加“标签”以帮助将来识别此资源,然后单击“创建策略”。

现在我们的策略准备好了,让我们创建一个角色。从IAM Web UI中,单击“角色”,然后“创建角色”,然后“自定义信任策略”,并用以下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"
            }
         }
      }
   ]
}

在“添加权限”屏幕上,找到并选择您的“VM_Import_Policy”。单击“下一步”,提供“角色名称”,并根据需要添加描述和标签。最后,单击“创建角色”。

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

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

通过AWS CLI上传OVA到S3

当上传进行时,我们可以准备“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分钟!坚持住,我们快完成了。

一旦import-image任务完成(“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中,转到“安全组,创建安全组”,命名为描述性名称,例如“SOF-ELK安全组”,添加描述和任何所需的标签,然后单击“创建安全组”。选择新的SG,单击“编辑入站规则,添加规则”,将类型设置为“All TCP”(如果需要,可以更严格,只允许TCP端口22和5601),将“Source”设置为“Custom”,然后将安全组添加到自身并“保存”。接下来,将SG分配给您的SOF-ELK实例和任何其他需要访问SOF-ELK的实例。

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

从EC2实例SSH到SOF-ELK

作为最终检查,让我们启动浏览器并导航到SOF-ELK URL,http://you-sof-elk-local-ip:5601:

SOF-ELK Web UI:它活了!

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

阅读:

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