保护Hadoop集群三大方法
自今年以来,不少恶意软件开始频繁向Hadoop集群服务器下手,受影响最大的莫过于连接到互联网且没有启用安全防护的Hadoop集群。
大约在两年前,开源数据库解决方案MongoDB以及Hadoop曾遭受过大量恶意攻击,这些攻击后被统称为“勒索软件”,因为其攻击者会擦除或加密数据,然后向被攻击者索要资金以恢复数据。自今年以来,不少恶意软件开始频繁向Hadoop集群服务器下手,受影响最大的莫过于连接到互联网且没有启用安全防护的Hadoop集群。
一直以来,Hadoop集群服务器都是一个非常稳定的平台,因此企业愿意选择搭建并使用。但是,自9月下旬以来,被攻击的服务器已经从最初的每天几台发展到70多台,DemonBot(新型的恶意软件)可以主动在网上搜索易受攻击的Hadoop集群服务器并对其发起进攻。一家名为Radware的网络安全公司跟踪DemonBot发现,其每天可以发起超过一百万次的尝试。
虽然很多安全研究人员尝试扫描并解决DemonBot,但最终只是找寻到了部分踪迹。唯一被证实的是,直到真正的DDos攻击发生的前一秒,机器都是保持沉默的。目前只知道DemonBot的DDoS攻击向量是UDP和TCP floods。
目前可知的攻击过程
据查证,DemonBot利用了企业网络中使用的资源调度系统——YARN模块中未经身份验证的远程代码执行漏洞以进行集群资源管理和作业调度。自今年3月起,GitHub上就出现了证明安全漏洞概念的验证代码。目前看来,问题似乎是YARN中的配置错误导致的,它暴露了REST
API并允许远程应用程序向集群添加新的作业。YARN提供有默认开放在8088和8090的REST
API(默认前者)允许用户直接通过API进行相关的应用创建、任务提交执行等操作,如果配置不当,REST
API将会开放在公网导致未授权访问的问题发生。利用这种疏忽,攻击者可以轻易提交DemonBot恶意软件。
Radware表示,目前处于离线状态的恶意软件代码引用了名为Owari的Mirai变种。然而,由于代码中出现了不熟悉的函数名称和逻辑,研究人员决定将其命名为DemonBot,并标记为新的恶意软件。研究人员已经在Pastebin上发现了完整的恶意软件源代码,由一个别名为Self-Rep-NeTiS的人创建,其中包含部分源代码以及用于创建多平台机器人的脚本。
自今年以来,新的恶意软件——XBash和DemonBot发动了多起针对Apache Hadoop集群服务器进行的比特币挖掘和DDoS攻击。这种恶意软件可以扫描互联网上的所有Hadoop集群,不安全的集群一被放置在互联网上,几分钟内就可能被感染。
保护Hadoop集群免受恶意软件攻击的方法:
将集群直接暴露给互联网相当于为恶意软件的攻击提供了便利,DemonBot只需轻易扫描便可锁定目标集群,并利用漏洞发起攻击。
Hadoop集群本身提供简单的安全防御手段,但这对于企业而言远远不够,Kerberos成为了不少研发人员的选择。其实,大部分攻击都利用了系统已有漏洞,并不是攻击手段有多高明,这就好比小偷从大开的家门进入一样简单。如果没有Kerberos,任何与集群交互的用户都可以伪装成其他用户,甚至不需要特定密钥,任何用户都可以执行任何操作,类似于一个所有人都知道root密码的Linux系统。
在一个正确配置且使用Kerberos进行身份验证的Hadoop集群中, 用户与集群进行任何交互都必须输入凭据(如用户名和密码)以证明自己的身份和权限,此验证提供了用户和管理员期望的安全性:用户在系统中的功能无法被他人访问,只有管理员可以访问管理帐户。
如果没有Kerberos,任何人都可以访问Hadoop集群并执行各种操作。安全研究人员在Hack.lu会议上演示的攻击案例就是提交一个简单的YARN作业,并在集群的所有机器上执行代码,这可用于在该集群的每台机器上获取shell。XBash发起的攻击之一就是使用Metasploit模块向YARN提交比特币挖掘工作。DemonBot使用相同的技术对受感染的Hadoop服务器运行DDoS攻击。这种攻击并不复杂,目标Hadoop服务器连接到开放式互联网,并且未启用Kerberos身份验证。
Cloudera的工程师使用Cloudera Altus创建了一个Hadoop集群。Altus是一个云服务平台,其能够使用CDH在公有云基础架构内大规模分析和处理数据。虽然使用Altus创建不受这些攻击影响的安全集群很简单,但也可以设置易受攻击的集群。
在Altus中,制作易受攻击的集群意味着不要选中Secure
Clusters,也不要使用允许互联网上任何位置传入流量的AWS安全组。在创建对世界开放的不安全集群的几分钟内,我们就可以观察到攻击行动。YARN
Web UI会显示许多正在提交和运行的作业:DemonBot大约每隔一分钟就会对集群发起攻击。
要想设置一个更加安全的集群,我们需要满足两大目标:一是仅允许从一组有限的计算机对集群进行SSH访问;二是通过Kerberos启用强身份验证,这在一些工具中很容易实现,比如Cloudera
Altus。在Cloudera
Altus中,集群是在环境中创建的,环境描述了如何访问用户的程序帐户及其包含的资源,指定了创建集群的基础知识。因此,我们需要重点注意的是Altus环境配置。创建环境有两种方法:一是通过简单的快速入门或设置向导,快速入门教程当然最简单。创建环境时,选择“Environment
Quickstart”,然后选择“Secure Clusters”的“Enable”即可。
启用安全集群后,将启用Kerberos。Quickstart还将创建一个外部世界无法访问的安全组
,我们在此环境中创建的集群,基本不会被现有恶意软件攻击。如果需要使用环境创建向导,可以单击“ Quickstart”中的“Secure
Clusters”。不同的是,在第二种方式中,用户必须自己提供安全组。创建安全组时,请确保它仅允许从Altus
IP地址进行SSH访问。当然,无论你选择什么工具和平台,都需要保证勾选了安全服务,国内各大厂商在设计时应该都将其考虑在内了。
结论
综上,企业在搭建Hadoop集群时需要注意三点:一是不要将集群直接暴露给互联网;二是始终启用Kerberos身份验证;三是选用合适的平台或者工具时需要确保勾选了安全服务。
保护Hadoop集群三大方法的更多相关文章
- hadoop集群配置方法---mapreduce应用:xml解析+wordcount详解---yarn配置项解析
注:以下链接均为近期hadoop集群搭建及mapreduce应用开发查找到的资料.使用hadoop2.6.0,其中hadoop集群配置过程下面的文章都有部分参考. hadoop集群配置方法: ---- ...
- Hadoop 3.0完全分布式集群搭建方法(CentOS 7+Hadoop 3.2.0)
本文详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是3.2.0,JDK版本是1.8. 一.准备环境 1. 在VMware worksta ...
- Hadoop 2.0完全分布式集群搭建方法(CentOS7+Hadoop 2.7.7)
本文详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是2.7.7,JDK版本是1.8. 一.准备环境 1. 在VMware worksta ...
- 沉淀,再出发——手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群
手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群 一.准备,再出发 在项目启动之前,让我们看一下前面所做的工作.首先我们掌握了一些Linux的基本命令和重要的文件,其次我们学会 ...
- Hadoop集群+Spark集群搭建(一篇文章就够了)
本文档环境基于ubuntu16.04版本,(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢) 一.准备 1.1 软件版本 Ub ...
- Hadoop集群nodes unhealthy解决方法
在搭建好Hadoop集群之后,所有服务均可正常启动,但是在运行MapReduce程序的时候,发现任务卡在7/09/07 22:28:14 INFO mapreduce.Job: Running job ...
- Hadoop集群配置免密SSH登录方法
Hadoop集群包含1个主节点和3个从节点,需要实现各节点之间的免密码登录,下面介绍具体的实现方法. 一.Hadoop集群环境 二.免密登录原理 每台主机authorized_keys文件里面包含的主 ...
- Hadoop集群(第1期)_CentOS安装配置
CentOS 是什么? CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 CentOS 都会获得七年的支持(通过安全更新方式 ...
- [How to]HBase集群备份方法
1.简介 当HBase数据库中存在非常重要的业务数据的时候为了保护数据的可以对数据进行备份处理.对于HBase来说从备份操作来看可分为离线备份和在线备份. 2. 前准备 在测试环境上准备有哦两套HBa ...
随机推荐
- 170821、本地代码上传gitlub
第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令 git init #初始化项目 第二步:将项目的所有文件添加到仓库中 git add . 或者git add -A #如果想添加某个 ...
- opengl学习笔记(五):组合变换,绘制一个简单的太阳系
创建太阳系模型 描述的程序绘制一个简单的太阳系,其中有一颗行星和一颗太阳,用同一个函数绘制.需要使用glRotate*()函数让这颗行星绕太阳旋转,并且绕自身的轴旋转.还需要使用glTranslate ...
- 安装支持eigen线性迭代的ceres_solver
Ceres可以求解以下形式的有界约束非线性最小二乘问题: 这种形式的问题来源于科学工程的多个领域,从统计学的曲线拟合到计算机视觉中从图像中构建三维模型. 最近在做sfm方面的重建问题,需要对得到的相机 ...
- python的笔记
np.argsort(x):返回数据x从小到大的索引值,记住是一个索引值.当你想获取从小到大的数据的时候,用到这个 data[::-1]:对数据data进行倒转 a=[0,1,2,3,4,5] a[: ...
- CodeForces - 950D A Leapfrog in the Array 玄学题
题意:n个数1~n(n<=1e18)依次放在一个数组中,第i个数位置为2i-1,其它地方是空的.现在重复以下操作:将最右边的数放到离其左边最近的空的位置,直到所有数移到前一半的位置中.有q< ...
- Rhino
http://shrinksafe.dojotoolkit.org/ a JavaScript interpreter
- ndk http://www.th7.cn/Program/Android/201412/334955.shtml
http://www.th7.cn/Program/Android/201412/334955.shtml http://ruikye.com/2014/08/30/androidstudio_ndk ...
- 自动布局又出问题-HPPGCTableViewCell
[self.firstComment mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(sel ...
- sql中select into和insert into的区别
select into主要是作用于没有新建表,在复制数据的时候新建 insert into主要作用于已经新建了一个表,直接把要复制的数据复制到新建好的表中
- 洛谷P3806 点分治1 & POJ1741 Tree & CF161D Distance in Tree
正解:点分治 解题报告: 传送门1! 传送门2! 传送门3! 点分治板子有点多,,,分开写题解的话就显得很空旷,不写又不太好毕竟初学还是要多写下题解便于理解 于是灵巧发挥压行选手习惯,开始压题解(bu ...