自今年以来,不少恶意软件开始频繁向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集群免受恶意软件攻击的方法:

1、不要将集群直接暴露给互联网

将集群直接暴露给互联网相当于为恶意软件的攻击提供了便利,DemonBot只需轻易扫描便可锁定目标集群,并利用漏洞发起攻击。

2、使用Kerberos进行强身份验证

Hadoop集群本身提供简单的安全防御手段,但这对于企业而言远远不够,Kerberos成为了不少研发人员的选择。其实,大部分攻击都利用了系统已有漏洞,并不是攻击手段有多高明,这就好比小偷从大开的家门进入一样简单。如果没有Kerberos,任何与集群交互的用户都可以伪装成其他用户,甚至不需要特定密钥,任何用户都可以执行任何操作,类似于一个所有人都知道root密码的Linux系统
在一个正确配置且使用Kerberos进行身份验证的Hadoop集群中, 用户与集群进行任何交互都必须输入凭据(如用户名和密码)以证明自己的身份和权限,此验证提供了用户和管理员期望的安全性:用户在系统中的功能无法被他人访问,只有管理员可以访问管理帐户。
如果没有Kerberos,任何人都可以访问Hadoop集群并执行各种操作。安全研究人员在Hack.lu会议上演示的攻击案例就是提交一个简单的YARN作业,并在集群的所有机器上执行代码,这可用于在该集群的每台机器上获取shell。XBash发起的攻击之一就是使用Metasploit模块向YARN提交比特币挖掘工作。DemonBot使用相同的技术对受感染的Hadoop服务器运行DDoS攻击。这种攻击并不复杂,目标Hadoop服务器连接到开放式互联网,并且未启用Kerberos身份验证。

3、勾选安全服务

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集群三大方法的更多相关文章

  1. hadoop集群配置方法---mapreduce应用:xml解析+wordcount详解---yarn配置项解析

    注:以下链接均为近期hadoop集群搭建及mapreduce应用开发查找到的资料.使用hadoop2.6.0,其中hadoop集群配置过程下面的文章都有部分参考. hadoop集群配置方法: ---- ...

  2. Hadoop 3.0完全分布式集群搭建方法(CentOS 7+Hadoop 3.2.0)

    本文详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是3.2.0,JDK版本是1.8. 一.准备环境 1. 在VMware worksta ...

  3. Hadoop 2.0完全分布式集群搭建方法(CentOS7+Hadoop 2.7.7)

    本文详细介绍搭建4个节点的完全分布式Hadoop集群的方法,Linux系统版本是CentOS 7,Hadoop版本是2.7.7,JDK版本是1.8. 一.准备环境 1. 在VMware worksta ...

  4. 沉淀,再出发——手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群

    手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群 一.准备,再出发 在项目启动之前,让我们看一下前面所做的工作.首先我们掌握了一些Linux的基本命令和重要的文件,其次我们学会 ...

  5. Hadoop集群+Spark集群搭建(一篇文章就够了)

    本文档环境基于ubuntu16.04版本,(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢) 一.准备 1.1 软件版本 Ub ...

  6. Hadoop集群nodes unhealthy解决方法

    在搭建好Hadoop集群之后,所有服务均可正常启动,但是在运行MapReduce程序的时候,发现任务卡在7/09/07 22:28:14 INFO mapreduce.Job: Running job ...

  7. Hadoop集群配置免密SSH登录方法

    Hadoop集群包含1个主节点和3个从节点,需要实现各节点之间的免密码登录,下面介绍具体的实现方法. 一.Hadoop集群环境 二.免密登录原理 每台主机authorized_keys文件里面包含的主 ...

  8. Hadoop集群(第1期)_CentOS安装配置

    CentOS 是什么? CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 CentOS 都会获得七年的支持(通过安全更新方式 ...

  9. [How to]HBase集群备份方法

    1.简介 当HBase数据库中存在非常重要的业务数据的时候为了保护数据的可以对数据进行备份处理.对于HBase来说从备份操作来看可分为离线备份和在线备份. 2. 前准备 在测试环境上准备有哦两套HBa ...

随机推荐

  1. 判断一个正整数是否是2的N次方的简洁算法及其证明

    在写代码时遇到了“判断一个正整数是否是2的N次方”的问题,不想调用 java.lang 的 Math 类库进行浮点运算,觉得转换为浮点不是个好办法. 遂在网上搜索了一下,发现有人列出来好几种写法,列举 ...

  2. easyui---基础组件:dialog

    依赖下面两个组件 window linkbutton linbutton组件:就是超链接变成按钮 $(function(){ $("#linkbuttonid").linkbutt ...

  3. ubuntu16.04配置tensorflow-gpu环境

    1.安装驱动 参考: 史上最全的ubuntu16.04安装nvidia驱动+cuda9.0+cuDnn7.0 https://blog.csdn.net/qq_31215157/article/det ...

  4. 2.1TF模型持久化

    目前tf只能保存模型中的variable变量,整个模型还不能保存,版本1.x 保存模型代码 import tensorflow as tf import numpy as np # Save to f ...

  5. codeforces 883H - Palindromic Cut - [字符串处理]

    题目链接:http://codeforces.com/problemset/problem/883/H Time limit: 3000 ms Memory limit: 262144 kB Koly ...

  6. JNUOJ 1187 - 哨兵

    Time Limit: 10000ms Memory Limit: 262154KB 64-bit integer IO format: %lld      Java class name: Main ...

  7. SQL Fundamentals || Single-Row Functions || 字符函数 character functions

    SQL Fundamentals || Oracle SQL语言   SQL Fundamentals: Using Single-Row Functions to Customize Output使 ...

  8. Thymeleaf模板引擎的初步使用

    在springboot中,推荐使用的模板引擎是Thymeleaf模板引擎,它提供了完美的Spring MVC的支持.下面就简单的介绍一下Thymeleaf模板引擎的使用. 在controller层中, ...

  9. Jmeter(十六)_beanshell实现字符串加密

    Jmeter内置的没有MD5加密方法,所以需要写一些java代码实现加密功能,以下是具体操作: 1:用eclipse建个工程(包名.类名.方法名自己起) package com.wjika.test; ...

  10. (转)Spring实现IoC的多种方式

    原文地址:http://www.cnblogs.com/best/p/5727935.html 目录 一.使用XML配置的方式实现IOC 二.使用Spring注解配置IOC 三.自动装配 四.零配置实 ...