(一)介绍
组织开始使用云计算,有很多收益,例如节省成本,快速上线、按需扩展等。随着组织开始使用云计算,安全人员必须更新其运营以跟上云计算模式。本文的附件部分提供了有关NIST的云安全控制,以及云安全联盟,ENISA和NIST的云部署模型和云安全参考建议。
在2016年最新版“云计算TOP威胁”中,该报告(CIS,2016)确定了云安全的12个关键问题。有效的安全监控减轻以下风险:
认证、证书和访问管理
不安全API
帐号劫持
恶意内部人员
高级持续威胁(APT)
数据丢失
使用和恶意使用云服务
保护云服务涉及进行详细的风险评估和架构安全解决方案以满足业务需求。安全监控在保护云服务方面起着至关重要的作用。本文重点介绍如何为Amazon Web Services(AWS)环境实施安全监控解决方案。
1.1 云安全监控挑战
云计算解决方案的主要类型是基础架构即服务(IaaS),平台即服务(PaaS)和软件即服务(SaaS)。AWS把自己定位为领先的云服务提供商,微软Azure和Google Cloud分别位居第二和第三位。
AWS每天都能以快速的速度创新,每天都会引入许多新功能和/或服务,平均每天AWS客户可以获得三项新功能。 “参考”部分提供了可用的不同AWS服务和用于保护AWS环境的最佳实践。一些最佳做法包括加密、特权访问管理、资源隔离和监控。
本文着重于实施AWS workload的安全监控。以下部门将强调除了传统的数据中心监控之外AWS的安全监控的关键领域。
AWS管理控制台监测
AWS实例和资源的管理由AWS管理控制台执行。使用AWS管理控制台可以进行的主要活动是创建新的虚拟机、并删除任何现有的虚拟机和其他AWS服务。监控对AWS管理控制台的未经授权的访问至关重要,因为获得云端管理平台的访问就像拥有云计算王国的钥匙一样。
应用程序编程接口(API)访问监测
随着组织向云解决方案迈进,他们必须适应新的DevOps架构。如果将当前的应用程序转到云上,团队将很难意识到实现云平台的好处。现有应用程序结构必须重新架构适应云部署模型。理想情况下,云解决方案使用DevOps方法进行连续部署。这种方法使企业能够缩短开发时间,并转而采取快速解决方案。例如,一些AWS环境使用AWS CodePipeline,在AWS环境中使用DevOps策略进行连续应用程序部署。
DevOps为安全监控带来了新的挑战。由于与AWS CodePipeline相关的自动化,基础设施作为代码和无服务器计算,API调用的数量正在增加。监控这些API调用是很重要的,确保没有未经授权的访问。由于活动量大,很难使用传统的规则和基于阈值的监控来跟踪这些事件。机器学习技术非常适合通过从数据中学习不同的特征/特征来监测这一巨大的活动。
AWS无服务器计算监测
最近AWS引入了“无服务器”计算;无服务器计算依赖于AWS Lambda来运行应用程序代码。在无服务器计算中,没有服务器基础设施;重点是监控与AWS Lambda功能相关的AWS Lambda功能执行、调用和其他参数。
垃圾邮件僵尸网络、命令与控制服务器被端,可令全球垃圾邮件量大降,不过这些集团也不只一家,而且倒下的还会卷土重来,正义与邪恶的斗争仍将继续下去,无休无止。
AWS身份和访问管理(IAM)监测
AWS IAM使组织能够控制对AWS服务和特定资源的访问。 AWS IAM提供了在AWS环境中配置精细权限的选项。建议给予最少的权限来管理执行作业功能所需的AWS资源。作为有效的信息安全控制,安全团队应该使用AWS提供的许多工具,如Access Advisor。提供适当的访问可防止任何未经授权的访问,并有效监控AWS资源管理访问。监视AWS环境中使用的不同管理credentials是各种合规规定的要求。机器学习是监测各种AWScredentials的理想选择,因为它从以前的事件中学习,并且了解识别异常的正常现象。像Sarbanes-Oxley法案这样的财务监管要求,要求组织审查所有特权访问和对托管财务数据的AWS环境的变化,作为安全合规性监控的一部分。
1.2 提出的解决方案的总体架构
提出的云安全监控解决方案是使用大型数据分析解决方案,如Splunk,Apache Spark或Amazon Elasticsearch来加载所有AWS云基础设施日志。应用机器学习模型来对风险进行评分,以确定可疑的事件。然后,根据事件,安全小组应采用自动化(lambda函数)邮件来告警,由安全小组进行手动分析。
由于AWS环境中的变化,手动基准和配置AWS基础设施安全监控规则是一项挑战。机器学习技术如本文后面介绍的有监督学习算法可以通过从数据自动学习理解异常和高风险事件,以应对云安全监控的安全监控挑战。机器学习模型可用于构建基线,进行风险评分,以识别可疑事件,使用身份认证信息、位置信息和活动类型来识别。
在本文中,Splunk将用于获取用于实施AWS安全监控用例的所有AWS CloudTrail和CloudWatch日志。应用机器学习模型来识别AWS云基础架构中的可疑活动。最新版本的Splunk 6.5具有内置的机器学习工具包,支持各种机器学习算法。将使用Splunk Machine Learning工具包应用机器学习模型。使用机器学习算法的步骤如下:
a)可视化,将数据清理与智能特征工程组合,
b)选择正确的度量/方法来估计模型性能
c)调整参数。
提出的关键概念总结如下:
1)将所有AWS日志数据从Cloudtrail和CloudWatch收集到Splunk
2)应用机器学习模型构建基线,进行风险评分,而不是手动规则/阈值。
使这一实现可行的一些因素是:
a)推进大数据技术,使信息安全团队能够大规模存储所有类型的数据。
b)许多机器学习解决方案正在变得可用,如Microsoft Azure ML Studio,Amazon Machine Learning,Databricks Spark,Splunk Machine Learning工具包。
通过拥有集中的开源大数据分析解决方案,安全团队可以将机器学习和其他统计技术应用于任何数据集。该解决方案的主要优点是,一旦使用机器学习识别出成功的方法,就可以使用相同的方法来解决类似的挑战。例如,如果一种技术有助于识别来自基于AWS云的基础架构身份和访问认证数据的可疑访问尝试,则可以应用相同的方法来识别其他应用程序和云基础架构(如Microsoft Azure和Google Cloud)的可疑访问尝试。下一节将介绍机器学习技术,并使用Splunk实现两种用例。
1.3 风险评分方法
风险评分不是新概念;信息安全界一直在使用风险评分,来确定最重要的漏洞和解决问题问题。在传统的数据中心监控中,风险评分方法依赖于了解企业环境来识别可疑事件。这种类型的示例,是基于对具有访问权限的授权管理员的理解,产生关键的服务器资产的未经授权的访问告警。基于已知的不良模式,检测恶意事件并对已知的不良模式进行将风险分数,对于信息安全社区已经看到和已知的威胁是有用的。 “参考”部分提供了一些使用AWS环境中的静态规则和阈值手动进行风险评分。
这些的基于标准风险评分的监控的挑战在于跟上AWS推出的新API调用和权限的快速步伐。与云安全监控相关的一些标准是身份、数据访问、执行的操作和地理位置。通过利用这些标准(特征)结合历史数据,机器学习技术可以学习环境,识别异常。机器学习模型可以根据先前数据的学习提供风险分数。在本文中,以线性回归算法为例来开发预测风险分数的机器学习模型。线性回归算法将预测数值。线性回归算法使用线性函数建模,连续输出变量与特征(输入,解释变量)之间的关系。以下有关机器学习的部分详细介绍了算法。该模型从数据中学习;对于AWS用例,如果与手动更新风险分数的规则/阈值相比,更有效的。
1.4机器学习
机器学习有两大类:监督和无监督学习。在监督学习中,机器学习算法将从提供的数据和标签(分类)中学习。所得到的模型将尝试预测标签(分类)(Astroml,2015)。通常使用的一些分类算法是Neural Networks, Random Forests, Support Vector Machines (SVM), Decision Trees, LogisticRegression, and Naive Bayes。监督学习的一个例子是,提供一套狗和猫图片给机器学习算法,标签指示图片是猫还是狗。监督学习算法将从狗和猫图片中学习,并创建一个预测模型。将新图片应用于预测模型,将预测所提供的图片是狗还是猫,如图1所示:
在本文中,使用线性回归算法的监督学习技术将用于预测AWS云基础架构事件的风险评分。
在无监督学习中,该模型尝试使用没有标签的功能来了解数据集,识别数据的模式和异常。无监督学习包括降维,聚类和密度估计(AstroML,2015)等任务。无监督学习的一个例子是,为机器学习算法提供一些狗和猫图片;它会将猫和狗图片分组,如图2所示:
无监督学习算法将有助于识别数据集中的主要特征。根据各种功能提供不同的有利点也是非常有帮助的。在狗和猫图片的示例中,使用无监督学习技术将有助于了解如何通过基于这些面部特征的数据分类来最有用地分类几个面部特征。在我们的AWS云基础架构事件的用例中,根据其登录位置将数据分类,可以提供对其是否是重要功能的帮助。一些常见的无监督算法是K-Means Clustering, Hierarchical clustering, and Hidden Markov模型。图3突出显示了Splunk Machine中的不同算法。
机器学习应被应用于适用的案例并产生结果。机器学习需要大量数据,摄取大量数据的机器学习模型将产生明确的结果。由于机器学习算法需要大量数据来提供有用的模型,因此需要很大的耐心才能获得结果。在AWS环境中生成大量日志,使用适当的算法创建模型,并且大量和多种数据将确保没有overfitting问题。另外,还需要注意,每一个AWS环境都是不同的。作为一个例子,大多数环境使用不同的AWS Virtual Private Cloud(VPC)配置,根据特定的业务需求,来区分AWS资源。使用来自相同AWS环境的数据创建机器学习模型将产生最好的结果。
最近的技术发展(如Splunk和Apache Spark)使得可以在不同的数据种类上快速部署机器学习算法,并使用许多不同数据集的功能。
(二)Lab Setup
附录B解释了初始实验室配置的步骤。 在实验室配置中,Splunk配置为从AWS Cloudtrail接收日志。已安装和设置Splunk机器学习工具包。
为进一步测试,通过添加用户,添加实例,从AWS QuickStart启动新环境生成额外的日志。 随着日志de 收集,机器学习的应用,计算风险分数并检测可疑事件。
(三)机器学习 -过程
羚锐制药百亿贴剂生产基地迎接河南省食药监局GMP认证现场评审
以下步骤强调了使用Splunk Machine Learning Toolkit应用机器学习技术的方法。机器学习解决方案使用相同的过程,也可以应用于安全监测用例。该解决方案也可以使用Apache Spark MLLib库来实现。 Apache Spark中的AWS Cloudtrail JSON数据文件的一个挑战是解析和规范化。 AWS已经将AWS CloudTrail日志转换为Spark Data Frame(Github,2016)的代码开源了。将数据加载到Apache Spark数据包后,Apache Spark MLLib库可以了。
在机器学习过程中要记住的一个方面是数据清理。数据清理确保数据一致和统一。在许多情况下,应将数据提取并格式化,然后再送入机器学习算法。 Splunk本身通过在摄取时间索引数据来解决数据清理,并提取相关字段,并提供从JSON格式到标准列的映射。机器学习算法可以直接从使用列的数据。与许多开源解决方案(如Apache Spark)相比,Splunk在数据清理和格式化方面节省了大量时间。下面的图5突出显示了机器学习过程中涉及的步骤:
3.1 将数据采集到Splunk并了解数据
安全小组必须将所有的AWS日志收集到一个中心位置。即使组织无法实施任何主动监控,日志将在事件发生后的后续时间内进行取证分析。
在初始设置中,Splunk被配置为从Cloudtrail和Cloudwatch日志中获取数据。 Splunk AWS应用程序可用于探索和了解日志事件,确认机器学习的功能。
3.1.1 AWS CloudTrail
AWS Cloudtrail创建所有API访问请求的日志、AWS资源访问和AWS控制台登录访问信息。了解AWS Cloudtrail日志数据以有效地设计机器学习算法很重要。 AWS Cloudtrail用户指南(AWS,2014)提供了不同类型日志事件的参考和示例。 Cloudtrail API调用日志包含两部分:Record Body Contents和 userIdentity Element.。
分析的事件类型有:
3.2浏览数据
在这种特殊情况下,用于AWS的Splunk App可用于研究AWS日志数据。The Splunk App for AWS为Amazon Web Services帐户提供了关键的操作和安全洞察。下图6显示了适用于The Splunk App for AWS可用的不同仪表板选项。这些仪表盘有助于理解相关AWS日志,确定任何可疑活动。
图7中的仪表板显示了AWS环境中的各种用户的行为。使用不同的字段(特征)查看数据,将有助于安全小组了解日志数据中的相关字段。
The Splunk App for AWS允许安全从业人员了解和探索数据,以确定有助于识别可疑AWS活动的字段。 Splunk Machine Learning Toolkit在开发模型时将可以使用这些字段。
3.3 用例1 – 检测可疑AWS控制台登录
3.3.1定义特征
在本案例研究中,探索了“AwsConsoleSignIn”事件,目的是了解哪些领域将有助于确定任何可疑的AWS控制台登录。确定的一些相关领域是:sourceIPAddressuserAgentuserIdentity.arneventTimeresponseElements.ConsoleLogin
在上述示例中,从安全角度理解和探索各种日志,可以识别特征。 Splunk机器学习工具包有例如PCA等算法,可以用数学方法来探索和定义特征。从不同有利位置的理解数据将有助于确定异常活动。
3.3.2 选择并应用学习算法
本节重点介绍了创建、评分和测试模型所需的Splunk Machine Learning Toolkit命令。
AwsConsoleSignIn.csv是使用实验室环境中的AWS日志生成的。可用 Splunk命令将事件导出为CSV格式:
sourcetype=”aws:cloudtrail” eventType=AwsConsoleSignIn | table sourceIPAddress, userAgent, userIdentity.arn, eventTime, responseElements.ConsoleLogin。
安全人员应该为这些事件添加风险分数。风险分数应根据安全领域的知识和环境进行分配。理想情况下,安全人员应根据环境事件的评分进行评估和分配风险分数,一个月一次或其他时间。机器学习模型需要大量标签的风险评分数据才能获得有用的结果。
AwsConsoleSignIn.csv一个示例如图8中所示:
创建新模型 – AwsConsoleSignIn
该机器学习模型的目标是预测风险评分,识别的可疑事件。此监督学习模型的输入是具有指定风险分数和算法LinearRegression。输出将是一个模型,用于从数据学习出来的,地预测风险分数的模型。
在图9的机器学习工具包应用配置中,选择Assistants -> Predict Numeric fie,并在“Enter a search”中提供输入文件AwsConsoleSignIn.csv:
inputlookup AwsConsoleSignIn.csv
AwsConsoleSignIn.csv作为输入文件。该搜索将加载AwsConsoleSignIn.csv文件中的所有记录进行分析。选择以下选项来创建模型:
算法:线性回归.
要预测的字段: riskScore
用于预测的字段: “sourceIPAddress”, “userAgent”, “userIdentity.arn” ,
“eventTime”, “responseElements.ConsoleLogin”
The resultant set of Splunk commands are below:
| inputlookup AwsConsoleSignIn.csv
|
“responseElements.ConsoleLogin” into “aws_console”
在此特定示例中使用的是监督学习,向机器学习算法LinearRegression提供AWS日志数据和实际风险分数。输出的模型aws_console将预测给定一组功能“sourceIPAddress”,“userAgent”,“userIdentity:arn”,“eventTime”,“responseElements:ConsoleLogin”)的风险分数。
评估结果并更新模型
在图10中的配置中,数据分为70%用于训练,30%用于测试和评估模型。分配30%的数据用于测试和评估模型有助于了解模型的准确性。
在匹配模型之后,Splunk Machine Learning Toolkit执行必要计算,测量模型性能。
如图11所示,在线图上绘制实际值与预测值,有助于安全小组了解模型的效率。
图11 Splunk机器学习工具包 – 实际与预测图
这些命令将将模型应用于AwsConsoleSignIn.csv中的数据集,并绘制实际值和预测值,以了解模型的准确性。
这些命令将将模型应用于AwsConsoleSignIn.csv中的数据集,以计算 R² and root mean squared error (RMSE).。
这些值有助于测量模型的准确性。
均方根误差”和“R ^ 2”值提供了误差幅度的概念。 R ^ 2表示一组对实际值的预测的有效性的指示。值在0和1之间。接近0的值表示模型不是很好的拟合,如图12所示
在分析性能后,如果性能不令人满意,可以提取其他特征。 例如,包括地理数据库从Maxmind的Geolocation数据,为IP地址设置地理位置新的上下文将有助于提高模型的有效性。
一旦性能令人满意,安全团队应该使用apply <model>命令部署模型。 在实施模型之后,安全分析师应根据反馈,不断调整模型。
3.4 用例2 – 检测可疑API调用
3.4.1定义特征
使用AWS Cloud安全性方面的专业知识探索了“AwsApiCall”事件,目的是了解哪些字段将有助于确定是可疑的AWS API调用。确定的一些相关领域是:
3.4.2选择并应用学习算法
使用实验室环境中的AWS日志生成AwsAPICall.csv。 Splunk命令可用于将事件导出为CSV:
sourcetype=”aws:cloudtrail” eventType=AwsAPICall | table sourceIPAddress,eventSource , eventName , userIdentity.arn, eventTime, userAgent, userIdentity.type
安全人员应该为这些事件添加风险分数。风险分数应根据安全领域的知识和环境进行分配。 AwsAPICall.csv的示例记录如下图13所示。
该机器学习模型的目标是预测风险评分,以识别高可疑API调用集。在机器学习工具包应用程序中,Assistants -> PredictNumeric fields, 并在搜索框中使用以下命令提供输入文件AwsConsoleSignIn.csv:
inputlookup AwsAPICall.csv
AwsAPICall.csv作为输入文件。该搜索将加载AwsAPICall.csv文件中的所有记录进行分析。选择以下选项来创建模型:
算法:线性回归。
预测的字段:riskScore
在图14的配置中,用于预测的字段有:“sourceIPAddress”,“eventSource”,“eventName”,“userIdentity.arn”,“eventTime”,“userAgent”,“userIdentity”。
| inputlookup AwsAPICall.csv
| fit LinearRegression fit_intercept=true “riskScore” from “sourceIPAddress”, “eventSource” ,”eventName” , “userIdentity.arn”, “eventTime”, “userAgent”, “userIdentity.type” into “aws_apicall”
在我们的例子中使用了监督学习,为机器学习算法LinearRegression提供了AWS日志数据和实际风险分数。输出的模型aws_console将尝试预测风险分数,给定的功能集“sourceIPAddress”,“eventSource”,“eventName”,“userIdentity.arn”,“eventTime”,“userAgent”,“userIdentity.type”
评估结果并更新模型
数据分为70%用于训练模型,30%用于测试和评估模型。这有助于了解模型的准确性。
在安装模型之后,Splunk Machine Learning Toolkit执行用于必要计算,测量模型性能。在线图上绘制实际值与预测值,如下图15所示,有助于了解模型的效率。
均方根误差和R ^ 2值提供了误差大小的概念。R ^ 2表示预测对实际值的有效性。 值在0和1之间。接近1的值表示模型是一个很好的拟合。
分析后,如果性能不令人满意,可以提取其他特征。例如,包括涉及事件的VPC信息将有助于提高模型的有效性。
性能满意后,使用apply <model>命令部署模型。在实施模型之后,安全分析师应根据反馈,不断调整模型。
本节重点介绍如何使用Splunk Machine Learning工具箱来创建、评估和部署机器学习模型。生成的两个模型是在实验室中创建的数据记录很少的示例,用于对Splunk机器学习工具包功能进行原型化。安全小组应根据AWS环境测试,调整和部署机器学习模型。
本文只讨论了两个用例。可能有用的另一个实际用例是确定AWS VPC之间的异常网络流量会话。威胁建模,使用攻击者工具,技术和过程(TTP)的输入,进行可用于识别其他安全监控用例。在确定用例后,本文讨论的方法可用于评估特征,并将机器学习模型应用于新的用例。
机器学习的数据需求非常大,摄取大量数据创建机器学习模型将产生有用的结果。此外,如果使用多个数据源来提取特征,则可以实现更高的保真度。例如,为IP地址的附加Geolocation数据将有助于提高模型的有效性。
(四)结论
本文重点介绍如何实现AWS日志的机器学习技术。本文应用机器学习技术来识别IaaS环境中的可疑事件。身份是新的边界,使用机器学习技术将身份数据与其他数据相结合,将有助于安全专业人员识别可疑事件。作为第一步,安全小组成员应了解监控需求、了解数据、评估合适的方法。安全小组应考虑机器学习是否适合于日志的性质、探索、可视化和选择特征,作为创建模型的输入。建立和测试模型后,安全小组应将该模型应用于实时流量(数据)。使用该模型后,安全小组应定期评估结果并调整模型。
许多机器学习解决方案正在变得可用,如Microsoft Azure ML Studio,Amazon机器学习,Databricks Spark,Splunk Machine Learning工具包。所有这些机器学习工具使得机器学习模型的实现非常直观,易于使用。这些用户界面封装了数学和编码,例如传统机器学习应用程序语言(如R)。
使用亚马逊机器学习进行安全监控,AWS re Invent 2016会议(Videos from re Invent 2016 security and compliance sessions, 2016)中演示demo。随着云实施的发展,安全团队还应该了解新方法和优点,来实施安全操作和安全监控活动。自动化和机器学习是云中的两个关键领域,为防御者提供了优势。
作为防御者,目标是通过在每个层设置预防性和侦测性控制,深度战略部署防御,使得攻击者要花费高额成本实现其目标。机器学习可以成为有用工具。在确定可疑活动后,使用取证,安全小组可以跟踪和跟踪攻击者执行的任何活动,并采取补救措施。
可能受益于此解决方案的其他一些用例包括风险管理,安全自动化/业务流程,用户/网络行为分析,欺诈检测,威胁追踪(hunting),多源的威胁情报整合以及事件响应/取证分析。
原文地址:https://www.sans.org/reading-room/whitepapers/cloud/cloud-security-monitoring-37672
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
微信扫一扫关注该公众号
研究表明多数开源软件使用的库更新不及时而存在严重安全弱点,开源软件崇尚自由,开源作者组织比较分散,缺乏强有力的中央控管机构,所以在安全更新上也没有统一的机制,这么说多数信赖开源技术开发出来的软件就更不可靠了。
猜您喜欢