Linux高級操作系統(tǒng)用戶認證與授權(quán)_第1頁
Linux高級操作系統(tǒng)用戶認證與授權(quán)_第2頁
Linux高級操作系統(tǒng)用戶認證與授權(quán)_第3頁
Linux高級操作系統(tǒng)用戶認證與授權(quán)_第4頁
Linux高級操作系統(tǒng)用戶認證與授權(quán)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、 . 理工大學Linux高級操作系統(tǒng)課程設計報告基于Linux的用戶認證與授權(quán)研究廖正磊學 院 計算機與通信工程專業(yè) 計算機科學與技術(shù)班 級 計算機06-3班 學號 9 學生 廖正磊 指導教師 王艷華 課程成績 完成日期 2009年5月29日課程設計任務書計算機與通信工程學院 計算機科學與技術(shù)專業(yè)課程名稱網(wǎng)絡系統(tǒng)課程設計時間20082009學年第1學期1920周學生廖正磊指導老師王艷華題 目基于Linux的用戶認證與授權(quán)研究主要容:本課程設計主要完成一個基于Linux的用戶認證與授權(quán)的研究實現(xiàn)。1、重點分析了Kerberos認證系統(tǒng)與LDAP目錄服務系統(tǒng)的消息格式、數(shù)據(jù)庫管理、安裝配置、配置文

2、件、接口函數(shù)等。2、利用可信平臺模塊(TPM)對Kerberos協(xié)議與其藍本NeedhamSchroeder協(xié)議進行了改進,增強了它們的安全性。并搭建了Kerberos認證系統(tǒng),實現(xiàn)了用戶登錄的Kerberos認證、網(wǎng)絡應用的Kerberos化。要求:(1)要求能獨立地運用程序語言和數(shù)據(jù)庫方面知識,編制一個功能簡單的小型信息模擬系統(tǒng)。(2)學生按要求編寫課程設計報告書,能正確闡述設計和實驗結(jié)果。(3)通過課程設計培養(yǎng)學生嚴謹?shù)目茖W態(tài)度,認真的工作作風和團隊協(xié)作精神。(4)學生應抱著嚴謹認真的態(tài)度積極投入到課程設計過程中。 應當提交的文件:(1)課程設計報告。(2)課程設計附件(源程序、各類圖紙

3、、實驗數(shù)據(jù)、運行截圖等)。課程設計成績評定學 院 計算機與通信工程專 業(yè) 計算機科學與技術(shù)班 級 計算機06-3班 學 號 9 學生 廖正磊 指導教師 王艷華 課程成績 完成日期 2009年5月22日 指導教師對學生在課程設計中的評價評分項目優(yōu)良中與格不與格課程設計中的創(chuàng)造性成果學生掌握課程容的程度課程設計完成情況課程設計動手能力文字表達學習態(tài)度規(guī)要求課程設計論文的質(zhì)量指導教師對課程設計的評定意見綜合成績 指導教師簽字年月日基于Linux的用戶認證與授權(quán)系統(tǒng)的研究實現(xiàn)學生:廖正磊 指導老師:王艷華摘 要 本課程設計在對可信計算的體系結(jié)構(gòu)、Linux的安全機制、現(xiàn)有的認證協(xié)議等深入研究的基礎上,

4、提出了基于Linux操作系統(tǒng)的用戶認證與應用授權(quán)的架構(gòu),并最終完成了整個系統(tǒng)的搭建。本文重點分析了Kerberos認證系統(tǒng)與LDAP目錄服務系統(tǒng)的消息格式、數(shù)據(jù)庫管理、安裝配置、配置文件、接口函數(shù)等。利用可信平臺模塊(TPM)對Kerberos協(xié)議與其藍本NeedhamSchroeder協(xié)議進行了改進,增強了它們的安全性。并搭建了Kerberos認證系統(tǒng),實現(xiàn)了用戶登錄的Kerberos認證、網(wǎng)絡應用的Kerberos化;搭建了OpenLDAP目錄服務系統(tǒng),并利用SASL機制實現(xiàn)了其與Kerberos認證系統(tǒng)的結(jié)合。在此基礎上,利用OpenLDAP的訪問控制機制實現(xiàn)了對各種網(wǎng)絡應用服務的授權(quán)訪

5、問。利用我們編寫的客戶端應用接口,用戶可以完成上述認證與授權(quán)過程。該系統(tǒng)作為信息安全實踐創(chuàng)新平臺的一部分,可應用于信息安全教學的實踐環(huán)節(jié),還可以將其應用于黨政機關(guān)辦公自動化與協(xié)同辦公,保護黨政網(wǎng)的安全。關(guān)鍵詞 身份認證;目錄服務;應用授權(quán)Linux-based user authentication and authorizationStudent name: LIAO Zheng-lei Advisor:WANG Yan-huaAbstractThe curriculum design in the architecture of Trusted Computing, Linux secur

6、ity mechanisms, the existing authentication protocol, such as in-depth study, based on the Linux operating system based on user authentication and authorization framework for applications, and ultimately the completion of the entire system structures. This paper analyzes the Kerberos authentication

7、system and LDAP directory services system message format, database management, installation configuration, configuration files, and other interface functions. The use of Trusted Platform Module (TPM) on the Kerberos protocol and the Needham-Schroeder protocol based on improvements to enhance their s

8、ecurity. And to set up Kerberos authentication system, the Kerberos user login authentication, the Kerberos network applications of; build the OpenLDAP directory service system, and the use of SASL mechanisms with a combination of Kerberos authentication system. On this basis, the use of OpenLDAP ac

9、cess control mechanisms on the application of a variety of network services, unauthorized access. Prepared to use our client application interface, the user can complete authentication and authorization process of the above. The system of information security as part of practical innovation platform

10、, has been applied to the practice of information security aspects of teaching, but also can be used in party and government organs of office automation and collaboration of office to protect the security of government network.Key words Authentication;Directory Service;Authorization目 錄1引言11.1課題背景11.

11、2課程設計目的21.3問題描述22用戶認證與授權(quán)方案概述51.1 Linux的安全機制51.2 Kerberos認證系統(tǒng)91.3 輕量級目錄訪問協(xié)議103用戶認證與授權(quán)方案的研究與實現(xiàn)143.1搭建Kerberos認證系統(tǒng)143.2搭建OpenLDAP服務器203.3 Kerberos認證系統(tǒng)與OpenLDAP的結(jié)合233.4 實現(xiàn)訪問控制243.5 客戶端應用接口的編寫25參考文獻28結(jié)束語2929 / 391引言1.1課題背景Linux是一個類UNIX的多用戶、多任務、功能強大的操作系統(tǒng)。最初版本是芬蘭的Linus Torvalds于1991年獨立開發(fā)的。由于其免費提供源代碼與可執(zhí)行文件,

12、吸引了全世界各地的UNIX行家為其編寫了大量的驅(qū)動程序和應用軟件,在短短的幾年時間里,Linux迅速發(fā)展成為一個相當完善的操作系統(tǒng)。不僅穩(wěn)定可靠,而且還具有良好的兼容性、可移植性。近幾年來,Linux操作系統(tǒng)以其高效性、靈活性以與開放性得到了蓬勃發(fā)展,不僅被廣泛應用于PC、服務器,還廣泛的應用于手機、PDA等高端嵌入設備。但是,目前的Linux版本在安全方面還存在著許多不足,其安全級別低于C2級。其新功能的不斷加入與安全機制的錯誤配置或錯誤使用,都會帶來很多問題。出于系統(tǒng)安全考慮,Linux提供的安全機制主要有:身份標識與鑒別、文件訪問控制、特權(quán)管理、安全審計、IPC資源的訪問控制。目前,UN

13、IX下的一種新的安全機制已被開發(fā)并且在Linux中實現(xiàn)。這種機制稱為可插入身份認證模塊,即為PAM機制1。當用戶在登錄Linux時,首先要通過系統(tǒng)的PAM驗證。PAM機制可以用來動態(tài)地改變身份驗證的方法和要求,允許身份認證模塊按需要被加載到核中,模塊在加入后即可用于對用戶進行身份認證,而不需要重新編譯其它公用程序。PAM體系結(jié)構(gòu)的模塊化設計與其定義的良好接口,使得無需改變或者干擾任何現(xiàn)有的登錄服務就可以集成圍廣泛的認證和授權(quán)機制,因此,近年來,對PAM的底層鑒別模塊的擴展廣泛應用于增強Linux操作系統(tǒng)的安全性。Kerberos認證協(xié)議是目前應用最廣泛的、基于可信任第三方的網(wǎng)絡身份認證協(xié)議。L

14、inux操作系統(tǒng)更好的安全性保證可以由Kerberos來實現(xiàn)2,3,目前,基于Linux操作系統(tǒng),利用Kerberos協(xié)議增強其用戶認證的安全性的方案在國外均有提出。Kerberos認證協(xié)議最初是麻省理工學院(MIT)為其Athena項目開發(fā)的,其從提出到現(xiàn)在,共經(jīng)歷了五個版本的發(fā)展4。目前廣泛應用的版本是其第五版本Kerberos V5。其本身存在著一定的局限性,針對其安全缺陷,已有諸多的解決方案提出。同時,伴隨著其軟件的優(yōu)化、升級,Kerberos認證系統(tǒng)的應用將會越來越廣泛。輕量級目錄訪問協(xié)議(LDAP)作為目前廣泛應用的目錄訪問協(xié)議,可以實現(xiàn)授權(quán)管理、網(wǎng)絡用戶管理、電子政務目錄體系等服

15、務。其基于訪問控制策略語句的訪問控制列表(Access Control List,ACL)來實現(xiàn)訪問控制與應用授權(quán),不同于現(xiàn)有的關(guān)系型數(shù)據(jù)庫和應用系統(tǒng),訪問控制異常靈活和豐富5。目前,LDAP已經(jīng)成為Internet上目錄服務的標準協(xié)議。已有包括微軟、IBM在的幾十家大型軟件公司采用了LDAP技術(shù)。在我國,LDAP技術(shù)已應用在大學校園網(wǎng)絡用戶管理系統(tǒng)、政務網(wǎng)統(tǒng)一用戶管理、中國數(shù)字圖書館系統(tǒng)的用戶管理部分,以與、等省級認證中心等。1.2課程設計目的用戶認證與應用授權(quán)是安全機制的前提,基于Linux操作系統(tǒng),深入研究用戶認證與應用授權(quán)機制,不僅可以深入理解現(xiàn)有的安全機制,隨著研究的深入,也可以發(fā)現(xiàn)

16、其現(xiàn)有安全機制的問題所在。用戶在登錄Linux操作系統(tǒng)時,首先要通過系統(tǒng)的PAM進行驗證。任何認證機制都可以加入到PAM的底層鑒別模塊中,可以被任何基于PAM開發(fā)的程序調(diào)用。因此,將更多安全性更高的認證機制擴展到PAM的底層鑒別模塊中,可以增強Linux操作系統(tǒng)的安全性。Kerberos是目前應用最廣泛的認證協(xié)議,本課程設計將其作為認證模塊擴展到PAM中,基于PAM的程序就可以調(diào)用該認證模塊用于用戶認證等驗證機制,可以增強系統(tǒng)與各種應用的安全性。本課程設計提出的用戶認證與應用授權(quán)系統(tǒng),集成了用戶與各種網(wǎng)絡應用服務的資源和信息,可以方便有效的實現(xiàn)對用戶的統(tǒng)一管理。當用戶訪問某種網(wǎng)絡服務時,首先通

17、過Kerberos的認證,登錄到LDAP目錄服務系統(tǒng),然后LDAP可以通過其ACL驗證用戶是否擁有訪問該服務的權(quán)限。這樣既可以實現(xiàn)基于用戶的網(wǎng)絡應用管理,也可以實現(xiàn)對用戶的訪問控制。該系統(tǒng)可以應用于信息安全教學、信息安全系統(tǒng)的開發(fā)與實現(xiàn),并將應用于黨政機關(guān)辦公自動化與協(xié)同辦公,保護黨政網(wǎng)的安全,具有實用意義與創(chuàng)新意義。1.3問題描述本課程設計在深入理論研究的基礎上,基于Linux的PAM機制、Kerberos認證系統(tǒng)、LDAP目錄服務系統(tǒng)設計了域用戶認證與應用授權(quán)的架構(gòu)。該架構(gòu)運行在操作系統(tǒng)為Linux的主機上,提供基本的Kerberos登錄認證服務,以與Kerberos化的遠程登錄服務(kt

18、elnet)、Kerberos化的文件傳輸(kftp)等網(wǎng)絡應用服務。OpenLDAP目錄服務系統(tǒng)完成用戶信息的存儲以與相應權(quán)限的設置。本課題編寫了客戶端程序,作為認證接口,提供給應用程序調(diào)用,實現(xiàn)用戶的登錄認證與應用的授權(quán)。根據(jù)所提出的架構(gòu),在“華鐳Linux操作系統(tǒng)”下配置各個相關(guān)模塊,同時編程實現(xiàn)客戶端用戶認證的接口函數(shù),使得用戶可以調(diào)用該接口函數(shù)完成登錄某種網(wǎng)絡應用服務的認證。本課程設計的理論研究情況列舉如下:1、Linux操作系統(tǒng)相關(guān)的理論知識,包括其組成模塊、部已有的安全機制、安全缺陷與其安全需求等。2、Linux部的可插入式認證模塊(PAM)的運行原理、組成部分與其應用實例,特別

19、是其部的用戶登錄認證與應用授權(quán)模塊。3、學習現(xiàn)有的認證協(xié)議,著重分析Kerberos協(xié)議的藍本Needham-Schroeder認證協(xié)議,熟悉其協(xié)議過程、自身缺陷、各次攻擊以與改進過程,并基于可信平臺模塊(TPM)對其進行改進,以增強其安全性。4、研究Kerberos認證系統(tǒng),包括其系統(tǒng)組成、協(xié)議原理、數(shù)據(jù)庫創(chuàng)建與管理、應用接口函數(shù)等,并研究如何將其配置在所選操作系統(tǒng)“華擂Linux”的PAM模塊中。5、研究輕量級目錄訪問協(xié)議(LDAP),包括其命名模型、協(xié)議原理、數(shù)據(jù)庫創(chuàng)建與管理、安全機制、應用接口函數(shù),與其如何與Kerberos認證系統(tǒng)相結(jié)合等。本課程設計所搭建的用戶認證與應用授權(quán)系統(tǒng)包括

20、服務器端、客戶端兩部分,分別介紹如下:1、服務器端配置Kerberos的服務器端,作為Kerberos的密鑰分發(fā)中心(KDC),完成AS認證服務和TGS票據(jù)授權(quán)服務,并將網(wǎng)絡應用服務進行Kerberos化,實現(xiàn)用戶登錄網(wǎng)絡應用服務的Kerberos認證;配置OpenLDAP的服務器端,作為用戶身份管理的核心數(shù)據(jù)庫,利用其目錄管理功能實現(xiàn)對用戶信息的管理,并利用其訪問控制列表(ACL)實現(xiàn)應用的授權(quán);利用SASL機制實現(xiàn)Kerberos系統(tǒng)與OpenLDAP系統(tǒng)的結(jié)合,并實現(xiàn)兩者數(shù)據(jù)庫的匹配,完成用戶認證與應用授權(quán)系統(tǒng)的模塊架構(gòu)。2、客戶端作為Kerberos系統(tǒng)的客戶端用戶在此登錄,完成用戶認

21、證、服務請求,經(jīng)由認證服務器認證后,調(diào)用某種Kerberos化的網(wǎng)絡應用服務,完成與應用服務器的相互認證。作為OpenLDAP目錄服務系統(tǒng)的客戶端用戶可以對目錄信息進行管理與訪問。用戶可以調(diào)用課題所編寫的認證接口函數(shù),完成用戶認證與應用授權(quán)過程。2用戶認證與授權(quán)方案概述1.1 Linux的安全機制1、PAM機制通常在認證時,實現(xiàn)認證功能的代碼通常作為應用程序的一部分而一起編譯,如果發(fā)現(xiàn)所用算法存在某些缺陷或想采用另外一種認證方法時,用戶不得不重寫(修改或替換)、重新編譯原程序。所以希望能夠?qū)⒄J證功能從應用中獨立出來,單獨進行模塊化的設計、實現(xiàn)和維護;另一方面,希望為認證模塊建立標準API,以便

22、各個應用程序能方便的調(diào)用它們所提供的各種功能;同時認證機制對其上層用戶(包括應用程序和最終用戶)是透明的。應此需求,1995年,SUN的研究人員提出可插入式認證模塊,目前其已逐漸成為各種UNIX系統(tǒng)上包括Linux操作系統(tǒng)的認證方案。層次結(jié)構(gòu):可插入式認證模塊(PAM)機制采用模塊化設計和插件功能,提供有關(guān)執(zhí)行用戶認證與賬號維護的服務。其在實現(xiàn)上采用了分層的體系結(jié)構(gòu),將各種具體的認證模塊從應用程序中獨立出來,使得認證機制與應用程序之間相對獨立。從而可以在應用程序中根據(jù)需要靈活地插入所需要的認證模塊或替換原先的認證組件,而不必對應用程序做任何修改。應用程序只需調(diào)用應用編程接口API即可方便的使用

23、PAM提供的各種認證功能,而不必了解太多的底層細節(jié)。PAM模塊化的體系結(jié)構(gòu),可以集成圍廣泛的認證機制,輕易地做到認證應需而改變,使得軟件的定制、維持和升級更加輕松。其層次結(jié)構(gòu)如圖2.1所示6。由圖2.1可以看出,PAM API是應用程序?qū)优cPAM服務模塊之間聯(lián)系的紐帶,起著承上啟下的作用。系統(tǒng)管理員通過PAM配置文件來制定不同應用程序的不同認證策略,當應用程序調(diào)用PAM API時,應用接口層將按照配置文件pam.conf的規(guī)定,加載相應的PAM服務模塊。接著,應用程序?qū)拥膮?shù)通過PAMAPI傳遞給底層的PAM服務模塊。當PAM服務模塊完成相應的認證操作之后,將結(jié)果返回給應用接口層,然后由PAM

24、 API根據(jù)具體的配置文件將此應答返回給應用程序?qū)印D2.1 PAM層次結(jié)構(gòu) 工作原理:應用程序?qū)优cPAM服務模塊通過PAM API建立聯(lián)系,按照需要調(diào)用相關(guān)的服務模塊,完成對某種應用程序的認證。工作流程如下圖2.2所示:圖2.2 PAM工作流程對應圖2.2,PAM機制在運行時,按照圖中所標示的數(shù)字,依次完成如下步驟:l 用戶調(diào)用某個應用程序,以得到某種服務;l PAM應用程序調(diào)用后臺的PAM庫進行認證工作;l PAM庫在/etc/pam.d/目錄中查找有關(guān)應用程序細節(jié)的配置文件, 該文件告訴PAM,此應用程序使用何種認證機制;l PAM庫裝載所需的認證模塊;l 上述裝載的認證模塊讓PAM與應

25、用程序中的會話函數(shù)進行通信;l 會話函數(shù)向用戶要求有關(guān)信息;l 用戶對這些要求做出回應,提供所需信息;l PAM認證模塊通過PAM庫將認證信息提供給應用程序;l 認證完成后,應用程序做出兩種選擇:將所需權(quán)限賦予用戶,并通知用戶;l 若認證失敗,也通知用戶。2、認證機制目前,網(wǎng)絡通信主要提供五種通用的安全服務:認證服務、訪問控制服務、性服務、完整性服務和非否認性服務。認證服務是實現(xiàn)網(wǎng)絡安全最重要的服務之一,其他的安全服務在某種程度上都依賴于認證服務。認證包括信息認證和身份認證。信息認證保證了消息源的可靠性和消息在傳輸過程中的完整性;身份認證可以使通信雙方相互驗證身份,以保證通信雙方的真實性。本課

26、程設計重點研究Linux的安全機制用戶身份認證機制,對其認證方式與相關(guān)的認證協(xié)議進行了詳細的分析。認證機制主要是認證系統(tǒng)所采用的認證方式和認證協(xié)議,用于安全連接建立前通訊雙方身份的識別,從而保障接收方接收到的數(shù)據(jù)確實是由發(fā)送方發(fā)送的。認證機制可以分為兩類:一類是通過雙方之間的交互式來證明對方身份的認證機制。該機制比較簡單,可以利用雙方的共享信息,如口令等進行身份的認證。如果通信雙方?jīng)]有共享信息,可以采用零知識證明技術(shù)進行認證。另一類采用可信第三方的認證機制。該機制中要求至少有一個可信任的第三方能夠同時識別發(fā)送方和接收方??尚诺谌阶C實發(fā)送方的身份,并回送一個證明信息(證書或是票據(jù)),從而保證發(fā)

27、送方身份的真實性。身份認證的本質(zhì)是被認證方擁有的一些信息(秘密信息、特殊硬件或特有生物學信息),除被認證方外,任何網(wǎng)絡用戶(認證權(quán)威除外)都不能偽造。通過身份認證,通信雙方可以相互驗證身份,從而保證雙方都能夠與合法的授權(quán)用戶進行通信。主要有下面三種認證方式:l 口令認證方式口令認證是一種最簡單的用戶身份認證方式。系統(tǒng)通過核對用戶輸入的用戶名和口令與系統(tǒng)已有的合法用戶名和口令是否匹配來驗證用戶的身份??诹钫J證的前提是請求認證者必須具有一個在用戶數(shù)據(jù)庫中唯一的ID7??诹钫J證的安全性僅僅基于用戶口令的性,而用戶口令為方便記憶,一般較短而容易猜測,因此該方式不能抵御口令猜測攻擊;其次,口令的明文傳輸

28、使得系統(tǒng)攻擊者很容易遭到竊聽;再者,由于系統(tǒng)以明文形式保存口令,一旦攻擊者獲得口令表,整個系統(tǒng)的安全性就會受到威脅。但是,由于該種認證方式實施簡單,其普遍應用于各種網(wǎng)絡認證中。l 基于生物學特征的認證基于生物學信息的身份認證就是利用用戶所特有的生物學特征來區(qū)分和確認用戶的身份。這些個人特征是每個用戶特有的,且在一定時期不會改變,如指紋、聲音、視網(wǎng)膜、DNA圖案等8。由于這些特征不會丟失、被盜或忘記,因此適用于對用戶身份的鑒別和認證。但這種方案造價較高,適用于程度很高的場合。l 基于智能卡的認證智能卡是由一個或多個集成電路芯片組成的集成電路卡。集成電路中的微處理器和存儲器使智能卡具有數(shù)據(jù)存儲和處

29、理的能力。智能卡可存儲用戶的個人參數(shù)和秘密信息(如IDX、PWX和密鑰)。用戶訪問系統(tǒng)時必須持有該智能卡?;谥悄芸ǖ恼J證方式是一種雙因子的認證方式(PIN+智能卡)。只有在用戶正確輸入PIN口令后,才能從智能卡中讀取秘密信息,進而利用該秘密信息與主機之間進行認證9。這種認證方案的安全性依賴于智能卡,由于智能卡本身提供硬件保護措施和加密算法,因此它既不易被偽造,也不能被直接讀取數(shù)據(jù),可以利用這些功能加強系統(tǒng)整體的安全性能。但這種方法硬件投入較大,不管是客戶端的智能卡,還是服務器端的讀卡設備,造價都較高,因而限制了它的普遍性。認證協(xié)議是認證主體通過一系列有序的步驟證明自己身份的一個過程。認證協(xié)議

30、定義了參與認證服務的所有通信方在認證過程中需要交換的所有消息格式和這些消息發(fā)生的次序以與消息的語義,采用密碼學機制來保證消息的完整性、性、消息來源、消息目的、時間性等。認證協(xié)議是認證機制的基礎,認證協(xié)議的安全性決定了某種認證機制的優(yōu)劣。1.2 Kerberos認證系統(tǒng)Kerberos認證協(xié)議是一種應用于開放式網(wǎng)絡環(huán)境、基于可信任第三方的TCP/IP網(wǎng)絡認證協(xié)議,可以在不安全的網(wǎng)絡環(huán)境中為用戶對遠程服務器的訪問提供自動鑒別、數(shù)據(jù)安全性和完整性服務、以與密鑰管理服務。該協(xié)議是美國麻省理工學院(MIT)為其Athena項目開發(fā)的,基于Needham-Schroeder認證模型,使用DES算法進行加密

31、和認證。至今,Kerberos系統(tǒng)已有五個版本,其中Version1到Version 3是在實驗室里開發(fā)和測試的。1988年開發(fā)的Version 4是公諸于眾的第一個版本,它是分布式計算環(huán)境(DCE)框架的組成部分,已在一些Unix系統(tǒng)中應用過。1990年推出Version 5進一步對Version 4中的某些安全缺陷做了改進,不僅完善了Version 4所采用的基于DES的加密算法,而且還采用獨立的加密模塊,允許用戶根據(jù)自己的實際需要選擇其它的加密算法,使得安全性得到了進一步的提高。目前Kerberos V5已經(jīng)被IETF正式命名為RFC1510。協(xié)議原理:在Kerberos協(xié)議過程中,發(fā)起

32、認證服務的通信方稱為客戶端,客戶端需要訪問的對象稱為應用服務器。首先是認證服務交換,客戶端從認證服務器(AS)請求一票據(jù)許可票據(jù)(Ticket Granting Ticket,TGT),作為票據(jù)許可服務(TicketGranting Server,TGS),即圖2.3中消息過程1,2;接著是票據(jù)授權(quán)服務交換,客戶端向TGS請求與服務方通信所需要的票據(jù)與會話密鑰,即圖2.1中消息過程3,4;最后是客戶端/應用服務器雙向認證,客戶端在向應用服務器證實自己身份的同時,證實應用服務器的身份,即圖2.3中消息過程5,6。圖2.3 Kerberos認證系統(tǒng)結(jié)構(gòu)與其協(xié)議過程1.3 輕量級目錄訪問協(xié)議在Ker

33、beros域,Kerberos系統(tǒng)可以提供認證服務,系統(tǒng)的訪問權(quán)限和授權(quán)則需要通過其他途徑來解決。輕量級目錄訪問協(xié)議(LDAP)使用基于訪問控制策略語句的訪問控制列表(Access Control List,ACL)來實現(xiàn)訪問控制與應用授權(quán),不同于現(xiàn)有的關(guān)系型數(shù)據(jù)庫和應用系統(tǒng),訪問控制異常靈活和豐富。因此,本次課程設計將輕量級目錄訪問協(xié)議(LDAP)與Kerberos認證機制、PAM機制結(jié)合在一起,共同完成域的用戶認證與應用授權(quán)。1. 協(xié)議模型LDAP協(xié)議采用的通用協(xié)議模型是一個由客戶端(Client)發(fā)起操作的客戶端服務器(Server)響應模型。在此協(xié)議模型中,LDAP客戶端通過TCP/I

34、P的系統(tǒng)平臺和LDAP服務器保持連接,這樣任何支持TCP/IP的系統(tǒng)平臺都能安裝LDAP客戶端。應用程序通過應用程序接口(API)調(diào)用把操作要求和參數(shù)發(fā)送給LDAP客戶端,客戶端發(fā)起LDAP請求,通過TCP/IP傳遞給LDAP服務器;LDAP服務器必須分配一個端口來監(jiān)聽客戶端請求,其代替客戶端訪問目錄庫,在目錄上執(zhí)行相應的操作,把包含結(jié)果或者錯誤信息的響應回傳給客戶端;應用程序取回結(jié)果。當客戶端不再需要與服務器通信時,由客戶端斷開連接。協(xié)議模型如下圖2.4所示:圖2.4 LDAP協(xié)議模型在LDAPV1與LDAPV2中,服務器需要追蹤全部參考節(jié)點和執(zhí)行協(xié)議操作,將最終結(jié)果返回給客戶端。為了提高效

35、率,在LDAPV3中,允許服務器將指向它的服務器的參考指針返回給客戶端,由客戶端自己去查找。這樣,雖然增加了客戶端軟件的復雜程度,但是可以有效分擔服務器的負載,提高服務器的效率和分布式應用能力。2. 數(shù)據(jù)模型LDAP是以樹狀方式組織信息,稱為目錄信息樹。DIT的根節(jié)點是一個沒有實際意義的虛根,樹上的節(jié)點被稱為條目(Entry),是樹狀信息中的基本數(shù)據(jù)單元。條目的名稱由一個或多個屬性組成,稱為相對識別名,此為條目在根節(jié)點下的唯一名稱標識,用來區(qū)別與它同級別的條目。從一個條目到根的直接下級條目的RDN序列組成該條目的識別名(Distinguishe Name,DN),DN是該條目在整個樹中的唯一名

36、稱標識。DN的每一個RDN對應DIT的一個分支,從Root一直到目錄條目。下圖2.5為一個LDAP目錄信息樹結(jié)構(gòu)。圖2.5 LDAP目錄信息樹結(jié)構(gòu)3. LDAP的實現(xiàn)OpenLDAP 2.x版本支持LDAPV3,最新的版本(2.1版)可以支持LDAPV3協(xié)議的絕大部分特性,包括一些擴展功能。OpenLDAP支持模式訪問控制和模式擴展,但是不支持動態(tài)模式擴展,無法在運行時擴展模式,只能通過修改服務器的配置文件來實現(xiàn)。OpenLDAP通過配置文件中的referral指令字實現(xiàn)到其他命名上下文或其他LDAP服務器的引用。OpenLDAP支持的安全機制比較全面,支持多種SASL認證機制,也可以利用各種

37、認證系統(tǒng)和加密系統(tǒng)實現(xiàn)安全性較高的目錄服務。OpenLDAP使用獨立進程slurpd實現(xiàn)目錄復制服務,可以通過結(jié)合slurpd和slapd的配置文件設計復制策略。OpenLDAP也提供自己的訪問控制機制。主要通過服務器配置文件中的access指令字實現(xiàn),access提供了豐富的語法,支持各種通配符,可以實現(xiàn)強大的訪問控制功能。本課題利用OpenLDAP目錄服務存儲用戶信息并實現(xiàn)基于Kerberos認證系統(tǒng)的用戶認證,利用其訪問控制實現(xiàn)應用的授權(quán)。3用戶認證與授權(quán)方案的研究與實現(xiàn)本課題基于Linux的PAM機制、Kerberos認證系統(tǒng)、LDAP目錄服務系統(tǒng)設計了域用戶認證與應用授權(quán)的架構(gòu),該架

38、構(gòu)運行在操作系統(tǒng)為Linux的主機上,提供基本的Kerberos登錄認證服務,以與Kerberos化的遠程登錄服務(ktelnet)、Kerberos化的文件傳輸(kftp)等網(wǎng)絡應用服務。OpenLDAP目錄服務系統(tǒng)完成用戶信息的存儲以與相應權(quán)限的設置。本課題編寫了客戶端程序,作為認證接口,提供給應用程序調(diào)用,實現(xiàn)用戶的登錄認證與應用的授權(quán)。該系統(tǒng)架構(gòu)如圖3.1所示:圖3.1用戶認證與應用授權(quán)系統(tǒng)架構(gòu)3.1搭建Kerberos認證系統(tǒng)1、組成模塊的安裝與配置由MIT開發(fā)的Kerberos系統(tǒng),其源代碼是公開的,并且一直在不間斷的進行維護和更新,因此代碼的穩(wěn)定性以與成熟性都非常好,同時提供了對

39、多種操作系統(tǒng)的支持。下面介紹其在Linux操作系統(tǒng)下的安裝與配置。首先,解壓代碼壓縮包krb5-1.3.1.tacgz,使用GNU自動配置工具(autoconf)進行安裝。安裝完畢后,系統(tǒng)必須先建立起相關(guān)的Kerberos配置文件,從而使系統(tǒng)能夠到指定的文件里讀取配置信息。它使用幾個端口進行密鑰的分發(fā)和管理,需要在Linux系統(tǒng)的/etc/services文件末尾增加Kerberos使用的端口號。同時,還必須修改系統(tǒng)的超級服務器控制文件inetd.conf。此時,還未將Kerberos集成到域名解析服務器DNS,本課程設計選擇BIND9.2.4作為DNS服務器。Kerberos系統(tǒng)使用時間戳來

40、防止重放攻擊,因此,還需要設置時間同步服務器ntp server,需要在配置文件中添加與其同步的機器的IP地址,如下:server server 44Kerberos系統(tǒng)的配置文件krb5.conf包含Kerbcros的配置信息、用于該域的KDC以與管理服務器的位置、用于當前域和Kerberos的缺省設置以與將主機名映射到Kerberos域的設置。設定域名為,krb5.conf簡單描述如下:libdefaultsdefault_realm=SECOA.CNrealmsSECOA.CN=kdc=admin_server=Kerberos的密鑰分發(fā)中心

41、KDC的配置文件kdc.conf簡單描述如下:kdc_ports=750,88realmsSECOA.CN=kdc_ports=750,88max_life=10h 0m 0smax_renewable_life=7d 0h 0m 0smaster_key_type=des3-hmac-sha12、數(shù)據(jù)庫的創(chuàng)建與管理編輯完上述配置文件后,、需要創(chuàng)建并填充存放主信息條的Kerbcros的數(shù)據(jù)庫、創(chuàng)建系統(tǒng)管理員、創(chuàng)建新的密鑰列表、創(chuàng)建新的參與者等。l 創(chuàng)建數(shù)據(jù)庫在主KDC上使用kdb5_util程序來創(chuàng)建數(shù)據(jù)庫和可選的stash文件。stash文件是加密格式駐留在KDC部磁盤上的master ke

42、y的復制,它是在kadmind和krb5kdc守護進程啟動之前自動認證KDC的。l 創(chuàng)建系統(tǒng)管理員Kerberos基本認證系統(tǒng)需要由系統(tǒng)管理員來對主體數(shù)據(jù)庫與密鑰數(shù)據(jù)庫進行管理與維護,創(chuàng)建系統(tǒng)管理員的方法如下:在訪問控制(ACL)文件里增加系統(tǒng)管理員至少需要添加一個系統(tǒng)管理員的Kerberos主體,訪問控制文件名在kdc.conf中指定。缺省的文件名為kadm5.acl,其文件格式為:Kerberos-principal permissions optional-target-principal該文件里的權(quán)限包括:a、d、m、c、i等,并且可以包含匹配符。為了給所有具有*/adminSECOA

43、.CN主體權(quán)限來改變?nèi)魏螌嶓w在數(shù)據(jù)庫所有權(quán)限,只需在文件中加入如下語句:*/adminSECOA.CN。在Kerberos數(shù)據(jù)庫里增加系統(tǒng)管理員通過在主KDC上使用kadmin.local命令完成,要增加的管理員主體應是ACL文件中的主體。生成系統(tǒng)管理員主體admin/admin:#kadmin.local:addprinc admin/adminSECOA.CN。3、源代碼分析 MIT的kerberos源代碼非常龐大,下面以最新的1.3.1版本為例,對其進行簡要的分析。為了不涉與過多的編程細節(jié),主要給出一些關(guān)鍵的API函數(shù)的名稱與其主要作用。l krb5_context用來代表任意進程的狀態(tài)

44、。在這個結(jié)構(gòu)里存儲全局參數(shù),包括缺省域、缺省加密類型、缺省配置文件等。此函數(shù)提供了對存儲在context結(jié)構(gòu)里的數(shù)據(jù)的訪問,而這些數(shù)據(jù)是不能被開發(fā)人員直接訪問的。krb5_ini_context(/*IN/OUT*/krb5_context*context)此函數(shù)用來初始化Kerberos基本context信息:加密類型、缺省域和指向特定數(shù)據(jù)的指針。在此context中的數(shù)據(jù)應該用krb5_free_context()來釋放。krb5_free_context(/*IN/OUT*/krb5_context context)此函數(shù)用來釋放通過krb5_init_context()返回的conte

45、xt。l Krb5_auth_context用來表示一個連接中直接被客戶/服務器認證所涉與各種功能的容,通常包括密鑰區(qū)、地址、序列號、認證符和校驗類型等信息。krb5_auth_con_init(/*OUT*/krb5_auth_context*auth_context)此函數(shù)用來初始化auth_context的信息,包括與各種認證例程相關(guān)的所有數(shù)據(jù)。krb5_auth_con_free(/*IN/OUT*/krb5_auth_context*auth_context)此函數(shù)用來釋放由krb5_auth_con_init函數(shù)返回的認證容auth_context。l 主體訪問函數(shù)主體定義了一個參

46、與一次網(wǎng)絡通信的唯一命名的客戶或服務器實體,如下的兩個函數(shù)允許用來生成、修改與訪問主體部分信息。krb5_parse_name()此函數(shù)用來將主體名稱的單字符串表示方式轉(zhuǎn)化為協(xié)議中所使用的多個組成部分的主體名稱格式。krb5_unparse_name()此函數(shù)用來將多個組成部分構(gòu)成的主體名稱轉(zhuǎn)化為單字符串表示的主體名稱格式。l 證書緩存函數(shù)Krb5_cc_resolve()此函數(shù)用來把字符串格式的名字轉(zhuǎn)化為相應的ID,并添寫相關(guān)信息。krb5_cc_default()此函數(shù)用來獲取缺省證書文件的相關(guān)信息。krb5_cc-initialize()此函數(shù)用來生成或刷新證書緩存。krb5_cc_ge

47、t_principal()此函數(shù)用來獲取證書緩存中的主體信息,通過調(diào)用krb5_free_Principal()來釋放存。krb5_cc_remove_cred()此函數(shù)用來銷毀指定主體名的證書。l 其它全局性應用函數(shù)krb5_get_credentials()此函數(shù)為使用證書緩存或TGS交換來獲得一額外的票據(jù)。krb5_get_in_tkt()客戶利用此函數(shù)獲得使用某種服務的初始票據(jù)。krb5_mk_req()此函數(shù)用來格式化一個KRB_AP_REQ信息到輸出緩沖區(qū)里。krb5_rd_req()此函數(shù)用來分析一個KRB_AP_REQ信息,并返回其容。krb5_mk_rep()此函數(shù)用來格式化

48、并加密一個KRB_AP_REP信息。krb5_rd_rep()此函數(shù)用來分析并解密一個KRB_AP_REP信息,調(diào)用者應該再調(diào)用krb5_free_ap_rep_enc_part()來釋放此結(jié)構(gòu)。krb5_sendauth()客戶端程序利用此函數(shù)來向服務器方發(fā)送認證的票據(jù)。krb5_recvauth()此函數(shù)與krb5_sendauth()搭配使用,服務器用來接收來自客戶的信息并向客戶提供認證應答信息。krb5_mk_safe()此函數(shù)用來生成一個KRB_SAFE格式的消息。krb5_rd_safe()此函數(shù)用來分析輸入緩沖區(qū)里的KRB_SAFE格式的消息。krb5_mk_priv()此函數(shù)用

49、來生成一個KRB_PRIV格式的消息。krb5_rd_priv()此函數(shù)用來分析輸入緩沖區(qū)里的KRB_PRIV格式的消息。4、網(wǎng)絡應用的Kerberos化Kerberos作為可信任的第三方認證系統(tǒng),必須和其它應用服務系統(tǒng)相結(jié)合才能發(fā)揮作用9。但由于原有的應用系統(tǒng)并不能直接適用于Kerberos環(huán)境,其客戶端和服務器端的軟件都要做一定的修改,使之可以在成功建立TCP連接后能夠交換加密的認證信息??梢酝ㄟ^下述方法將網(wǎng)絡應用加入到Kerberos環(huán)境中:1 改網(wǎng)絡應用的客戶端和服務器端程序,加入發(fā)送、接收和處理Kerberos認證信息與后續(xù)信息處理的代碼。在Kerberos服務器上定義應用服務的主體

50、標識,分配密鑰并加入到密鑰庫中。在網(wǎng)絡應用服務器運行的主機上保留一份root只讀的密鑰文件。將網(wǎng)絡應用添加到超級服務器INETD里,取代原來不安全的應用服務。然后重起INETD。本課程設計中,將Kerberos化的ktelnet、ftp服務分別簡稱為ktelnet、kftp,分析如下:l ktelnet應用服務在ktelnet應用服務系統(tǒng)中,其服務器端程序始終運行在提供服務的機器上,等待來自客戶方的服務請求。當用戶鍵入krb5-telnet后,客戶端程序就開始在本地系統(tǒng)上運行,執(zhí)行下述動作:根據(jù)提供給telnet命令的遠程主機地址參數(shù)獲得相應服務器主體信息;獲得用戶的Kerberos證書文件信

51、息與訪問ktelnet的票據(jù)信息;創(chuàng)建一個與遠程登錄服務器的TCP網(wǎng)絡連接;將Kerberos認證信息傳送給服務方;接收來自服務方的認證應答信息,認證成功則繼續(xù)正常的會話。為接受服務請求,服務器端應用程序?qū)?zhí)行下述動作:準備好Keytab文件,并生成自身主體信息;等待來自客戶方的服務請求;接受客戶端的連接請求,與客戶建立初始的TCP網(wǎng)絡連接;接收并處理來自客戶方的Kerberos認證信息;向客戶發(fā)送認證響應信息。若通過了對客戶的認證,就發(fā)送認證成功信息并繼續(xù)提供正常的遠程登錄服務,否則發(fā)送認證失敗信息并切斷連接接收來自服務方的認證應答信息。l kftp應用服務在Kftp應用服務系統(tǒng)中,其服務器

52、端程序始終運行在提供服務的機器上,等待來自客戶方的服務請求。當用戶鍵入krb5-ftp命令后,其客戶端程序就開始在本地系統(tǒng)上運行。進入ftp處理程序后,它就要對用戶提供的ftp命令進行分析,在完成一系列準備之后,向服務器方發(fā)送認證信息,得到認證后完成用戶提交的遠程文件傳輸任務。此過程即根據(jù)用戶調(diào)用的ftp命令去執(zhí)行Kerberos認證并繼續(xù)提供正常的文件傳輸服務,其工作過程與上述ktelnet應用服務過程類似,不再贅述。將telnet和ftp等網(wǎng)絡應用服務Kerberos化后,用戶需要通過kinit命令來獲得Kerberos初始票據(jù),利用Kerberos作為可信任的第三方認證系統(tǒng),為不安全的網(wǎng)

53、絡環(huán)境提供了較為可靠的用戶認證方式。3.2搭建OpenLDAP服務器1、組成模塊的安裝與配置由GUN開發(fā)的OpenLDAP軟件包,其源代碼是公開的,可以支持LDAP V3的絕大部分特性,包括一些擴展功能。版本2之后的OpenLDAP使用了pthread庫,pthread庫是支持搶先式調(diào)度的線程庫。OpenLDAP支持多種后臺數(shù)據(jù)庫,缺省的數(shù)據(jù)庫是SleepCat的LDBM,OpenLDAP服務器有兩個獨立的服務器進程:slapd和slurpd。slapd提供目錄服務,slurpd用于根據(jù)目錄服務器日志的變化將目錄更新信息復制到從屬目錄服務器上。OpenLDAP的體系結(jié)構(gòu)如下圖3.2所示:圖3.

54、2 OpenLDAP的體系結(jié)構(gòu)2、數(shù)據(jù)庫的創(chuàng)建與管理 首先,可以聯(lián)機使用LDAP來創(chuàng)建數(shù)據(jù)庫。通過這種方法,只需要簡單的啟動slapd,然后使用LDAP客戶端向其中增加條目。該方法對于創(chuàng)建小規(guī)模的數(shù)據(jù)庫而言是比較適合的,適合于支持更新的數(shù)據(jù)庫。第二種創(chuàng)建數(shù)據(jù)庫的方法是使用slapd提供的特殊的應用程序脫機執(zhí)行。本課題采用第一種方法創(chuàng)建數(shù)據(jù)庫。使用LDAP客戶端增加條目之前,需要在slapd.conf文件中設置如下選項:suffixdn該選項定義了該數(shù)據(jù)庫中保存的條目。應該將它設置為將要創(chuàng)建的子樹的rootDN。本課題設置域名為“”,則為:suffix“dc=secoa,dc=cn”同時,確保指

55、定了索引文件應該被創(chuàng)建的目錄:directory<directory>,應該使得目錄具有正確的權(quán)限,使得slapd可以寫入。接著配置slapd,以便可以以具有增加條目權(quán)限的用戶身份連接??梢耘渲媚夸泚頌樵摬僮髦付ㄒ粋€特定的超級管理員用戶。通過在數(shù)據(jù)庫定義中使用下面的兩個選項實現(xiàn):rootdn“cn=secoa,dc=cn”rootpw secret上述選項制定了一個DN和口令,該DN可以被作為超級用戶的數(shù)據(jù)庫條目進行認證(該條目允許執(zhí)行任何操作)。此處指定的DN和口令總是能夠工作,無論該條目的名稱實際上是否存在,或者無論其口令是什么。最后,還應該確保數(shù)據(jù)庫定義包含了需要的索引定義:

56、index<attrlist>|defaultpres,eq,approx,sub,none上述工作完成后,啟動slapd,使用LDAP客戶軟件連接到LDAP,開始增加條目。比如,要使用ldapadd工具增加一個組織條目和一個組織角色條目,應該創(chuàng)建一個包含如下所示容的entries.ldif文件:#Organization for Example Corporationdn:dc=secoa,dc=cnobjectClass:dcObjectobjectClass:organizationdc:secoao:Corporationdescription:The Corporation#Organizational Role for Directory Managerdn:cn=Manager,dc=secoa,dc=cnobjectClass:organizationalRolecn:Managerdescription:Directory Manager然后,使用下面的命令創(chuàng)建條目:ldapadd-f entries.ldif-x-D“cn=Manager,dc=secoa,dc=cn”-w secret本課題中采用基于PHP語言編寫的開放源代碼的phpldapadmin管理和維護OpenLDAP的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論