通过日志分析检测受危害的MapReduce工作节点_第1页
通过日志分析检测受危害的MapReduce工作节点_第2页
通过日志分析检测受危害的MapReduce工作节点_第3页
通过日志分析检测受危害的MapReduce工作节点_第4页
通过日志分析检测受危害的MapReduce工作节点_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通过日志分析检测受危害的MapReduce工作节点报告人:TowardDetectingCompromisedMapReduceWorkersthroughLogAnalysis“

”MapReduce是适合于在普通设备上进行数据密集型计算的并行编程模型。当MapReduce在分布式系统上运行时,用户对计算的控制非常少,导致一系列安全和隐私问题。MapReduce活动可能会被恶意节点或欺骗节点攻击。本文重点分析和检测由恶意或错误配置节点所发起的攻击。我们的目标是,在不修改MapReduce原始操作和不引入额外操作的前提下,研究如何证实MapReduce环境下计算(不论是计算型的还是密码型的)的完整性和正确性。我们根据收集的低层次系统路径和Hadoop日志定义了一系列数据和计算完整度检查方法,并相互关联去获取节点上正在执行的操作的信息。然后将这些信息和系统与程序不变量比较,去有效的检测恶意活动,包括懒惰节点、修改输入/输出的节点或运行异常计算的节点。摘要目录介绍相关工作背景和问题陈述MapReduce执行路径监测完整性检查MapReduce不变量完整性检查匹配不变量实验讨论和总结1234567891.介绍随着最近云计算服务的兴起,MapReduce框架已经变成分布式环境下高效并行处理大规模数据的一种流行方法。它提供计算任务在计算节点上的无缝分布,对程序员透明。它已经被许多大公司广泛的采用,如Google,Yahoo,Amazon,Facebook,AOL等。Yahoo公司的Hadoop进一步推动的MapReduce的广泛采用。尽管它具有自由灵活和能够处理大规模数据的优点,MapReduce也易受第三方的攻击和非法行为的破坏。由于用户对运行在用户数据上的程序控制较少,数据的错误计算很容易检测不到,这在有恶意服务的情况下更糟糕。1.介绍本文重点分析和检测由恶意或错误配置节点所发起的攻击。

我们的目标是:在不修改MapReduce原始操作和不引入额外操作的前提下,研究如何证实MapReduce环境下计算(不论是计算型的还是密码型的)的完整性和正确性。目前处理远程计算核实问题的研究非常多,通常的方法主要依赖于备份、密码协议或认证协议。其中大多数方法尽管有效,但是需要修改MapReduce原始操作流,或是需要修改提交的MapReduce任务。我们的挑战是设计一种替代的方法而不需要这些干扰性的修改。1.介绍最终,我们提出一种新奇的方法来检测MapReduce框架下的错误使用和攻击,即对系统调用和MapReduce日志进行语义分析。

系统调用活动流包含了丰富的性能和故障方面的数据信息及语义信息。

在给定整个系统准确的执行踪迹的情况下,可以推导出正在执行的操作。这些信息还可以用来描述某些操作没有发生,这一属性对于保证信息安全非常重要。进一步,我们确定一个不变量集合来形成Hadoop框架和其应用程序的基准行为。将Hadoop日志和特定的系统调用关联起来,并把他们和确定的不变量比较分析,就可以确定是否有恶意节点攻击MapReduce操作函数或修改计算的原始工作流。2.相关工作在各种各样的计算应用中,从网格到云计算,都有大量的研究工作在处理计算核实问题。Du等人使用采样技术来实现有效可行的非欺骗网格计算。Zhao等人提出一种模式来处理结果认证的协同作弊。Sarmenta等人引入多数选举和定点检测技术来减少错误率。Xiao等人给出一个有效的MapReduce平台,检查所有正在运行的机器,实时监测恶意节点。文献26采用了一种基于备份的模式,允许冗余度基于动态计算和工作节点的可行度适应性的调整。文献30的SecureMR框架,采用一种新的离散化的、基于备份的完整度认证模式,并且利用现存的MapReduce层次结构作为备份。Roy等人提出的Airavat系统是一个MapReduce系统的安全和隐私框架。Airavat通过向DFS加入SELinux-like强制访问协议,修改JVM和MapReduce框架,保证差别隐私。2.相关工作上述所提到的研究都基于备份技术,或需要修改MapReduce配置来提高安全保障。任务要么被复制到两个及两个以上不同的部分处理,要么使用密码检测来保证执行的正确性。这样的冗余操作尽管准确但却浪费系统系统资源,经常是不切实际的。我们研究消除了额外操作的限制,并且研究细致的关联分析和准确的日志解析怎样可以帮助检测恶意活动。除了在计算验证和完整度方面的工作,还有大量的通过日志分析进行系统错误检测方面的工作。这些工作重点在系统日志上使用挖掘和静态学习技术,确定可能的错误配置和计算问题。如,Xu等人使用基于频率模式挖掘的两阶段方法和分布估计技术来描述主模式。而我们的方法和目标不同,因为我们的检测重点是蓄意恶意活动,而不是系统错误。挖掘技术不足以检测恶意活动,因为客户端提供的程序在被提交到MapReduce框架之前是无法知道的。因此,通过训练程序来区分正常和非正常行为是几乎不可能或不切实际的。3.背景和问题陈述A.MapReduce框架1)HadoopHadoop是一个可运行于大规模集群上的MapReduce编程模型的开源实现。它基于master/slave(主/从)结构。主节点运行JobTracker、TaskTracker、NameNode和DataNode,从节点运行TaskTracker和DataNode。JobTracker负责分配作业,并协调整个作业的执行;TaskTracker负责执行分配到的作业。MapReduce是Google提出的一个适合处理大数据的并行分布式编程模型。它用Map和Reduce两个函数来表达基本的并行计算任务。Map函数接收一个键/值对作为输入,生成另外一组键/值对作为中间结果;Reduce函数接收所有的中间结果,根据键值进行合并归约操作,产生最终结果。在云计算环境下这些函数由主节点协调控制,负责任务分配和任务管理等等。由于Hadoop是我们研究中的参考架构,下面简要介绍一下Hadoop模型。3.背景和问题陈述A.MapReduce框架2)Hadoop分布式文件系统HDFS是适合部署在通用硬件上、适合大规模数据集应用的一种分布式的、可扩展的文件系统。用户应用程序通过HDFS客户端访问文件系统。HDFS使用机架感知策略,数据块只存在两个不同的机架上,减少了读取数据需要的网络传输总带宽,同时提高了写操作的效率。一个典型的HDFS集群由单个NameNode(名称节点或主服务器)和若干个DataNode(数据节点或数据服务器)组成。NameNode负责维护文件系统的目录结构,并可以根据用户请求返回文件数据在Hadoop集群上的位置。NameNode是单点故障节点,一旦NameNode宕机,整个系统就崩溃了(可以运行一个二级名称节点)。NameNode本身不存储任何数据,DataNode是实际存储数据的地方。一个优化的集群通常使用多个Datanode交叉存储数据来提高系统的可信度。3.背景和问题陈述B.目标我们的目标是:研究通过监控节点的执行行为的方法来检测工作节点上的欺骗或恶意行为的可能性。欺骗节点是指那些为了节省计算资源而跳过所要求计算的一部分或全部的节点。恶意节点是指那些为了获取一些自私利益而故意破坏计算的节点。例如,它们可能执行一些额外的计算任务来控制客户端,或者试图去获取用户的输入输出数据。

我们不会提供数据层次的程序认证技术,因为这是不切实际的。我们也不致力于放大那些涉及隐藏或危害系统调用的未知的攻击,如伪装攻击,它通过修改系统调用序列来伪装成正常的行为,这超出了我们的工作范围。另外,有些攻击可以在不导致系统失败的条件下产生错误结果,这不在我们研究的之内。错误行为模式在之前工作中已经有所研究,也不在我们的工作范围之内。3.背景和问题陈述C.假设我们研究依赖于以下一些假设:1)MapReduce框架是不受干扰的。Hadoop系统在安排、分配任务和收集结果方面是没有被破坏的。我们假设工作节点在同一时间、相同输入数据部分执行相同的MapReduce任务。2)工作节点有相同的硬件配置。这一假设和现实应用是一致的,因为大多数MapReduce集群实现都有相同的技术规格。我们尽量使得不同工作节点上的对比是公平的、可比较的。3)Master节点和HDFS是可信任的。在HadoopMapReduce环境下,Master节点是个单点故障节点,它负责分配、控制、管理文件系统命名空间、控制客户端对文件的访问等。相应的,我们假设Hadoop的日志设施是可信的,节点上的系统调用日志是可信的。可以看出,这些假设是合理的,因为MapReduce环境下已经配置和使用了一些安全日志系统。4)大多数MapReduce节点是诚实的。5)节点执行的Map函数是确定的,也就说给定相同的输入,MapReduce产生相同的输出。3.背景和问题陈述D.方法综述我们采用黑盒、低层次、动态监测方法来收集系统调用层次路径,这保证了不会修改Hadoop框架,并且将Hadoop日志和系统调用日志关联起来。关联Hadoop日志和低层次系统路径可以使我们获得对执行流和数据流的一个综合认识。分析通过动态检测方法收集到的系统路径,以一个细粒度的方式抽取程序的执行流,来发现可疑执行行为模式。这里的可疑执行行为要么是指违反计算节点的应该负责执行的MapReduce任务操作的行为,要么是指成功的破坏MapReduce操作或全局Hadoop执行流的行为。3.背景和问题陈述D.方法综述所有MapReduce作业都遵从相同的执行流:1)Map任务被分配,首先从DataNodes中读取输入数据开始;2)一旦Map任务完成,Map输出就被传送到Reducers;3)Reducers将它们的输出写回HDFS,作业结束。每个从节点都执行全部Map和Reduce任务的一个子集,这个时间顺序也反应在从节点上。最近在云计算和MapReduce应用上的错误分析方面的工作已经在文献[14]和[17]中描述,从节点遇到相似的工作负载是正常的,这个负载被映射到一致的相似工作路径。分析这些路径和MapReduce配置信息、输入数据和系统设置,可以揭示节点正在上运行的活动的重要信息。更重要的是,关联这些路径和预期程序执行及工作流上的不变量,我们可以发现正在运行的恶意活动,这些恶意活动影响用户数据和计算的机密性、完整性和可用性。3.背景和问题陈述D.方法综述可以使用恰当的检测技术和深度分析来检测恶意活动,使用动态检测工具,通过检查以下几种类型的行为和活动,来监控MapReduce执行流。1)程序完整性:通过已知的不变量,检查map/reduce函数执行流是否遵从预期的工作流。2)输入操作:检查map函数的文件输入片是否来自正确的HDFS地址。3)输出操作:检查reduce任务的输出文件是否被映射到预期的正确的HDFS地址。4)MapReduce函数层次的I/O活动:跟踪分析和文件I/O活动相关的系统调用子集,如每个map和reduce函数中的read()和write(),并把这些信息和Hadoop日志和配置语义关联起来。4.MapReduce执行踪迹监测我们收集运行在每个Slave节点上的TaskTracker的执行踪迹,并将聚合的执行踪迹存储到HDFS上作为日志文件。更准确的说,我们使用Hadoop日志来高层次分析HDFS和Map/Reduce任务之间的交互。具体的说,Hadoop使用ApacheLog4j设施来产生日志(白盒方法);日志由JobTracker、TaskTracker、NameNode和DateNode的后台程序产生,包含配置日志、统计资料、标准错误、标准输出和内部诊断信息。由于每个TaskTracker执行Map和Reduce任务的一个子集,每个TaskTracker观察完成任务的一个全局分布样本。

我们通过分析Map和ReduceJVM产生的系统调用日志来观察Map和Reduce函数的执行行为。系统调用日志由动态检测TaskTracker的后台程序产生。我们注意到系统调用日志对于获取MapReduce任务程序执行行为非常重要。4.MapReduce执行踪迹监测日志分析基于对Hadoop日志和系统调用日志可用信息的深入理解Hadoop上有JobTracker、TaskTracker、NameNode和DataNode的唯一标示符:1)JobID:JobTracker和TaskTracker日志包含JobID,表示作业的唯一标识符;2)BlockID:DataNode日志包含BlockID,代表数据文件原始HDFS块;3)TaskID:表示是要么是Map任务,要么是Reduce任务。TaskID=JobID+尝试号+‘m’或‘r’+任务号

系统调用路径提供比Hadoop日志更细粒度的执行日志。系统调用日志根据进程ID分组,进程ID是TaskTracker子JVM进程的唯一标识符。

分布式系统的日志通常是交错的。我们使用时间戳信息来获取正确的执行顺序。我们通过检测同一时间框架下的系统活动和同步时间戳,来消除由机器时间偏差引起的时间漂移。Hadoop日志和系统调用信息与任务调用顺序相匹配。4.MapReduce执行踪迹监测

日志解析:从分布式环境中收集的源日志文件通常是重复的、松散的和语义困难的,所以我们要解析日志来获取有用的信息。更准确的说,为了从Hadoop日志和系统调用日志中获取有意义的信息,我们使用上述的唯一标识符来创建通俗规律的表述,这个表述允许匹配解析特定的日志项。为了把Hadoop日志和系统调用日志关联起来,我们从HadoopTaskTracker日志taskjvm.sh相关联日志项中抽取JobID和MapID/ReduceID,抽取系统调用活动taskjvm.sh中相应的JobID、Map/ReduceID和PID,并且将两者匹配。我们还分析系统调用参数,如文件描述符(如:文件名和路径名),系统调用通过访问文件描述符来搜索I/O操作和Map/Reduce任务之间的依赖度。5.完整度检查HDFS客户端通过RPC(远程过程调用)来访问HDFS服务。客户端第一次向HDFS提交数据,客户端需要连接NameNode。客户端请求流,以HadoopRPC形式,需要TCP连接。一旦连接建立,数据块就从客户端传输到DataNode上。我们通过从Hadoop和系统调用日志中抽取网络相关活动,来分析客户端和NameNode与DataNode之间的通信。Hadoop和系统调用日志关联抽取的IP地址、端口号、和与系统调用相关的socket连接,来追踪HDFS客户端到NameNode与DataNode的连接。任何可疑的网络连接尝试,如错误DataNodeIP地址或端口号、失败的socket连接系统调用等,都是可疑行为的一个明显迹象。相关信息和日志信息之间的不一致也是异常的征兆。A.监控HDFS客户端和NameNode与DataNode之间的通信接下来,我们细述检测MapReduce计算数据和处理过程中异常现象的方法。我们描述怎样抽取节点通信模式,并且使用这一模式来发现数据错误配置和错误访问。5.完整度检查HDFS是一个用于储存大量数据,服务大规模数据密集型应用的分布式文件系统。我们收集Hadoop日志来抽取HDFS客户端的访问模式和数据块的存储地址,作为验证输入数据完整性的一种方法。HadoopNameNode和DataNode日志提供数据块ID信息和DataNode数据块存储位置信息,由HDFS客户端访问。NameNode管理文件列表、每个文件里的数据块列表、每个DataNode里的数据块列表和其他元数据。DataNode在它的本地文件系统存储数据块,每个块存储元数据。我们抽取正在被HDFS客户端访问的DataNode地址(如:IP地址或主机名)和数据块ID。我们还抽取HDFS上操作信息,如HDFS_READ和HDFS_WRITE。这些信息对于验证Map任务的输入数据是有用的——判断加载到Map任务上的输入数据是否是来自正确的DataNode地址而非来自攻击者。从日志中获取的BlockID也可以用来验证Map任务输入数据的完整性。B.HDFS访问模式5.完整度检查通过分析HDFS的访问模式,识别对HDFS的恶意访问(如向DataNode写任意数据块或非授权访问数据块)。我们特定检查以下两种HDFS活动:(1)存储客户端数据文件块到DataNode子集;(2)从持有数据块备份的DataNode中加载数据块到Map任务。我们分析从DataNode中收集到的系统调用路径来识别HDFS客户端和DataNode间的数据转移活动。例如,accept()系统调用提供客户端与DataNode建立连接的信息;带blockID参数的open()系统调用揭示正在被访问的数据块;HDFS数据转移使用TCP/IP套接字直接执行,因此带文件描述符参数的sendfile()系统调用帮助我们检查DataNode是否发送正确的数据块给相应的HDFS客户端。C.使用Dtrace/Strace窥探HDFS和MapReduce之间的IO5.完整度检查我们在方法层次和系统调用层次,通过动态追踪每个从节点上TaskTracker子JVM进程来收集Map和Reduce动态执行路径。从路径中抽取程序执行的语义信息,如已经被加载到Map/Reduce任务上的类,正在系统组件上执行的操作的类型。系统路径语义分析提供Map/Reduce任务控制流和数据流的细粒度信息。使用系统调用层次路径,我们还可以识别Map/Reduce任务的不同组件之间的依赖性和因果关系。因果关系显示用户应用程序源代码的执行逻辑。D.Map和Reduce函数的执行路径6.MapReduce不变量为了有效的使用前述的路径,我们把它们和预期的或可信任的MapReduce节点行为相关联。程序不变量在不同的输入和工作负载下都保存在系统日志里。因此,它们通常作为验证程序执行的检查点。我们的方法考虑程序不变量子集,分析日志序列来将它们和预期工作流相比较。如果新的日志信息不满足预期的不变量条件,则判定为异常,任何异常都可以被检测出。Hadoop框架中的不变量包括:Hadoop和Java库的存在、读正确的配置文件、写中间数据块和读取中间数据块。Hadoop库对所有的Hadoop应用都通用。因此Hadoop库不依赖具体的应用,工作节点上运行时加载Hadoop库的活动通常可以被无任何偏差的观测。进一步,我们可以通过分析系统调用日志,来检查必要的Hadoop库是否已经被加载到Map和/或Reduce任务。

Mapper函数把输入键值对转换成中间结果键值对,reducer函数根据相同的键值合并中间键值对,产生最终计算结果。更具体的说,HDFS输入数据文件被分成输入分片并分配给mapper函数作为输入键值对。由mapper函数产生的中间结果键值对被排序,然后被shuffleSort函数合并,将具有相同键值的对合并,并将key和value列表发送给reducer。Reducer产生的最终结果存储在HDFS中。6.MapReduce不变量除了简单的操作和日志文件活动检查,我们还可以通过分析mapper执行之前和reducer执行之后的HDFS访问模式,分析mapper和reducer任务之中的I/O活动,来检查执行模式是否遵从预期的工作流。更准确的说,Hadoop配置提供mapper存储中间输出结果的位置,系统调用参数揭示mapper写中间结果的位置。不论数据大小和具体的Map应用,这两个位置永远是匹配的。例如,当检查HDFS是否正确的和MapReduce交互时,应当观察以下这些活动:1)客户端向HDFS写数据文件(分片的,以块的形式存储在DataNode上);2)Mapper从DataNode上加载数据块;3)Reducer向HDFS写最终输出结果(除了输出被写到另外一个Mapper上的情况)。上述步骤的顺序在Hadoop工作流中非常重要,不能改变。6.MapReduce不变量为了更细致的理解实际函数的行为,可以观察一下Map和Reduce函数层次的不变量:1)输入/输出:给定相同的输入数据,Map函数永远产生相同的输出数据,除非Map已经被破坏;2)方法调用:执行流相同的序列任务,方法调用的顺序应该相同;3)执行顺序:可以考虑多个不变量。例如,从HDFS上加载输入数据块到Map函数,后面永远跟着写中间结果到本地磁盘或HDFS上;加载中间输出结果到Reduce任务,后面永远跟着写输出结果到本地磁盘或HDFS上。就Map/Reduce函数中系统调用的数量而言,访问系统调用和返回系统调用的数量在mapper和reducer中应该一样,如(open()和close())。检查这个数量显然是一种有效的检测可能异常的方法,如文件描述符攻击。7.匹配不变量和完整度检查我们的MapReduce执行检查是在分析运行时收集的关联的Hadoop日志和系统调用日志的基础上进行的。Apache

Hadoop和HDFS是Java语言构建的。因此,我们检查用Java实现的mapper和reducer函数。本节,我们讨论怎样基于前述的不变量检查MapReduce计算。A.输入数据完整度检查为了检查可能的恶意活动,首先要检查节点使用的输入数据。图2概括了我们分析用到的主要日志。JobTracker日志提供给定任务输入数据尺寸和分片数相关的信息,和mapper的数量匹配。可以从TaskTracker日志中抽取指定map任务输入数据文件名和它的HDFS路径。我们还可以获取Map和/或Reduce任务被分配到的JobID、TaskID、MapID和节点位置,以及mapper所用到的输入数据信息。使用这些信息,我们可以关联JobTracker、TaskTracker日志和使用的系统I/O日志,来获取HDFS和Map/Reduce任务之间的语义和行为关系。7.匹配不变量和完整度检查A.输入数据完整度检查输入数据上可以做的一个简单的检查是,从JobTracker日志和HDFS中检查输入数据的大小。JobTracker提供Inputsizeforjob,这应该和存储在HDFS中的输入文件大小匹配。例如,WordCount应用中输入数据的大小是一个1573078字节的文本文件。大小信息可以从JobTracker日志和HDFS中获取。HDFS中块层次的操作(如,HDFS_READ,HDFS_WRITE)可以从DataNode日志中观测。更细粒度的信息,如BlockID,块地址和Map任务的块访问模式,可以从系统I/O路径中获得,系统I/O路径是通过动态监测DataNode得到的。

Mapper产生的中间结果和Reducer产生的最终结果可以类似的通过关联日志分析检查。我们用MapReduce任务的数据块信息和来自关联日志的位置信息来观察HDFS访问行为。中间输出结果通常存储在‘$JobID/$attempID/output’文件夹。Hadoop日志和系统调用日志还提供数据大小信息。我们可以从TaskTracker日志中获取MapReduce输出数据大小,这和Reducer成功写入HDFS的字节数总和相等。7.匹配不变量和完整度检查B.计算完整度检查

即使mapper使用有效正确的输入数据,一个受破坏的节点也会运行欺骗的或恶意的Map和/或Reduce代码,最终导致错误的计算结果。为了检查Map/Reduce计算完整度,我们通过分析TaskTracker日志和从各个工作节点收集到的系统调用日志,来观察mapper执行行为。Hadoop日志可以检查程序是否被正确实例化和配置,但是不能提供Map/Reduce任务实际怎样和是否正确执行的信息。因此,我们要在运行时动态检测mapper和reducer,并收集特定的系统调用路径。因为系统调用可能频繁发生,因此我们只收集特定的I/O系统调用,如read()和write()。通过比较同等工作节点的路径,可以帮助我们检测Map/Reduce任务任何异常执行行为,而不需要客户端应用程序的先验知识(如黑盒方法)。

比较节点间的系统调用序列,是为了检测诚实工作节点和欺骗节点之间系统调用数据方面的明显的不同之处,或是恶意工作节点Map函数执行流的不同模式。例如,因为大多数计算都涉及写操作,一个想要收集计算资源欺骗节点就会表现出一种不同的系统调用模式,该模式中write()系统调用比诚实节点显著减少。系统调用相关数据对于监测Map/Reduce计算中的欺骗行为非常有用。然而,原始数据对于监测恶意行为还不够,因为恶意Map/Reduce函数也可能会在产生和诚实程序差不多数量的系统调用的情况下改变程序的语义。所以我们还需要通过日志分析考虑程序语义和执行流。这一点将在第8部分讨论。7.匹配不变量和完整度检查C.Hadoop配置检查

我们研究Hadoop配置操作会怎样影响MapReduce的执行行为和工作流。攻击可能会修改Hadoop配置,目的是破坏MapReduce计算或崩溃计算。一个可能的攻击是符号链攻击,攻击通过判断文件写数据之前是否有足够的检查来锁定目标应用程序,然后创建一个不同目录的文件符号链。系统调用踪迹会表现出不同的操作配置模式。例如,通过修改mapred-default.xml中的“mapreduce.tasktracker.report.address”值,TaskTrackerIP地址和端口号可能会被改变去连接攻击者的节点。同样的,通过修改mapred-default.xml中的“mapreduce.tasktracker.local.dir”值,

MapReduce存储中间结果文件的本地目录可能会被修改成攻击者指定的目录,使攻击者能够操作中间结果。Mapper在写输出到指定的位置之前需要读配置文件,所以攻击者可能在Mapper读之前修改指定地址。在这两种情况下,系统调用都会提供原和修改后的IP地址、端口号和本地目录相关信息,表明配置已经被修改。

8.实验我们使用Hadoop中著名的应用程序WordCount程序来进行我们的实验,WordCount用来统计一个文件中单词出现的频次。WordCount中Map和Redcue方法如图4所示。A.实验环境我们使用Ubuntu下Hadoop1.2.1。从每个从节点中收集系统路径并且存储日志到HDFS中。如前所述,日志是在Map和Reduce函数执行时收集的。我们使用Perl脚本来读取、收集和解析日志。对于Hadoop日志我们收集JobTracker、TaskTracker、NameNode和DataNode日志,对于Dtrace日志我们收集系统调用路径和HDFS与Map/Reduce任务之间的I/O通信日志。8.实验B.实验内容实验中,我们寻找欺骗和恶意行为模式。1)欺骗工作节点:我们统计在Hadoop框架下执行的MapReduce应用程序,并创建一个尝试通过修改执行流来跳过一些计算的欺骗节点(在WordCount例子中是迭代控制流)。我们追踪运行Mapper/Reduce函数的TaskTracker子JVM。2)恶意节点:恶意节点可能通过很多方式攻击MapReduce框架。缺乏对已知正确路径的假设,仅仅使用日志分析来检测恶意行为非常困难。即使只有一个受破坏的节点也可能会导致Map/Reduce任务最终结果错误,因为受破坏的mapper可能会产生错误的中间结果进而影响最终结果。8.实验B.实验内容我们讨论一些攻击者破坏普通Map/Reduce函数的场景。实验中,我们尤其关心相关的系统调用和参数能否提供足够的语义信息来检测恶意行为。在这方面,我们研究了以下这些攻击,对于每一种攻击,我们讨论检测的方法。1)检测恶意JVM活动,如可疑的JVM产生。我们可以从Hadoop日志和系统调用日志抽取JobID、MapID和JVMID,并且检查它们是否一致或检查是否有一个节点的值和其他节点的都不一样。更准确的说,通过查看从TaskTracker子进程和HadoopTaskTracker日志收集而来的系统调用日志可以有效的检测攻击。日志显示了Map/Reduce任务的所有扩展JVM细节信息。2)检测恶意/可疑JAR或类文件加载。恶意节点可以创建JAR文件来利用JRE弱点。系统调用路径可以显示所有被加载来执行Map/Reduce任务的类。可以从日志中获取JAVA类文件的名称和地址。8.实验B.实验内容3)检测由Mapper产生的错误放置的中间结果。通过检查系统调用日志中的中间输出文件的存储位置,可以发现攻击。我们检查mapper是否将中间输出结果写到和配置地址不同的位置上。同样的,我们还检查Reducer是否从和数据存储位置不同的地址读取中间输出结果。4)检测Hadoop配置的恶意修改。在MapReduce计算期间,攻击者可能操作特定的Hadoop配置文件,包括core-site.xml,mapred-site.xml,和hdfs-site.xml。通过关联Hadoop日志和系统调用日志,我们可以检测一个工作节点上任何配置的变更,如数据块地址。8.实验C.实验结果接下来,汇报WordCount应用中欺骗和恶意工作节点实验的结果。我们的设置包括6个mapper,其中有一个欺骗或恶意mapper。我们使用从古登堡计划收集获取的eBook作为输入数据,并且工作节点只执行WordCount程序。

1、在欺骗的场景下HadoopTaskTracker日志显示,欺骗节点Map输出结果的尺寸和诚实节点的输出显著不同。系统调用日志显示Map函数中write()数目的巨大区别。欺骗mapper的write()系统调用数目远少于诚实mapper,而read()数目差不多。欺骗节点不显示Map阶段任何溢出文件记录,而诚实mapper在Re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论