保护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 ...
随机推荐
- Django---路由如何配置
具体配置在项目配置文件夹下的 urls.py: from index import views urlpatterns = [ path('admin/', admin.site.urls), pat ...
- Linux 常用命令标记
1.linux 服务器之间拷贝文件 scp 本地用户名@IP地址:文件名1 远程用户名@IP地址:文件名2 该命令可以变型为目的服务器204上输入如下命令:红色部分是需要接受目的地,-r是递归复制该文 ...
- 对crf++的template的理解 ©seven_clear
这是以前的一篇草稿,当初没写完,今天发出来,但总觉得水平有限,越学越觉得自己菜,写的博客水准低,发完这篇以后就谨慎发博了,毕竟自己菜,不能老吹B,下面是原稿. 好久没更了,本来年前想写篇关于爬虫的总结 ...
- SqlServer数据库查询表信息/列信息(列ID/列名/数据类型/长度/精度/是否可以为null/默认值/是否自增/是否是主键/列描述)
查询表信息(表名/表描述) Value ) AS value FROM sysobjects a Where a.xtype = 'U' AND a.name <> 'sysdiagram ...
- CCCC L2-005. 集合相似度
https://www.patest.cn/contests/gplt/L2-005 题解:直接set的count函数 坑 :要用容斥原理算两个集合的并,否则超时.(我还以为要打表呢) #includ ...
- 钱币兑换问题--hdu1284(完全背包)
Problem Description 在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法.请你编程序计算出共有多少种兑法. Input 每行只有一个正整数N,N小于32768. ...
- 聊一聊Linux中的工作队列2
上一篇文章对工作队列原理以及核心数据结构做了简单介绍,本文重点介绍下workqueue的创建以及worker的管理. 一.工作队列的创建(__alloc_workqueue_key) struct w ...
- sass不识别中文字符的问题
进入Koala安装目录,例如:C:\Program Files (x86)\Koala\rubygems\gems\sass-3.4.9\lib\sass 或者 C:\Ruby\lib\ruby\ge ...
- mysql 数据备份与恢复
1.mysql的备份 命令:"mysqldump -u root -p 数据库名 [表名] > 备份文件名" 不写表名默认备份所有整个数据库. 注意:备份的文件中没有创建数据 ...
- sql优化 慢查询分析
查询速度慢的原因很多,常见如下几种 SQL慢查询分析 转自:https://www.cnblogs.com/firstdream/p/5899383.html 1.没有索引或者没有用到索引(这是查询慢 ...