1.1 kerberos認證淺析
1、kerberos定義
1. Kerberos 是一種網絡認證協議,其設計目標是通過密鑰系統為客戶機 / 服務器應用程序提供強大的認證服務。
2. Kerberos 作為一種可信任的第三方認證服務,是通過傳統的密碼技術(如:共享密鑰)執行認證服務的。
3. Kerberos也能達到單點登錄的效果,即當Client通過了Kerberos server的認證后,便可以訪問多個Real Server。
2、kerberos幾個重要組件
1. KDC:負責分發密鑰的密鑰分配中心
2. Client:需要使用kerbores服務的客戶端
3. Service:提供具體服務的服務端
3、kerberos中幾個重要概念
1. Client master key: KDC中存儲的Client的密鑰
2. Server master key: KDC中存儲的Server的密鑰
3. Sclient-Server:Client與Server之間的會話密鑰
4. Client Info:記錄了Client本身的Ip等基本信息
4、kerberos認證交互過程
1)client從KDC獲取Sclient-Server
1. 用client公鑰加密Sclient-Server發送給client【Sclient-Server + Client-master-key(加密)】
2. 用server公鑰加密Sclient-Server+ ClientInfo發送給client【Sclient-Server + ClientInfo + Server-master-key(加密)】
2)client用Sclient-Server加密發送數據
1. Client用自己的mClient-master-key解密KDC傳過來的第一個包獲得會話密鑰Sclient-Server
2. 並用Sclient-Server加密自己的的信息和時間戳打包后傳送給Server,此時Client開始和Server交互
3)server用私鑰獲取Sclient-Server,並用Sclient-Server解密client信息
1. Server會收到兩個數據包,一個用會話密鑰(Sclient-Server)加密,一個用自己的(Server-master-key)加密。
2. Server先用自己的Server-master-key解密獲取會話密鑰(Sclient-Server)和一份關於Client的信息。
3. 然后Server拿到解密后獲取到的會話密鑰(Sclient-Server)再解開另外一個數據包,獲得另一份關於Client的信息和時間戳。
5、kerberos認證圖解
6、kerberos細節
1)上面有個數據包是KDC經Client轉發給Server的,為什么不直接發給Server?
1. 因為Server可能給多個Client提供服務,這樣Server需要維護一個Client和會話密鑰的對應表,這對Server是一個負擔。
2)為什么要發兩份關於Client的信息給Server?
1. 通過這兩份數據的對比,Server就能判斷出是不是對的Client在訪問服務。
3)Client是如何判斷自己在訪問對的Server呢?
1. 因為Client給Server的一個數據包是用Server的master key來加密的所以只有對的Server才能解密。
4)為什么要用會話密鑰
1. 通信方的master key是長期有效的,如果在網絡上傳輸,一旦被截取,理論上來說只要有足夠的時間是可以破解的。
2. 所以我們才用臨時的會話密鑰來通信,一段時間后會話密鑰會過期,同時時間戳也防止了,惡意用戶重復使用同一個數據包。
5)為什么要用時間戳?
1. 如果Client向Server傳送的數據包被其他的Client截取,然后自己拿來向Server請求服務這,這樣就會出問題
2. Server收到請求后將從解密后的數據包中獲得的時間戳和當前時間對比,一旦超過一定范圍將直接拒絕請求
1.2 kerberos常用命令
https://www.cnblogs.com/chwilliam85/p/9679845.html
https://www.cnblogs.com/kisf/p/7494203.html
1111111111111111111111111111