freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Hadoop大数据平台安全防护
2024-08-29 11:32:19

一、引言

Hadoop是一款由Apache基金会推出的分布式系统框架,它通过MapReduce 算法进行分布式处理。Hadoop在大数据环境中负责最底层的操作,MapReduce负责数据处理,HDFS则是一种特殊的文件系统,其用来存储Hadoop里的数据。而在这两者之上的Yarn是Hadoop集群的资源管理器。如下图所示:

1724900492_66cfe48c887459c6efcaf.png!small

图1 Hadoop运行框架图

大数据已经渗透到当今每个行业和业务职能领域,其在公司的业务中发挥着重要的作用。目前公司的信息系统已经搭建并接入了Hadoop大数据相关的业务。

二、现象描述

大数据平台一般有HDFS、MapReduce和YARN作为基础组件,并在上层使用Mongodb、Zookeeper等组件,在默认情况下,Hadoop大数据平台的组件hdfs和MR会监听下面端口:

类型

进程

默认端口

配置参数

HDFS

Namenode

50070

dfs.http.address

Datanodes

50075

dfs.datanode.http.address

Secondarynamenode

50090

dfs.secondary.http.address

Backup/Checkpoint node

50105

dfs.backup.http.address

MR

Jobracker

50030

mapred.job.tracker.http.address

Tasktrackers

50060

mapred.task.tracker.http.address

表1 监听列表

在实际业务环节中,还会运行ZooKeeper、Mongodb等第三方应用组件。

在大数据平台部署过程中,一般会存在的漏洞如下所示:

1.NameNode节点的WEBUI未授权访问

默认情况下NameNode的WEBUI处于无认证状态,通过访问 NameNode WebUI 管理界面的 50070 端口,在文件目录浏览处可以下载任意文件。

验证方法如下:

使用浏览器访问NameNode节点的50070端口,http://x.x.x.x:50070,然后访问目录浏览页面,可以直接下载文件。

1724900655_66cfe52f6573d063c154a.png!small

图2 Namenode未授权访问验证-1

1724900665_66cfe539aad4ce7a089c7.png!small

图3 Namenode未授权访问验证-2

2.DataNode节点Restful API未授权访问

默认情况下DataNode的API接口处于无认证状态,DataNode 的API监听端口 50075对外开放,攻击者可以通过 HDSF 提供的 Restful API 对 HDFS 存储的数据进行操作。

验证方法如下:使用hdfsbrowser.py对NameNode进行检测。

1724900682_66cfe54a37fcdd5ab5ac8.png!small

图4 datanode未授权访问图

3.集群环境配置文件任意获取

由于Hadoop整体的安全防护比较弱,集群的配置文件没有得到有效的防护,使用工具,可以在未授权的情况下,直接获取hadoop集群的环境配置文件。

验证方法如下:

1724900697_66cfe559ac3e35fd5bd30.png!small

图5 datanode未授权访问图

4.第三方管理控制台配置文件及算法代码泄露

Hadoop集群的第三方Web管理平台Cloudera Manager存在未授权下载漏洞,通过遍历ID号,可以直接下载用户配置的项目配置文件、MapReduce算法文件。

验证方法如下:

通过hackbar对URL中的services的ID号进行遍历,可以获得配置文件和算法的源代码的压缩包。

1724900728_66cfe5786224d46c2ed14.png!small

图6 用户配置文件任意下载

5.集群配置文件泄露

由于集群默认没有开启认证,可直接在原生WebUI(HDFS WebUI/ JobHistory/ ResourceManager)中请求/conf,直接获取该集群的配置文件。

验证方法:

使用浏览器直接访问集群的8088端口,访问路径为/conf,可得到配置文件。

1724900754_66cfe59212b5cb5d245b2.png!small

图7 配置文件泄露

6.zookeeper组件的未授权访问

hadoop大数据平台会使用ZooKeeper作为服务发现的注册中心,但其存在未授权访问漏洞,可以导致任意用户在网络可达的情况下进行未授权访问并读取配置数据。

验证方法:

使用命令 echo envi|nc x.x.x.x 2181,如果存在漏洞的话,会返回当前Zookeeper集群中的配置信息。

1724900768_66cfe5a0e7e4cfe542411.png!small

图 8 组件未授权访问

7.Mongodb未授权访问

MongoDB数据库默认配置下没有权限验证,可以通过默认的27017端口,进行无需密码远程访问数据库。

验证方法:

使用nmap的Mongodb-databases脚本,可以识别出Mongodb数据库是否处于未授权访问状态

1724900786_66cfe5b240abc6c1439b5.png!small

图 9 Mongodb组件未授权访问

1724900855_66cfe5f72d5fef26336f0.png!small

图 10 Mongodb组件未授权访问

三、处理过程/主要做法

出现上述存在的问题,是因为hadoop在设计之初,没有完全考虑到安全认证的问题,虽然支持认证,但是默认没有开启。

安全加固方案:

1)在hadoop的整个集群中全面开启Kerberos认证,开启方法由于集群的不同,需要参考官方文档:http://hadoop.apache.org/docs/r2.7.3/hadoop-auth/Configuration.html;

如下示例:

修改hadoop的配置文件。

1724902144_66cfeb00a7cc5374c4d83.png!small

图9 hadoop的配置文件

2)关闭不需要对外提供服务的端口,或者使用iptables做访问限制;

3)及时升级hadoop集群的第三方管理组件,如Cloudera Manager、ranger等。

4)针对ZooKeeper的未授权访问,配置网络访问限制和增加认证配置,可以参考如下配置:

a)增加一个认证用户
指令:addauth digest 【用户名】:【密码】
示例:addauth digest user1:password1
b)设置权限
指令:setAcl 【path】 auth:【用户名】:【密码】:【权限】

示例: setAcl / auth:user1:password1:crwda

注:CREATE、READ、WRITE、DELETE、ADMIN,即增、删、改、查、管理权限,简写为crwda
c)查看Acl设置
指令:getAcl 【path】

示例:getAcl /

d)授权完成后,启用另一个会话连接访问该zookeeper服务时,将出现如下提示:

1724902202_66cfeb3abe490105fbb1a.png!small

图10 认证授权

5)针对Mongodb的未授权访问,配置网络访问限制和增加用户名密码认证,下面是参考方案。

    1. 在system.user中添加用户,启动认证
    2. 通过CLI连接到Mongodb数据库中,增加admin权限的用户(以“admin:adminz”为例)

[mongodb@rac3 bin]$ ./mongo 127.0.0.1:27017

MongoDB shell version: 2.0.1

connecting to: 127.0.0.1:27017/test

> use admin

switched to db admin

> db.addUser("admin", "adminz")

{ "n" : 0, "connectionId" : 4, "err" : null, "ok" : 1 }

{

"user" : "admin",

"readOnly" : false,

"pwd" : "51a481f72b8b8218df9fee50b3737c44",

"_id" : ObjectId("4f2bc0d357a309043c6947a4")

}

> db.auth("admin","adminz")

1

> exit

bye

四、经验总结

密切跟踪信息系统新业务、新技术的应用情况,并及时跟进信息安全漏洞公布情况,在新建或接入相关hadoop的业务时,通过上述加固方法,对hadoop集群进行安全加固,可有效防止hadoop数据的泄露,及提高信息系统的安全性。

# 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录