禹水琴
摘要:Kerberos是University of Massachusetts設(shè)計開發(fā)的一種認證。本Kerberos系統(tǒng)由六臺主機組成,其中一臺作為Kerberos系統(tǒng)的服務(wù)器兼主KDC,兩臺作為從KDC,另外三臺分別作為telnet服務(wù)器、FTP服務(wù)器和客戶機。部署Kerberos基礎(chǔ)結(jié)構(gòu)涉到安裝KDC,為主機創(chuàng)建密鑰以及遷移用戶。重新配置Kerberos部署與執(zhí)行初始部署一樣困難,因此要認真規(guī)劃部署以避免必須進行重新配置。
關(guān)鍵詞:Kerberos;認證協(xié)議;KDC
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2015)24-0037-03
Design and Analysis of Kerberos Experimental System
YU Shui-qin
(Department of Computer Science, Sichuan Post and Telecommunication College, Chengdu 610067, China)
Abstract: Kerberos is a kind of authentication for the design and development of of Massachusetts University. The Kerberos system is made up of six hosts, one of which is the server and master Kerberos system as the KDC system, two as from KDC, and the other three as telnet server, FTP server and client. The deployment of the Kerberos infrastructure involves the installation of KDC, creating keys for the host, and migrating users. Reconfiguration of Kerberos is as difficult as the implementation of the initial deployment, and therefore must be carefully planned to avoid the need to be re configured.
Key words: Kerberos; authentication protocol; KDC
所謂認證協(xié)議就是指在網(wǎng)絡(luò)實體之間秘密進行發(fā)送、接收、確認等操作的非否認性或安全認證。哪怕是討論最基本的,只有3-4個實體,交換的消息只有4-6條,要設(shè)計,認證一個這樣的協(xié)議也非常麻煩。事實證明要開發(fā),設(shè)計一個認證協(xié)議是非常復(fù)雜的一項工作,現(xiàn)在很多組織結(jié)構(gòu),大型公司致力于這項工作。
在一個分布式的client/server體系結(jié)構(gòu)中采用一個或多個Kerberos服務(wù)器提供一個認證服務(wù)。從用戶的角度來看,啟動Kerberos會話后,Kerberos服務(wù)通常不可見。一些命令(如telnet或ftp)也是如此。初始化Kerberos會話通常僅包括登錄和提供Kerberos口令。
1 Kerberos驗證過程
Kerberos驗證分為兩個階段:允許進行后續(xù)驗證的初始驗證以及所有后續(xù)驗證自身。
1.1 初始驗證—票證授予票證
客戶機(用戶或應(yīng)用服務(wù)器)通過從密鑰分發(fā)中心(KeyDistributionCenter,KDC)請求票證授予票證(Ticket-GrantingTicket,TGT)開始Kerberos會話。此請求通常在登錄時自動完成。
KDC可創(chuàng)建票證授予票證,并采用加密形式將其發(fā)送回客戶機??蛻魴C使用其口令來解密票證授予票證。
擁有有效的TGT(票證授予票證)后,只要該TGT未到期,客戶機便可以請求所有類型的網(wǎng)絡(luò)操作(如rlogin或telnet)的票證。此票證的有效期通常為幾個小時。每次客戶機執(zhí)行唯一的網(wǎng)絡(luò)操作時,都將從KDC請求該操作的票證。
1.2 啟動Kerberos驗證
1)客戶機通過向KDC發(fā)送其票證授予票證作為其身份證明,從KDC請求特定服務(wù)(例如,遠程登錄到另一臺計算機)的票證。
2)KDC將該特定服務(wù)的票證發(fā)送到客戶機。
例如,假定用戶joe在服務(wù)器boston上使用rlogin。因為這個用戶早已通過驗證(也就是說這個用戶已經(jīng)拿到票證授予票證),所以當運行到rlogin時,這個用戶會自動透明地獲得票證。這個用戶利用這個票證可任何時候遠程登錄到boston,一直到票證期限結(jié)束為止。假如joe想遠程登錄到電腦denver,就要按上面步驟獲得另一個票證。
3)客戶機將票證發(fā)送到服務(wù)器。
使用網(wǎng)絡(luò)應(yīng)用服務(wù)時服務(wù)器會自動透明地將服務(wù)器的票證發(fā)送到應(yīng)用服務(wù)器。
4)服務(wù)器允許此客戶機進行訪問。
2 規(guī)劃Kerberos部署
在安裝Kerberos服務(wù)之前,必須解決幾個配置問題。雖然在初始安裝后可以更改配置,但每向系統(tǒng)中添加一臺新客戶機便會增加執(zhí)行此操作的難度。而且某些更改可能需要進行完全重新安裝,所以在規(guī)劃Kerberos配置時最好應(yīng)考慮長期目標。
2.1 Kerberos領(lǐng)域
領(lǐng)域是一個類似于域的邏輯網(wǎng)絡(luò),用于定義一組系統(tǒng),這些系統(tǒng)位于同一主KDC下。與建立DNS域名一樣,在配置Kerberos服務(wù)之前,應(yīng)解決以下問題以便進行跨領(lǐng)域驗證:領(lǐng)域名稱、領(lǐng)域數(shù)和每個領(lǐng)域的大小以及各領(lǐng)域之間的關(guān)系。
2.2 Kerberos領(lǐng)域和服務(wù)器
每個領(lǐng)域都必須包括一臺用于維護主體數(shù)據(jù)庫的主副本的服務(wù)器。此服務(wù)器稱為主KDC服務(wù)器。此外,每個領(lǐng)域還應(yīng)至少包含一臺從KDC服務(wù)器,該服務(wù)器包含主體數(shù)據(jù)庫的多個副本。主KDC服務(wù)器和從KDC服務(wù)器都可創(chuàng)建用于建立驗證的票證。
領(lǐng)域還可以包含兩種其他類型的Kerberos服務(wù)器。Kerberos網(wǎng)絡(luò)的應(yīng)用程序服務(wù)器是用于提供對基于Kerberos的應(yīng)用程序(如ftp、telnet和rsh)的訪問的服務(wù)器。領(lǐng)域還可以包括NFS服務(wù)器,該服務(wù)器使用Kerberos驗證來提供NFS服務(wù)。
2.3 Kerberos術(shù)語
下表列舉了Kerberos認證技術(shù)中相關(guān)的一些關(guān)鍵的術(shù)語。
[術(shù)語\&概念解釋\&領(lǐng)域
(realm)\&Kerberos的認證數(shù)據(jù)庫所負責的一個網(wǎng)絡(luò)范圍稱作一個realm。該數(shù)據(jù)庫中存放該網(wǎng)絡(luò)范圍內(nèi)的所有主體(principal)及其密鑰,數(shù)據(jù)庫的內(nèi)容被Kerberos的ticket分發(fā)服務(wù)器as和TGS訪問。Realm通常用大寫的字符串表示,并且在大多數(shù)Kerberos系統(tǒng)的配置中,realm和該網(wǎng)絡(luò)環(huán)境的DNS域是一致的。\&主體
(principal)\&在Kerberos協(xié)議中,主體是參加認證的基本實體。通常,主體有兩種類型,一種表示網(wǎng)絡(luò)服務(wù)使用者的身份,另一種表示某一特定主機上的某種網(wǎng)絡(luò)服務(wù),即主體是表示客戶端和服務(wù)端身份的實體。用戶所見到的主體用一個字符串表示,其結(jié)構(gòu)如下:
主名(Primaryname)
實例(Instance)
領(lǐng)域(Realm)
故一個Kerberos主體可以表示為:Primaryname/Instance@Realm,一個在LILAC.HIT.EDU.CN域內(nèi)的用戶名為hyw,實例為管理員admin的主體名可以表示為:hyw/admin@LILAC.HIT.EDU.CN。
再如,principal“john/abc.def.com@DEF.COM”表示域“def.com”中主機abc.def.com上的用戶john。\&票據(jù)
(ticket)\&Ticket是安全傳遞用戶身份所需要的信息集合,包含身份和其他相關(guān)信息。通常,它包括客戶方principal、服務(wù)方principal、客戶方IP地址、時間戳(分發(fā)ticket的時間)、ticket的生存期、會話密鑰等。\&會話密鑰
(SessionKey)\&在兩個主體之間使用的一個暫時的加密密鑰,它的生存時間僅局限在一次通信會話過程中。\&證書
(credential)\&在一次認證交換中為了成功使用門票所需的信息,它包含一張門票和一個會話密鑰。在票據(jù)的生存期內(nèi),客戶端將證書保存在cache文件中。\&認證符
(authenticator)\&在客戶端向服務(wù)端進行認證時,它伴隨ticket一直發(fā)送。其作用是證明ticket的用戶就是擁有ticket的用戶,用于防止重放攻擊。它的主要內(nèi)容是時間戳(客戶端發(fā)送ticket的時間)。\&TGS
(票據(jù)發(fā)送服務(wù)器,Ticketgrantingserver)\&為用戶分發(fā)ticket的服務(wù)器,用戶使用這個ticket向要求提供服務(wù)的服務(wù)器證明自己的身份。\&TGT
(票據(jù)認證票據(jù),Ticketgrantingticket)\&用戶向TGS證明自己身份的ticket。\&As
(身份證證服務(wù)器,Authenticationserver)\&為用戶分發(fā)TGT的服務(wù)器。\&KDC
(密鑰分配中心,Keydistributioncenter)\&通常as和TGS統(tǒng)稱為KDC,有時也指KDC所在的主機。\&]
3 Kerberos實驗系統(tǒng)設(shè)計
3.1 Kerberos系統(tǒng)組成
本Kerberos系統(tǒng)由六臺主機組成,其中一臺作為Kerberos系統(tǒng)的服務(wù)器兼主KDC,兩臺作為從KDC,另外三臺分別作為telnet服務(wù)器、FTP服務(wù)器和客戶機。
上圖中各角色在實驗中的參數(shù)設(shè)置如下:
領(lǐng)域名稱:XNJTDX. LAB DNS域名:xnjtdx.lab 主KDC:kdc1. xnjtdx.lab
從KDC1:kdc2. xnjtdx.lab 從KDC2:kdc3. xnjtdx.lab 客戶機:ct. xnjtdx.lab
telnet服務(wù)器:tlt. xnjtdx.lab FTP服務(wù)器:ftp. xnjtdx.lab admin主體:adn. xnjtdx.lab
3.2 Kerberos組件
Kerberos服務(wù)也包括以下內(nèi)容:
1)密鑰分發(fā)中心(主KDC)
2)從KDC。
3)數(shù)據(jù)庫管理程序-kadmin和kadmin.local。
4)數(shù)據(jù)庫傳播軟件-kprop。
5)用于獲取、查看和銷毀票證的用戶程序-kinit、klist和kdestroy。
6)用于更改Kerberos口令的用戶程序-kpasswd。
7)遠程應(yīng)用程序-ftp、rcp、rdist、rlogin、rsh、ssh和telnet。
8)遠程應(yīng)用程序守護進程-ftpd、rlogind、rshd、sshd和telnetd。
3.3 必要命令
3.3.1 KDC服務(wù)命令
krb5kdc
這是啟動基于KerberosV5的KDC服務(wù)的命令,只有KDC主機才可以啟動這一服務(wù)。它的原始地址是在/optr/kerberos/sbin/krb5kdc。
kadmind
這一命令可以啟動KDC上的密鑰管理服務(wù),只有KDC主機才可以啟動這一服務(wù)。它的原始地址是在/usr/kerberos/sbin/kadmin。
3.3.2 kdb5_util命令
這一命令把Kerberos數(shù)據(jù)庫作為一個整體進行操作,通過輸入:kdb5_util可以查看它的命令格式和參數(shù)信息,這里只介紹實驗中用到的幾個命令。
在EXAMPLE.COM域中創(chuàng)建Kerberos數(shù)據(jù)庫:kdb5_utilcreate–rEXAMPLE.COM-s
在本機創(chuàng)建一個數(shù)據(jù)庫備份文件:kdb5_utildumpslave文件
在本機創(chuàng)建一個用于鑒別KDC的stash文件:kdb5_utilstash
3.3.3 kadmin.local/kadmin命令
這兩個命令都是修改數(shù)據(jù)庫中單個個體的函數(shù),前者是主KDC管理本地的Kerberos數(shù)據(jù)庫的命令,直接輸入即可進入數(shù)據(jù)庫管理界面;后者是遠程管理Kerberos數(shù)據(jù)庫的命令,需要一個存在于數(shù)據(jù)庫中的主體及其密碼才可以進入。例如已經(jīng)數(shù)據(jù)庫中的一個主體名為host/abc.example.com,它的密碼是:1234,那么命令形式如下圖:首先輸入:kadmin-phost/abc.example.com,系統(tǒng)會檢查是否有這個主體,如果存在,它會提示客戶輸入密碼,如果也正確,就登入成功了。這時系統(tǒng)會出現(xiàn)”kadmin:”字樣的提示符。
3.4 Kerberos應(yīng)用(ekrb5-telnet和gssftp)
應(yīng)用Kerberos使我們能夠設(shè)計一個基本的Kerberos認證及應(yīng)用服務(wù)系統(tǒng),該系統(tǒng)運行在操作系統(tǒng)為Linux的主機上,它提供基本的Kerberos認證服務(wù),并提供Kerberos化的遠程登錄和文件傳輸安全服務(wù)。我們也把遠程登錄和文件傳輸系統(tǒng)的Kerberos化稱為Kerberizedtelnet和Kerberizedftp。通常我們也把Kerberos化的應(yīng)用服務(wù)系統(tǒng)簡稱為Kerberos應(yīng)用服務(wù)系統(tǒng)。
參考文獻:
[1] 網(wǎng)絡(luò)信息安全綜合實驗系統(tǒng)v3.5(實驗篇).
[2] 網(wǎng)絡(luò)信息安全綜合實驗系統(tǒng)v3.5(原理篇).
[3] 文鐵華,谷士文.增強Kerberos協(xié)議安全性的改進[J].通信學報,2004(06).
[4] 巨瑜芳.Kerberos協(xié)議簡介及安全性分析[J].科技傳播,2010(16).