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個服務,每個服務的默認值都是*,表示的就是任何的用戶都可以對其進行訪問。)