前言
公司在做安全漏洞掃描。發現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