热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大数据平台基础架构hadoop安全分析

内容来源:2017年07月29日,威客安全技术合伙人安琪在“CDAS2017中国数据分析师行业峰会”进行《大数据平台基础架构hadoop安全分析》演讲分


内容来源:2017 年 07 月 29 日,威客安全技术合伙人安琪在“CDAS 2017 中国数据分析师行业峰会”进行《大数据平台基础架构hadoop安全分析》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:5817 | 15分钟阅读

嘉宾演讲视频地址及PPT:suo.im/5dKZpw

摘要

分析hadoop现有安全技术架构,对hadoop框架组件的应用、结构进行分析,对现有的安全措施进行说明,分析分布式文件系统、MapReduce、kerberos、Hive、Hbase等相关组件的安全以及大数据平台网络访问、数据安全的机制,并总结研究hadoop的安全技术架构。

Hadoop安全现状

Hadoop安全漏洞

上图是列出的是Hadoop近年来的一些安全漏洞,接下来会针对其中的几个案例进行简要说明。

Apache的Ambari引用给Hadoop带来了很多便利,可以直接通过外部的管理对Hadoop的生态组件进行管控,但在这个过程中由于外部技术的引用,导致了一些外部应用层的漏洞,主要是SSRF伪造请求漏洞。这是由恶意攻击者通过SSRF攻击,远程对Hadoop服务以及进程进行操纵和读取数据。

MapRedure信息漏洞主要是由于数据文件、用户产生的数据以及加密秘钥都存储在同一个文件和磁盘中,导致恶意用户获取到加密秘钥同时读取了数据块中的数据。

Ambari重定向漏洞是由于target的URI参数被修改成了黑客指定的任意网址,由此造成了钓鱼攻击,甚至结合Linux底层的操作系统漏洞以及Hadoop的其他漏洞还能实现恶意代码的加载。

2017年hadoop的一个新的漏洞被曝光,漏洞的主要原因在于Hadoop引入了Docker组件,但是在linux这层没有输入过程的认证,并且Docker命令又是通过root身份来执行的。因此黑客就通过Docker命令伪造了root身份,然后对Hadoop进行了全线账户的提权,实现了整个操作系统的权限控制。

Hadoop由于自身的业务特点,一般都是部署在用户内网中,所以在早期设计的时候不是太注重安全方面的设计,而更多的专注于实现业务的功能。通过分析可以发现,这些漏洞的产生大部分都是由于Hadoop的身份认证授权没有做好。

早期Hadoop在的默认情况下,是没有身份认证和访问控制机制的,基本上是继承了Linux的权限控制体系。另外它在数据传输的过程中和静态数据保存过程中都没有有效的加密措施。

Hadoop关键安全因素

基于Hadoop面临的这些问题反过来思考,我们认为要想实现安全的Hadoop要从这几点出发。

一是认证,提供单点的登录,通过这种方式实现用户身份的认证。

二是授权,要能够确定用户访问权限,比如对数据集的访问、服务请求等。

三是访问控制,要有一个基于细粒度和角色的访问控制机制。

四是数据加密,包括数据处理过程中对中间数据的处理,以及在数据传输和数据存储过程中的处理,都需要引入数据加密的技术。

五是网路安全,是否有一个有效的隔离措施,以及对业务行为的安全控制是否有保障。

六是系统安全,Hadoop大部分是基于Linux操作系统,要有对底层操作系统漏洞的防护。

七是基础架构安全,物理层面的安全以及基于安全架构逐步完善的安全措施。

最后是审计监控,是否能够对所有的用户行为和授权行为等进行有效监控,并基于这些来识别潜在的危险行为。

Hadoop认证授权

Hadoop自身认证模型的缺陷

上图是服务和数据块的结构图。Hadoop使用的是HDFS分布式存储文件系统。当用户登录到DataNode访问数据的时候,用户的权限可以访问到DataNode目录下的所有数据块。这实际上是一个安全风险,因为Hadoop没有对用户、用户组和服务进行有效的认证,当执行Hadoop命令的时只是单单通过whoami确定用户身份,这个过程中黑客可以编写whoami脚本模拟超级用户。

Hadoop需要实现的安全认证

提高Hadoop的安全要从两个层面着手,一是用户层次访问控制,二是服务层次访问控制。

用户层次访问控制,要有对用户和用户组的认证机制。(以下为具体细节)

  • Hadoop用户只能访问授权的数据。

  • 只有认证的用户可以向Hadoop集群提交作业。

  • 用户可以査看、修改和终止他们的作业。

  • 只有认证的服务可以注册为DataNode或TaskTrackero

  • DataNode中数据块的访问需要保证安全,只有认证用户 才能访问Hadoop集群中存储的数据。

服务层次控制,服务之间的互相认证。(以下为具体细节)

  • 可扩展的认证:Hadoop集群包括大量的节点,认证模型需要能 够支持大规模的网络认证。

  • 伪装:Hadoop可以识别伪装用户,保证正确的用户作业隔离。

  • 自我服务:Hadoop作业可能执行很长时间,要确保这些作业可 以自我进行委托用户认证,保证作业完整执行。

  • 安全的IPC : Hadoop服务要可以相互认证,保证它们之间的安全 通信。

Kerberos

Kerberos是Hadoop的安全基础,未来Hadoop的所有安全措施都要基于Kerberos认证原理才能实现。

Kerberos其实是网络的认证协议,可以实现在网络中不传输密码就能完成身份认证。其原理在于通过对称加密算法生成时间敏感的授权票据。下面来看下Kerberos的基本实现原理。

首先Hadoop的客户端向KDC请求,获得授权票据授权(TGT),之后KDC会返回TGT和Session Key给客户端。(TGT是一个特殊的票据,作用在于客户端访问目标服务器的时候,提供一个允许访问的票据,失效时间大概为8到10个小时。Session Key用于加密客服端与服务端通信过程中的数据。)接着客户端会使用TGT向目标服务端请求服务票据,这时KDC会再返回Session Key和目标服务器的服务票据,本次的Session key已经成为了服务器私用的,也就是说Kerberos实现了每个服务端都有一个私钥。最后客户端会使用TGT向目标服务器请求,目标服务器则使用私有Session Key解密,识别客户端为合法请求后返回私有Session Key,并且用私有Session Key加密这段通信。这样客户端和服务端就实现了传输通信上的加密以及身份上的认证。

安全Hadoop加护行为

Kerberos认证使Hadoop拥有了一定的安全能力。由于实现了用户和服务的认证,Hadoop各个组件和用户交互过程中会有三个概念,分别是授权令牌、作业令牌和数据块访问令牌。

客户端向NameNode请求的时候,Kerberos会进行身份认证,这时NameNode会给客户端返回授权令牌,基于令牌客户端可以无需再对Kerberos进行认证就能做后续的操作。

客户端向Hadoop提交作业指令的时候,要确定被认证的用户在Node下的文件权限必须是该认证用户的权限。这时就要依靠作业令牌对权限进行控制。

数据块访问的时候一般都是客户端先向NameNode请求,请求完成之后NameNode会进行认证然后返回授权令牌,这时如果身份合法NameNode会再返回文件块ID以及DataNode的位置信息,最终客户端使用这些信息向DataNode请求相应数据块的信息。这段过程中NameNode和客户端有认证,但DataNode和客户端没有认证,因此就有了数据块的访问令牌,通过这个令牌就平移NameNode和客户端之间的认证信息,实现一次授权两次认证的机制。

整个访问的交互过程一共就三步,第一步是服务向KDC注册,注册内容包括DataNode向NameNode注册,TaskTracker向JobTracker注册。第二步四客户端向KDC注册,通过授权令牌客户端向NameNode的注册。第三步是数据块的注册 ,通过DataNode给数据块的访问令牌识别客户端的相应数据访问权限。以上基本就是Kerberos实现的整个生态体系的认证。

Hadoop网络访问安全

统一身份认证管理机制

关注安全的企业往往都有一套统一身份认证管理机制,用来管理企业内部的终端、网路设备、上网行为等。Kerberos则实现了Hadoop内部的身份认证管理。Kerberos如何和企业统一身份认证管理进行有效结合是实现企业网络生态安全的第一步。

向Hadoop请求的客户端用户需要在EIM(统一身份认证管理系统)中注册身份,再由EIM向终端用户发放Kerberos授权票据,这时客户端会使用该票据向Hadoop请求。整个过程中EIM系统需要和Hadoop的本地KDC进行数据同步,建立跨域信任。

Hadoop网络访问安全

目前主流的Hadoop网络安全措施是通过防火墙将客户端和Hadoop集群进行逻辑隔离。防火墙作为网络层面的控制,对于恶意端口、无用协议进行有效过滤,之后部署有很多Hadoop生态组件工具的网关服务器,客户端用户通过统一登录网关服务器对Hadoop集群进行维护以及提交作业。这样就初步实现了网络层的访问控制、用户的认证授权以及行为的访问控制过滤。

Hadoop网络访问之HUE

随着Hadoop的发展,它又在网关层上引入了开源项目HUE,基本的架构和前面类似,只不过多了HUE的相关功能。HUE可以与EIM系统的身份认证结合,支持LDAP同步用户和用户组信息,采用HttpFS代理,通过SPANWFO-Base认证协议访问SSL加密,实现了细粒度的用户访问控制。

Hadoop网络访问之Know Gateway Server

随后Hadoop又有了Know Gateway Server,它结合了HUE和传统的优势,内部还是以网关的形式做代理,实现了防火墙的功能对端口和协议进行过滤,同时对用户进行细粒度的访问控制,不仅如此,它还是实现了单点登录。

Hadoop数据安全

Hadoop数据传输的通道加密

对于传输数据加密目前Hadoop采用SASL框架,它可以实现客户端向服务端请求过程中的数据加密。SASL分为SSL和Hadoop的RPC协议,SSL用于web层面的数据通道加密,客户端向NameNode以及DataNode请求的时候走的则是RPC协议或者是基于TCP的 HTTP协议。这种情况下就必须封装SASL安全框架进行整体加密,同时SASL还支持JDBC保护,与第三方数据库交互时也能加密。

Hadoop静态数据加密

静态数据的保护我们有两种思路。

第一个是先加密后存储,但是这种方案存在问题。它在向Hadoop存储文件时,首先把整个文件进行加密,然后存储。这样,每个DataNode中数据块无法被解密。因此这种方案是不太可行的。

第二个是加密数据块,确保MapReduce程序可以独立的访问每个数据块,解密逻辑可以在 MapReduce作业中进行。解密密钥需要告诉 MapReduce作业。这种方案是可扩展的。

Hadoop安全审计和监控

Hadoop安全监控要点

用户登录和授权事件:当用户或服务标识在KDC或EIM系统进行认证时会生成用户登录事件,在集中EIM系统(活动 目录或相似系统)将记录用户授权事件。用户向Hadoop 进程每次请求服务票据都会生成日志。

HDFS文件操作错误:当用户访问HDFS , Name Node会验证用户的访问权限。当存在越权访问时会在hadoop日志文件中产生错误事件,Hive 或Pig作业遇到任何访问HDFS 权限问题时都会产生相同的错误。

RPC授权错误:任何对Hadoop进程未授权的访问请求,异常会记录至到Hadoop 安全日志文件中。监控这些异常可以识别未授权访问。

RPC认证错误:Hadoop RPC使用Java SASL APIS进行验证。这个交互过程可以设置质量保护,确保客户端可以安全的联机Hadoop服务,任何中间人攻击导致的验证失效都可以被记录下来。

HDFS敏感文件下载:Hadoop支持记录每一个文件系统操作到HDFS审计日志文件。该审计文件,可以识别哪些用户访问或下载了敏感文件。

MapReduce作业事件:Hadoop支持在日志中记录所有MapReduce 作业提交和执行事件。审计日志会记录作业的提交、启动、査 看和修改行为。因此 该审计文件可以用来识别哪个用户访问和运行了集群上的作业。

Oozie、HUE和 WebHDFS 的访问:用户访问Oozie并进行工作流提交都 会记录到Oozie的审计日志。所有用户与Oozie的交互也会记录到日志,可以用来跟踪执行特定工作流的用户信息。

其他异常:除了用户认证和授权产生的异常,记录Hadoop中任何其他类型的异常也很有用。这些异常提供潜在讯息发现系统的脆弱性,也可以识别潜在的安全事故。

Hadoop安全监控与审计系统

对于Hadoop的安全监控和审计系统也有着相应的开源组件——OSSEC,它是一个基于主机入侵检测系统的开源项目,支持收集Hadoop集群中的各种日志和事件。原理是通过在各个组件内部署日志代理,收集各组件的日志,然后统一汇总到管理端,之后由管理端进行统一展示 ,最后通过制定的安全规则做筛查和告警。

Hadoop审计日志的配置

下图展示的是开启日志的各种方法。

对于Hadoop的安全监控和审计系统也有着相应的开源组件——OSSEC,它是一个基于主机入侵检测系统的开源项目,支持收集Hadoop集群中的各种日志和事件。原理是通过在各个组件内部署日志代理,收集各组件的日志,然后统一汇总到管理端,之后由管理端进行统一展示 ,最后通过制定的安全规则做筛查和告警。

Hadoop安全技术架构总结

上图是Hadoop现有的安全架构。首先是基础设施安全,包括物理安全和Kerberos。操作系统层面采用主机加护的方式,通过白名单的机制对系统的服务、进程、端口、软件等等进行控制,从而抵御非法攻击。应用安全是通过HUE在网关之上提供的一些用户细粒度的访问控制。网络边界安全是利用堡垒机和防火墙的技术实现了网络和应用的控制。数据加密一方面使用SASL框架实现通道加密,一方面使用压缩文件的能力对数据块直接加密。




推荐阅读
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • Oracle主从同步、双向同步的配置
    (本教程展示了Windows环境的oracle数据库主从同步,Linux环境一样也可以)(把主数据库obpm和从数据库orcl用实际的数据库名给替换掉)(配置主从同步后,再配置双向同步,可 ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
  • Oozie任务调度框架详解及使用简介(一)
    摘要:个人最近一段时间一直在使用oozie,从刚开始的各种别扭到现在越来越觉得有意思的情况下,想整理一下关于oozie的认知,整理出来一个oozie系列,本来市面上关于oozie的 ... [详细]
author-avatar
Zhengweiwei313
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有