Hadoop 未授权访问【原理扫描】及Apache Hadoop YARN 资源管理器 REST API未授权访问漏洞【原理扫描】修复记录

时间:2024-02-23 17:58:46

Hadoop相关未授权访问漏洞风险较高且使用hadoop的用户比较多,经常在安全检查用遇到这两个漏洞。

修复方法也就是按绿盟扫描器提供的方法:

一、对于Apache Hadoop YARN 资源管理器 REST API未授权访问漏洞【原理扫描】:

方法1.在防火墙上设置“安全组”访问控制策略,将 HadoopWebUI(8088) 等相关端口限制可信任的 IP 地址才能访问。

方法22.将默认认证方法改为KerBeros认证。

但我目前遇到过的管理员没有愿意将hadoop采用KerBeros认证的,看了一下KerBeros的认证机制以及大佬们的总结,明白了大家不愿意使用KerBeros认证的原因:

① Hadoop集群节点数多,配置和维护一个使用kerberos系统高性能,稳定的hadoop集群难度非常高。
② Hadoop中的hdfs是一个文件系统,用户的认证和授权比较复杂,难度不低于linux系统的用户和组管理。加上kerberos后,用户和用户组的管理更加复杂,通常一个合适的用户不能访问hdfs上的文件。
③ Hadoop加上kerberos后,通常原来的用户和文件,可能都失效导致数据流失。尤其是一些根目录,往往需要格式化整个系统才能使用。增加一个新用户也是比较难的。因为要考虑各个节点间的访问权限。

总之就是操作起来太过复杂,不方便管理,限制端口访问相比之下操作相当简单了。

二、对于Hadoop相关未授权访问漏洞:

方法1.在防火墙限制可信任IP才可访问50070端口。

方法2.开启身份验证 ,防止未经授权用户访问。

① 开启服务级认证授权,需要在core-site.xml文件中开启参数hadoop.security.authorization,将其设置为true,并且重启hadoop。

<property>  
  <name>hadoop.security.authorization</name>  
  <value>true</value>  
</property>  

(hadoop.security.authorization若为false则不经过任何验证,所有用户拥有全部权限)
② 针对具体的各个服务的认证,在配置文件hadoop-policy.xml中对各个服务属性配置用户或组。
目前只需要针对客户端哪些用户能够访问namenode即可,即修改参数security.client.protocol.acl和security.job.submission.protocol.acl的值。

每次修改hadoop-policy.xml中的值,要执行刷新操作:
更新namenode相关属性:bin/hadoop dfsadmin –refreshServiceAcl
更新jobtracker相关属性:bin/hadoopmradmin –refreshServiceAcl

(默认有10个服务,每个服务的默认值都是*,表示的就是任何的用户都可以对其进行访问。)