【干货】如何保护Hadoop集群免受恶意软件攻击!
有两个新的恶意软件,XBash和DemonBot,是针对Apache Hadoop服务器比特币挖矿和DDOS目的。这种恶意软件疯狂扫描互联网寻找Hadoop集群,当有未设安全的集群连接到公共互联网上,几分钟内便可被感染。本文将描述此恶意软件使用的机制,并提供保护Hadoop群集的相应操作。
Hadoop恶意软件的历史
大约两年前,对开源数据库解决方案MongoDB以及Hadoop发生了大量攻击。这些攻击来自勒索软件:攻击者擦除或加密数据,然后要求赎金来恢复数据。就像最近的攻击一样,当时受影响的唯一Hadoop集群是那些直接连接到互联网并且没有启用安全功能的集群。Cloudera曾在2017年1月发布了一篇关于此威胁的博客。该博客阐述了如何确保Hadoop集群不直接连接到互联网,并建议启用Cloudera的安全和治理功能。
XBash和DemonBot的起源故事说明了安全研究人员如何看待Hadoop生态系统和漏洞的生命周期。 在2016年卢森堡的Hack.lu会议上,两位安全研究人员发表了题为“Hadoop Safari:寻找漏洞”的演讲。 他们描述了Hadoop及其安全模型,然后针对没有启用安全功能的集群提出了一些“攻击”。这些攻击类似于在大门敞开时闯入房屋。
使用Kerber进行强身份验证
这些攻击受到基本安全功能的阻碍,该功能多年来一直是hadoop的一部分:使用Kerberos进行强身份验证。如果没有Kerberos,任何与集群交互的用户都可以伪装成任何其他用户,不需要特定验证,任何用户都可以像任何用户那样执行任何操作。就好比在Linux系统中每个人都知道root密码。
但是,在正确配置的群集中,Kerberos用于身份验证。这意味着要与群集进行交互,用户必须首先输入认证(如用户名和密码)以证明他们是他们所说的人。此身份验证提供了用户和管理员期望的安全性:用户在系统中具有某些功能,他们无法模拟其他人,只有管理员可以访问管理帐户。
但是,如果没有Kerberos,任何人都可以接触Hadoop集群做各种不好的事情。安全研究人员在Hack.lu建议的一个示例攻击是提交一个简单的YARN作业在集群中的所有机器上执行代码。这可以用来在该集群中的每台机器上获取shell。
观察一个真实的攻击
为了观察攻击的真实性,我们用Cloudera Altus创建了一个Hadoop集群。Altus是一个云服务平台,该服务使用CDH在公共云基础架构内大规模分析和处理数据。虽然使用Altus创建不受这些攻击影响的安全集群很简单,但也可能将Altus集群设置成易受攻击。
在Altus中,要使集群易受攻击,就不要勾选Secure Clusters的框,也不要用AWS安全组,允许来自互联网上任何位置的传入流量。在创建这个对世界敞开的不安全的集群的几分钟内,我们就观察到了攻击行动。 YARN Web UI显示了许多正在提交和运行的作业:
大约每分钟一次,DemonBot试图利用集群。对我们来说幸运的是,由于DemonBot本身的错误配置(换句话说,我们很幸运),这些攻击失败了。
教训:如果你放一个不安全的群集,它一定会受到攻击。
Cloudera Altus的安全保障
现在我们已经看到了一个不安全的集群会发生什么,那让我们来设置一个更安全些的集群。 我们的目标是
1.仅允许从一组有限的计算机对群集进行SSH访问
2.使用Kerberos启用强身份验证
好在这在Altus中很容易配置。在Altus中,集群是在环境内创建的。一个环境会描述如何访问用户的云帐号及其包含的资源。它还指定了如何创建集群的一些基本内容。因此,我们感兴趣的配置选项出现在Altus环境中。创建环境有两种方法:通过简单的快速入门过程或通过设置向导有更大的灵活性。
快速入门过程当然是最简单的。创建环境时,选择“Environment Quickstart”路径,然后选择“Secure Clusters”中的“Enable”复选框:
完成!启用安全群集后,就启用了Kerberos。 Quickstart路径还将创建了一个外部世界无法访问的安全组,防范DemonBot和XBash等漏洞。我们在此环境中创建了这样一个集群,当然就没有在集群上发生攻击。
如果需要使用环境创建向导,也可以选择像“快速启动”中的“安全群集”复选框。 不同之处在于,在向导中,您必须自己提供安全组。创建此安全组时,请确保它仅允许从Altus IP地址进行SSH访问。
总结
互联网是Hadoop集群的危险场所。 因此,我们建议如下:
- 不要将群集直接暴露给互联网
- 始终启用Kerberos身份验证
- 使用Altus时,选择“Secure Clusters”复选框
通过这些简单的步骤,您的Hadoop集群将受到保护,免受此处描述的攻击类型的影响。