hadoop安全機制Kerberos詳細介紹

2021-07-06 10:52:43 字數 3170 閱讀 1410

系統,它避免了將密碼(包括密碼hash)在網上傳輸,而是將密碼作為對稱加密的金鑰,通過能不能解密來驗證使用者的身份;

2、kerberos在驗證完使用者身份後會發給使用者ticket,這個ticket包含了使用者的授權,使用者拿著這個ticket去享受各種服務,所以在kerberos管理的範圍內使用者只需要登入一次就可以享用所有的服務;

d不提供kerberos的ticket初始化,需要自己改造一下)都必須是kerberos域的成員;

被稱為kdc(key distribution center),它知道所有使用者和服務的密碼。這就是kerberos伺服器;

5、類似nis 的name domian(域)在kerboeros被稱為realm,kerberos可以管理多個realm;

6、在kerberos域(realm)中每新增乙個服務或者使用者就要新增一條principal,每個principal都有乙個密碼。使用者principal的密碼使用者自己記住,服務的principal密碼服務自己記錄在硬碟上(keytab檔案中);

7、使用者principal的命名類似elis/[email protected],形式是使用者名稱/角色/realm域。服務principal的命名類似ftp/[email protected],形式是服務名/位址(提供者)/realm域;

/nf和/var/kerberos/krb5kdc/下,資料庫在/var/kerberos/krb5kdc/princical;

過程完成,之後的通訊使用tgt key加密;

好;e> 登入服務過程完成,整個過程中大家都不知道對方的密碼,密碼也沒有在網路中傳輸過。之後使用者與服務的通訊使用session key來加密;

11、可以使用dns srv記錄來尋找realm,預設realm也可以通過dns的txt記錄來設定。但是由於dns還是比較容易被偽造和攻擊,在配置檔案中直接寫上realm和預設realm是比較安全的;

(krb5_util create)時是需要密碼的,以後管理kdc或更改princical都需要這個密碼。但是kerberos在系統啟動時卻並不會停下來請求使用者輸入密碼。這是因為kerberos將密碼存在乙個藏起來的檔案裡面了(當然也可以讓它不這麼幹,建立時不使用 -s選項就行);

了它的密碼)到本地來(存放在/var/kerberos/krb5kdc/kadm5.keytab),並用ktadd命令做好關聯(此命令用於將kdc中的密碼dump到本地);

14、kadmin可以通過/var/kerberos/krb5kdz/kadmin5.acl設定相當靈活的(控制可否新增、刪除、修改、修改密碼、查詢、瀏覽principals)acl;

15、雖然預設使用udp,但rhel使用的mit kdc也可以設定tcp埠同樣監聽。kerberos服務的實現除了mit kdc還有microsoft kdc(用於ms域)等;

16、對稱加密的演算法可以在配置檔案裡設定;

程式(聲名自己支援kerberos的);

18、部署kerberos服務只需要配置好nf(可以設定ticket更新時間,是否forward ticket,最小uid之類的)後,在kdc中新增好princical,然後將密碼dump回本地存為keytab給服務(如果服務原生不支援,但是支援pam的話可以嘗試一下在pam中使用pam_krb5.so來間接支援)去用就ok了;

19、臨時ticket被儲存在/tmp/目錄下,名稱是krb5cc_uid;

的密碼的版本號(每改一次密碼,版本號就會步進一次),kvno可以檢視kdc中儲存的密碼的版本號(在客戶端使用,有tgt才能用),一對比就能知道本地是否dump了最新的密碼回來。這招在除錯kerberos時很有用;

21、kerberos自身的安全工作如何做?

a> kerberos的安全是建立在主機都是安全的而網路不是安全的假定之上的。所以kerberos的安全其實就在於把主機的安全做好;

b> 尤其是kdc那台機器的安全。出於安全的考慮,跑kdc的機器上不能再跑別的服務,如果kdc被攻陷了,那麼所有的密碼就全部洩露了;

c> 如果只是服務的機器被攻陷了,那麼更改服務的principal的密碼即可;

d> 如果是使用者的機器被攻陷了,那麼在ticket超時(一般是數小時的時間裡)之前,使用者都是不安全的,攻擊者還有可能嘗試反向使用者的密碼;

e> kerberos依賴其它的服務來存放使用者資訊(登入shell、uid、gid啥的),因此需要注意到這些資訊依然是很容易遭受攻擊並且洩露的;

f> 由於任何人都可以向kdc請求任何使用者的tgt(使用使用者密碼加密的session key),那麼攻擊者就有可能請求乙個這樣的包下來嘗試解密,他們有充足的時間離線去做這個工作,一旦解開了,他們也就拿到了使用者的密碼。簡單密碼幾乎一解就開,所以不能設定簡單密碼,也不能在字典裡。另外還可以開啟kerberos的預驗證機制來防禦這種攻擊,預驗證機制就是在kdc收到使用者請求tgt的請求之後,要求使用者先發乙個用自己密碼加密的時間戳過來給kdc,kdc如果確實可以用自己儲存的使用者密碼解密,才發tgt給使用者,這樣攻擊者在沒有使用者密碼的時候就拿不到可用於反向的包含使用者密碼的tgt包了。在mit kerberos中在配置檔案中default_principal_flags = + preauth可以開啟這個機制。但這個機制也並不是無懈可擊的,攻擊者依然可以通過嗅探的方式在正常使用者請求tgt時拿到上述的那個包(這個難度顯然就高了一些);

22、kerberos可以在不同的realm之間建立信任關係,這樣使用者在乙個realm中登入後就可以享用多個realm中的服務。簡單的建立互信的方法是在2個網域名稱都建立一條共享密碼的名為krbtgt的principal。更好的建立互信的方法是多個realm都建立一條信任到自己的父realm,這樣在子realm之間也能建立起信任;

23、kerberos還能向ssl幫助網路流量套上一層加密,比如說telnet這種明文協議就可能能用上。但是跟ssl或者ssh比起來安全性仍然略低,因為它的session key是用對稱加密傳輸的(如果tgt被盜取了,流量的加密也就失效了),這在理論上增加了被嗅探破解的可能。而ssh和ssl協商session key採用的dh演算法是理論安全的(被稱為pfs即perfect forward secrecy,詳見)。還有乙個問題是kerberos採用的一些加密演算法是已經不安全的了(如crc32和des),而另一些加密演算法(aes)並沒有被其他的kerberos實現廣泛使用,所以會有一些相容性的麻煩,選擇加密演算法時要避開這些演算法;

24、如果將princical密碼設定為random,那麼每次將其dump到本地keytab中時,都會random新的密碼並dump到本地(可用於更新密碼);

Hadoop基礎(四) Hadoop容錯機制

三 高可用集群ha cluster hdfs對於讀寫的容錯機制是基於hdfs的副本機制 對於檔案上傳 hdfs副本放置策略是預設三個備份,當前節點乙份,同一機架不同節點乙份,不同機架任任意節點乙份。如果上傳過程中某一副本上傳失敗,那麼整個塊的上傳失敗,需要重新啟動這個副本的上傳。yarn是如何配合副...

mysql安全機制 Mysql安全機制

在mysql下mysql庫中有6個許可權表 mysql.user 使用者字段,許可權字段,安全字段,資源控制字段 mysql.db mysql.host 使用者字段,許可權字段 mysql.tables priv,mysql.columms priv,mysql.procs priv 一 使用者管理...

hadoop安全認證服務

cdh版本的hadoop在對資料安全上的處理採用了kerberos sentry的結構。kerberos主要負責平台使用者的許可權管理,sentry則負責資料的許可權管理。下面我們來依次了解一下 kerberos包含乙個中心節點和若干從節點,所有節點的kerberos認證資訊都要與中心節點的規則配置...