当前位置: 首页 > 科技观察

云服务和应用程序网络安全可编程性的数据日志管理

时间:2023-03-16 23:01:41 科技观察

0x01摘要近年来,考虑到网络攻击的复杂性和多样性,安全设备变得越来越重要和关键。当前的解决方案过于笨重,无法在虚拟服务和物联网(IoT)设备中使用。因此,需要进化到更优的模型,从大量异构源收集安全相关数据,进行集中分析和修正。在本文中,我们提出了用于访问安全上下文的灵活抽象层的概念。它旨在通过部署在云应用程序和物联网设备中的轻量级检查和执行挂钩来编程和收集数据。我们通过回顾主要的软件组件及其角色来描述它的实现。最后,我们通过PoC实现的性能评估来测试这个抽象层,以评估从虚拟服务和物联网收集数据/日志以进行集中安全分析的有效性。0x02简介通过云范式中的虚拟化,可以在构建和运行信息和通信技术(ICT)服务时实现敏捷性和成本效益。然而,与当前的遗留部署不同,它们带来了额外的安全问题。物理和虚拟服务类似于相同的开发结构。在基础架构即服务(IaaS)模型中,通常的做法是将每个软件应用程序部署在单独的虚拟化环境中,该环境可以是虚拟机或软件容器。然后它们通过虚拟网络链接互连。这样,单个虚拟机的故障不必影响整个服务。应用程序可以很容易地打包和交付为云镜像。虚拟化基础架构中安全机制的局限性,例如分布式防火墙和安全组;难以跨云部署协调它们;第三方提供的可信安全服务的典型差异促使人们越来越倾向于将传统安全设备插入网络拓扑。相比之下,这种方法有几个问题:i)每个设备都有自己的检查钩;ii)由于协议和应用程序的数量和复杂性,检测需要大量计算资源;iii)复杂的安全设备无法避免错误和错误。考虑到这些方面,需要新的架构范例来建立虚拟服务的态势感知。通过这种方式,可以通过将细粒度信息与高效处理、弹性与鲁棒性以及自治与交互性相结合来克服上述限制。因此,需要从独立的安全设备过渡到更具协作性的模型。通过协作模型,我们指的是一种集中式架构,其中从给定域内的多个来源收集安全信息、数据和事件以进行共同分析和关联。这是当今所有主要网络安全应用程序供应商的趋势,他们越来越多地利用机器学习和其他人工智能技术为企业开发安全事件和信息管理以及安全分析软件。进行数据关联并识别攻击。它们被设计为现有安全应用程序的集成工具,需要重量级进程在每台主机上运行。因此,它们不适合虚拟服务。此外,集中式架构提高了检测率,同时降低了每个终端的开销。另一方面,由于不断变化的上下文,服务图的安全管理是一项艰巨的任务。将安全设备集成到服务图设计中并不是最好的解决方案,因为它需要手动工作。相反,应该通过定义描述需要什么而不是如何实现的策略和约束来抽象地描述安全性。在本文中,我们描述了抽象层的定义,以便为检测逻辑提供对虚拟化服务的异构安全上下文的统一和双向访问。我们工作的新颖之处在于在内核或系统库中抽象出轻量级可编程挂钩,而无需在VM内部署复杂而繁琐的安全设备或作为整体服务图中的单独组件。对安全上下文的集合和强制规则的配置(这是双向访问的方式)进行编程的能力只是对已经作为商业或开源实现可用的log7收集工具数量的重大改进。本文的其余部分安排如下。我们在第2节中描述了整个ASTRID体系结构。然后,抽象层的概念及其体系结构设计在第3节中进行了详细说明,而当前的实现在第4节中进行了讨论,并对所选技术进行了详尽的描述。然后,在第5节中,我们提供了概念验证实现的功能验证和广泛的性能评估,包括与本地监控/执行代理的集成。0x03ASTRID结构图1显示了组织ASTRID多层架构的三个互补平面。尽管我们的架构与网络运营商没有直接关系,但我们使用网络术语。ASTRID是一种多层架构,其中通用、可编程和普遍的数据平面提供了一组强大的多供应商检测和分析算法(业务逻辑)。一方面,挑战在于通过实时收集来自多个毛细管源的大量事件来跨多个站点聚合广泛的知识,同时保持转发速度、可扩展性、自主性、可用性、容错性等基本属性。.,抵制妥协和响应能力。另一方面,其目标是通过空间和时间上的域间和域内数据关联,支持更好、更可靠的态势感知,以便及时检测和响应更复杂的多向量和跨学科网络攻击。图1ASTRID结构数据平面是部署在虚拟化环境中的架构的唯一部分。它收集安全上下文,即包含事件、日志、措施的知识库,可用于检测已知攻击或识别新威胁。通用控制平面的主要优点之一是可以从不同的子系统(磁盘、网络、内存、I/O)获取数据,而不是像当今常见的做法那样依赖单一信息源。由于从多个来源收集数据很容易导致网络开销过大,因此根据实际需要调整检查、监控和收集过程非常重要。因此,数据平面必须支持各个组件的重新配置及其虚拟化环境的编程,以更改报告行为,包括每个应用程序特征的参数(日志、事件)、网络流量、系统调用、远程过程调用(RPC)指向远程应用程序。编程还包括将轻量级聚合和处理任务卸载到每个虚拟环境的能力,从而减少带宽需求和延迟。对执行环境进行编程的灵活性有望潜在地导致所收集数据的种类和详细程度出现巨大的异质性。例如,某些虚拟功能可能会报告详细的数据包统计信息,而其他虚拟功能可能只报告应用程序日志。此外,报告的频率和粒度可能因每个执行环境而异。跨时间和空间维度的数据相关性自然会导致在不同时刻和功能上同时请求同一类型的信息。最后,最后一个要求是能够执行快速查找和查询,包括某种形式的数据融合。应该允许客户端定义它需要的数据结构,并从服务器返回完全相同的数据结构,防止返回过多的数据。当理解不断变化的条件和识别攻击的能力需要检索和关联超出典型查询模式的数据时,这会变得很有用。控制平面是逻辑和集中的算法集合,用于检测攻击和识别新威胁。每个算法从公共数据平面检索所需的数据。这代表了所提出框架背后的一项重大创新:实际上,每个算法都对整个系统具有完全可见性,而无需在每个虚拟功能中部署本地代理,这些代理通常执行相同或相似的检查操作。控制平面还应包括编程功能,以配置本地处理任务并将其卸载到数据平面,从而有效地平衡检查深度与由此产生的开销。除了在性能和效率方面纯粹(重新)实现传统设备之外,ASTRID方法还通过结合检测方法(基于规则、机器学习)专门为新一代检测智能铺平了道路。大数据技术;目的是定位图中的漏洞及其组件,识别可能的威胁,并及时检测正在进行的攻击。对来自多个交织域的安全日志、事件和网络流量进行联合分析可以大大增强检测能力,尤其是在大型多向量攻击的情况下。在这方面,机器学习和人工智能的应用将有助于检查和关联大量必须分析的数据、事件和指标,以可靠地检测和识别复杂的多向量攻击。管理平面的思想是让人们在循环中。它会通知检测到的攻击和异常情况,以便在检查期间需要人类专业知识来补充人工智能时,可以访问完整的上下文。管理平面通过定义高级策略然后将这些策略从控制平面转换为特定的数据平面配置来支持快速有效的修复。管理平面还与编排工具无缝集成,这些工具有望广泛用于自动化虚拟服务的部署和生命周期操作。0x04数据平面抽象层抽象层的主要目的是提供对底层数据平面功能的统一访问。根据第2节的一般描述,数据平面由异构检查、测量和执行挂钩组成,它们在虚拟化环境中实现。这些挂钩包括程序员开发到他们的软件中的日志记录和事件报告,以及内置在内核和系统库中的监控和检查功能,用于检查网络流量和系统调用。它们是可编程的,因为它们可以在运行时进行配置,使系统行为适应不断发展的环境。这意味着可以有选择地在本地调整数据包过滤器、事件报告的类型和频率以及日志记录的详细程度,以捕获准确数量的知识,而不会使整个系统被不必要的信息淹没。目标是在检测到可能表明存在攻击的异常情况时,或者在网络安全团队收到有关刚刚发现的新威胁和漏洞的警报时,获取有关关键或易受攻击组件的更多详细信息。这种方法可以实现低开销、低风险的轻量级操作,即使是并行发现和缓解,同时在出现异常和可疑活动时切换到更深入的检查和缓解。更大的事件相关性。即使对于最大的服务,这也会随着系统的复杂性而扩展。抽象层包括两个主要方面:i)隐藏监控钩子的技术异构性;ii)抽象整个服务图和每个节点的功能。图2是设想的抽象示意图。在本地,在每个虚拟化盒中,本地安全代理(LSA)为不同的挂钩提供通用接口。然后,整个图拓扑被抽象为一个中心辐射图。在这个模型中,每个节点代表一个虚拟功能,每个节点链接一条通信路径。附属于节点的是安全属性;它们包括监控/检查功能(可以收集、测量和检索的内容)以及相关数据(指标、事件、日志)。同样,链接也具有与加密机制和使用指标相关的属性(尽管图中未明确显示)。图2抽象示意图为了提供全面的指标,数据融合也可以作为整体抽象框架的一部分。基本数据的预处理和聚合可以用同一个查询来完成,从而优化抽象模型中的查找。抽象层还包括存储能力,可以为在线和离线分析提供实时和历史信息。在这个抽象中,整体拓扑和安全功能由协调器设置,而安全数据由LSA提供。0x05实施如前一节所述,数据平面是架构中负责不同操作的部分:i)收集安全上下文(在事件、日志、指标等方面),以及ii)执行安全策略(在术语)数据包过滤、执行环境的重新配置等)。ELK堆栈提供的集中式日志记录使所有数据都可以在一个中央位置进行搜索。它是基于分布式日志收集器方法实现的开源软件工具的多功能集合,可以更轻松地从数据中收集洞察力。简而言之,ELK堆栈由三个核心项目组成:i)作为搜索和分析引擎的Elasticsearch,ii)用于数据处理和转换管道的Logstash,以及iii)用于可视化数据的KibanaWebUI。它们一起构成缩写ELK。之后,Elastic推出了第四个项目Beats(一个轻量级和单一用途的数据传送器),并决定将所有项目的组合重命名为简单的ElasticStack。图3显示了概念验证(PoC)实施的架构。生成各种类型的数据,例如系统日志文件、数据库日志文件、消息队列生成的日志以及其他中间件。这些数据由安装在所有虚拟功能(服务)上的Beats收集。Beats定期将日志发送到Logstash的本地实例。然后,在进行一些轻量数据处理后,Logstash将处理后的输出发送到ContextBroker(CB),这是一个收集数据并保存以供集中分析和关联的集中节点。在CB内部,Kafka将数据发送到Logstash的本地实例。处理后,Logstash将数据发送给Elasticsearch,Elasticsearch将对数据进行索引和存储。最后,Kibana提供了一个用于搜索和分析数据的可视化界面。图3实现结构0x06结论在本文中,我们概述了提供对异构信息和源集合的双向访问的抽象层的主要功能和初步设计。这种方法使大型数据集可用于机器学习和其他人工智能机制的应用,这是目前新一代威胁检测算法的主要研究领域。与现有方法不同,我们的目标是公开可用于对本地检查和监视任务进行编程的执行环境的可编程功能。我们将详细描述基于ELKstack集成Kafka消息代理的架构,以及它如何满足收集日志进行网络安全分析的需求。我们提供PoC实施的功能验证和广泛的性能评估,包括与本地监控/执行代理的集成。结果表明,考虑到容量,该架构能够在不使用最大资源的情况下立即收集数据。在所用资源的限制下(当每秒事件数等于1000,并且与轮询间隔值无关时),虚函数中的节拍无法在不引入明显延迟的情况下收集数据。