CDH6.3.2Hadoop默认配置下存在未授权漏洞,禁止匿名访问
前言
公司在做安全漏洞扫描。发现CDH Hadoop默认配置下存在未授权漏洞,攻击者可以在未授权的情况下远程执行代码。需立即修复加固。
1.Hadoop HTTP web-控制台认证
我们安装完hadoop后,默认情况下我们访问UI界面是没有任何安全验证的。现在我想要的是对Hadoop的Web控制台界面加入一些安全机制,最好是能设置用户名和密码,通过用户名密码的方式来访问我们的Hadoop Web控制台。在做之前,我首先想看看官方有没有类似的这样的功能。下面的文档是官方的 《Hadoop HTTP web-控制台认证》 的说明文档:
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/HttpAuthentication.html
从下面的截图可以看到,有一种方法可以进行设置,那我们就先用这种方式来设置一下,看看效果如何。
通过上面的文档介绍,以及参考其他博客的方法,我们做下面的配置
1.1Hadoop web页面的授权设定
1.1.1创建并配置密钥文件
创建 secret 目录,用于存放密钥文件
mkdir /opt/hadoop/secret vim /opt/hadoop/secret/hadoop-http-auth-signature-secret
在 hadoop-http-auth-signature-secret
文件当中写入了 qazwsx$123
1.1.2CDH6.3.2修改HDFS NameNode core-site.xml文件,添加下面配置
<property> <name>hadoop.http.filter.initializers</name> <value>org.apache.hadoop.security.AuthenticationFilterInitializer</value> </property> <!-- 定义用于HTTP web控制台的身份验证。支持的值是:simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME# --> <property> <name>hadoop.http.authentication.type</name> <value>simple</value> </property> <!-- 签名秘密文件,用于对身份验证令牌进行签名。 对于集群中的每个服务,ResourceManager, NameNode, DataNode和NodeManager,应该使用不同的secret。 这个文件应该只有运行守护进程的Unix用户可以读。 --> <property> <name>hadoop.http.authentication.signature.secret.file</name> <value>/opt/hadoop/secret/hadoop-http-auth-signature-secret</value> </property> <!-- 指示在使用“简单”身份验证时是否允许匿名请求。 --> <property> <name>hadoop.http.authentication.simple.anonymous.allowed</name> <value>false</value> </property> <!-- 多少秒没有操作,token将过期。 --> <property> <name>hadoop.http.authentication.token.max-inactive-interval</name> <value>60</value> </property>
参数说明:
参数 | 说明 | 默认值 |
---|---|---|
hadoop.http.filter.initializers | 认证的类 | org.apache.hadoop.security.AuthenticationFilterInitializer |
hadoop.http.authentication.type | 认证类型,有Kerberos和simple | simple |
hadoop.http.authentication.signature.secret.file | 授权用户文件,只有存在于这里面的用户才能访问集群 | $user.home/hadoop-http-auth-signature-secret |
hadoop.http.authentication.simple.anonymous.allowed | 是否允许匿名用户访问 | true |
hadoop.http.authentication.token.max-inactive-interval | 多少秒没有操作,token将过期 | -1 |
1.1.3.CM控制台添加配置
保存更改;
重启;
1.2效果验证
访问web界面,http://127.0.0.1:9870,出现了如下所示的页面:
看起来有效果,按照官方的描述,我们在访问路径后面加user.name参数,值为我们之前设置的值,如:http://127.0.0.1:9870?user.name=qazwsx$123
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY