網絡系統(tǒng)課程設計基于Linux的用戶認證與授權研究_第1頁
網絡系統(tǒng)課程設計基于Linux的用戶認證與授權研究_第2頁
網絡系統(tǒng)課程設計基于Linux的用戶認證與授權研究_第3頁
網絡系統(tǒng)課程設計基于Linux的用戶認證與授權研究_第4頁
網絡系統(tǒng)課程設計基于Linux的用戶認證與授權研究_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、長沙理工大學基于linux的用戶認證與授權研究xxx學 院 計算機與通信工程 專業(yè) 計算機科學與技術 班 級 計算機0802班 學號 學生姓名 xxx 指導教師 課程成績 完成日期 2011年3月4日課程設計任務書計算機與通信工程學院 計算機科學與技術專業(yè) 課程名稱網絡系統(tǒng)課程設計時間20102011學年第2學期12周學生姓名曹駿指導老師鄧江沙題 目基于linux的用戶認證與授權研究主要內容:本課程設計主要完成一個基于linux的用戶認證與授權的研究實現(xiàn)。1、重點分析了kerberos認證系統(tǒng)與ldap目錄服務系統(tǒng)的消息格式、數據庫管理、安裝配置、配置文件、接口函數等。2、利用可信平臺模塊(t

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

3、定學 院 計算機與通信工程 專 業(yè) 計算機科學與技術班 級 計算機0802班 學 號 200850080212 學生姓名 曹駿 指導教師 鄧江沙 課程成績 完成日期 2011年3月4日 指導教師對學生在課程設計中的評價評分項目優(yōu)良中及格不及格課程設計中的創(chuàng)造性成果學生掌握課程內容的程度課程設計完成情況課程設計動手能力文字表達學習態(tài)度規(guī)范要求課程設計論文的質量指導教師對課程設計的評定意見綜合成績 指導教師簽字 年 月 日基于linux的用戶認證與授權系統(tǒng)的研究實現(xiàn)學生姓名:曹駿 指導老師:鄧江沙摘 要 本課程設計在對可信計算的體系結構、linux的安全機制、現(xiàn)有的認證協(xié)議等深入研究的基礎上,提出

4、了基于linux操作系統(tǒng)的用戶認證與應用授權的架構,并最終完成了整個系統(tǒng)的搭建。本文重點分析了kerberos認證系統(tǒng)與ldap目錄服務系統(tǒng)的消息格式、數據庫管理、安裝配置、配置文件、接口函數等。利用可信平臺模塊(tpm)對kerberos協(xié)議及其藍本needhamschroeder協(xié)議進行了改進,增強了它們的安全性。并搭建了kerberos認證系統(tǒng),實現(xiàn)了用戶登錄的kerberos認證、網絡應用的kerberos化;搭建了openldap目錄服務系統(tǒng),并利用sasl機制實現(xiàn)了其與kerberos認證系統(tǒng)的結合。在此基礎上,利用openldap的訪問控制機制實現(xiàn)了對各種網絡應用服務的授權訪問。

5、利用我們編寫的客戶端應用接口,用戶可以完成上述認證與授權過程。該系統(tǒng)作為信息安全實踐創(chuàng)新平臺的一部分,可應用于信息安全教學的實踐環(huán)節(jié),還可以將其應用于黨政機關辦公自動化與協(xié)同辦公,保護黨政內網的安全。關鍵詞 身份認證;目錄服務;應用授權l(xiāng)inux-based user authentication and authorizationstudent name: caojun advisor:dengjiangshaabstract the curriculum design in the architecture of trusted computing, linux security mech

6、anisms, 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 system a

7、nd 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 security.

8、 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 access con

9、trol 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, has be

10、en 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.2課程設計目的21

11、.3問題描述32用戶認證與授權方案概述52.1 linux的安全機制52.1.1 pam機制52.1.2 認證機制72.2 kerberos認證系統(tǒng)92.3 輕量級目錄訪問協(xié)議102.3.1 協(xié)議模型102.3.2數據模型112.3.3 ldap的實現(xiàn)113用戶認證與授權方案的研究與實現(xiàn)133.1搭建kerberos認證系統(tǒng)133.1.1、組成模塊的安裝與配置133.1.2、數據庫的創(chuàng)建與管理153.1.3、源代碼分析153.1.4、網絡應用的kerberos化183.2搭建openldap服務器193.2.1、組成模塊的安裝與配置193.2.2、數據庫的創(chuàng)建與管理203.3 kerberos

12、認證系統(tǒng)與openldap的結合223.4 實現(xiàn)訪問控制233.5 客戶端應用程序的編寫25參考文獻27結束語281引言1.1課題背景 linux是一個類unix的多用戶、多任務、功能強大的操作系統(tǒng)。最初版本是芬蘭的linus torvalds于1991年獨立開發(fā)的。由于其免費提供源代碼及可執(zhí)行文件,吸引了全世界各地的unix行家為其編寫了大量的驅動程序和應用軟件,在短短的幾年時間里,linux迅速發(fā)展成為一個相當完善的操作系統(tǒng)。不僅穩(wěn)定可靠,而且還具有良好的兼容性、可移植性。近幾年來,linux操作系統(tǒng)以其高效性、靈活性以及開放性得到了蓬勃發(fā)展,不僅被廣泛應用于pc、服務器,還廣泛的應用于手

13、機、pda等高端嵌入設備。但是,目前的linux版本在安全方面還存在著許多不足,其安全級別低于c2級。其新功能的不斷加入及安全機制的錯誤配置或錯誤使用,都會帶來很多問題。出于系統(tǒng)安全考慮,linux提供的安全機制主要有:身份標識與鑒別、文件訪問控制、特權管理、安全審計、ipc資源的訪問控制。目前,unix下的一種新的安全機制已被開發(fā)并且在linux中實現(xiàn)。這種機制稱為可插入身份認證模塊,即為pam機制1。當用戶在登錄linux時,首先要通過系統(tǒng)的pam驗證。pam機制可以用來動態(tài)地改變身份驗證的方法和要求,允許身份認證模塊按需要被加載到內核中,模塊在加入后即可用于對用戶進行身份認證,而不需要重

14、新編譯其它公用程序。pam體系結構的模塊化設計及其定義的良好接口,使得無需改變或者干擾任何現(xiàn)有的登錄服務就可以集成范圍廣泛的認證和授權機制,因此,近年來,對pam的底層鑒別模塊的擴展廣泛應用于增強linux操作系統(tǒng)的安全性。kerberos認證協(xié)議是目前應用最廣泛的、基于可信任第三方的網絡身份認證協(xié)議。linux操作系統(tǒng)更好的安全性保證可以由kerberos來實現(xiàn)2,3,目前,基于linux操作系統(tǒng),利用kerberos協(xié)議增強其用戶認證的安全性的方案在國內外均有提出。kerberos認證協(xié)議最初是麻省理工學院(mit)為其athena項目開發(fā)的,其從提出到現(xiàn)在,共經歷了五個版本的發(fā)展4。目前

15、廣泛應用的版本是其第五版本kerberos v5。其本身存在著一定的局限性,針對其安全缺陷,已有諸多的解決方案提出。同時,伴隨著其軟件的優(yōu)化、升級,kerberos認證系統(tǒng)的應用將會越來越廣泛。輕量級目錄訪問協(xié)議(ldap)作為目前廣泛應用的目錄訪問協(xié)議,可以實現(xiàn)授權管理、網絡用戶管理、電子政務目錄體系等服務。其基于訪問控制策略語句的訪問控制列表(access control list,acl)來實現(xiàn)訪問控制與應用授權,不同于現(xiàn)有的關系型數據庫和應用系統(tǒng),訪問控制異常靈活和豐富5。目前,ldap已經成為internet上目錄服務的標準協(xié)議。已有包括微軟、ibm在內的幾十家大型軟件公司采用了ld

16、ap技術。在我國,ldap技術已應用在北京大學校園網絡用戶管理系統(tǒng)、上海政務網統(tǒng)一用戶管理、中國數字圖書館系統(tǒng)的用戶管理部分,以及北京、上海、天津、福建等省級認證中心等。1.2課程設計目的 用戶認證與應用授權是安全機制的前提,基于linux操作系統(tǒng),深入研究用戶認證與應用授權機制,不僅可以深入理解現(xiàn)有的安全機制,隨著研究的深入,也可以發(fā)現(xiàn)其現(xiàn)有安全機制的問題所在。用戶在登錄linux操作系統(tǒng)時,首先要通過系統(tǒng)的pam進行驗證。任何認證機制都可以加入到pam的底層鑒別模塊中,可以被任何基于pam開發(fā)的程序調用。因此,將更多安全性更高的認證機制擴展到pam的底層鑒別模塊中,可以增強linux操作系

17、統(tǒng)的安全性。kerberos是目前應用最廣泛的認證協(xié)議,本課程設計將其作為認證模塊擴展到pam中,基于pam的程序就可以調用該認證模塊用于用戶認證等驗證機制,可以增強系統(tǒng)及各種應用的安全性。本課程設計提出的用戶認證與應用授權系統(tǒng),集成了用戶與各種網絡應用服務的資源和信息,可以方便有效的實現(xiàn)對用戶的統(tǒng)一管理。當用戶訪問某種網絡服務時,首先通過kerberos的認證,登錄到ldap目錄服務系統(tǒng),然后ldap可以通過其acl驗證用戶是否擁有訪問該服務的權限。這樣既可以實現(xiàn)基于用戶的網絡應用管理,也可以實現(xiàn)對用戶的訪問控制。該系統(tǒng)可以應用于信息安全教學、信息安全系統(tǒng)的開發(fā)與實現(xiàn),并將應用于黨政機關辦公

18、自動化與協(xié)同辦公,保護黨政內網的安全,具有實用意義與創(chuàng)新意義。1.3問題描述 本課程設計在深入理論研究的基礎上,基于linux的pam機制、kerberos認證系統(tǒng)、ldap目錄服務系統(tǒng)設計了域內用戶認證與應用授權的架構。該架構運行在操作系統(tǒng)為linux的主機上,提供基本的kerberos登錄認證服務,以及kerberos化的遠程登錄服務(ktelnet)、kerberos化的文件傳輸(kftp)等網絡應用服務。openldap目錄服務系統(tǒng)完成用戶信息的存儲以及相應權限的設置。本課題編寫了客戶端程序,作為認證接口,提供給應用程序調用,實現(xiàn)用戶的登錄認證與應用的授權。根據所提出的架構,在“華鐳l

19、inux操作系統(tǒng)”下配置各個相關模塊,同時編程實現(xiàn)客戶端用戶認證的接口函數,使得用戶可以調用該接口函數完成登錄某種網絡應用服務的認證。本課程設計的理論研究情況列舉如下:(1)linux操作系統(tǒng)相關的理論知識,包括其組成模塊、內部已有的安全機制、安全缺陷及其安全需求等。(2)linux內部的可插入式認證模塊(pam)的運行原理、組成部分及其應用實例,特別是其內部的用戶登錄認證與應用授權模塊。(3)學習現(xiàn)有的認證協(xié)議,著重分析kerberos協(xié)議的藍本needham-schroeder認證協(xié)議,熟悉其協(xié)議過程、自身缺陷、各次攻擊以及改進過程,并基于可信平臺模塊(tpm)對其進行改進,以增強其安全性

20、。(4)研究kerberos認證系統(tǒng),包括其系統(tǒng)組成、協(xié)議原理、數據庫創(chuàng)建與管理、應用接口函數等,并研究如何將其配置在所選操作系統(tǒng)“華擂linux”的pam模塊中。(5)研究輕量級目錄訪問協(xié)議(ldap),包括其命名模型、協(xié)議原理、數據庫創(chuàng)建與管理、安全機制、應用接口函數,及其如何與kerberos認證系統(tǒng)相結合等。本課程設計所搭建的用戶認證與應用授權系統(tǒng)包括服務器端、客戶端兩部分,分別介紹如下:(1)服務器端a.配置kerberos的服務器端,作為kerberos的密鑰分發(fā)中心(kdc),完成as認證服務和tgs票據授權服務,并將網絡應用服務進行kerberos化,實現(xiàn)用戶登錄網絡應用服務的

21、kerberos認證;b.配置openldap的服務器端,作為用戶身份管理的核心數據庫,利用其目錄管理功能實現(xiàn)對用戶信息的管理,并利用其訪問控制列表(acl)實現(xiàn)應用的授權;c.利用sasl機制實現(xiàn)kerberos系統(tǒng)與openldap系統(tǒng)的結合,并實現(xiàn)兩者數據庫的匹配,完成用戶認證與應用授權系統(tǒng)的模塊架構。(2)客戶端a.作為kerberos系統(tǒng)的客戶端用戶在此登錄,完成用戶認證、服務請求,經由認證服務器認證后,調用某種kerberos化的網絡應用服務,完成與應用服務器的相互認證。b.作為openldap目錄服務系統(tǒng)的客戶端用戶可以對目錄信息進行管理與訪問。c.用戶可以調用課題所編寫的認證接

22、口函數,完成用戶認證與應用授權過程。2用戶認證與授權方案概述2.1 linux的安全機制2.1.1 pam機制通常在認證時,實現(xiàn)認證功能的代碼通常作為應用程序的一部分而一起編譯,如果發(fā)現(xiàn)所用算法存在某些缺陷或想采用另外一種認證方法時,用戶不得不重寫(修改或替換)、重新編譯原程序。所以希望能夠將認證功能從應用中獨立出來,單獨進行模塊化的設計、實現(xiàn)和維護;另一方面,希望為認證模塊建立標準api,以便各個應用程序能方便的調用它們所提供的各種功能;同時認證機制對其上層用戶(包括應用程序和最終用戶)是透明的。應此需求,1995年,sun的研究人員提出可插入式認證模塊,目前其已逐漸成為各種unix系統(tǒng)上包

23、括linux操作系統(tǒng)的認證方案。層次結構:可插入式認證模塊(pam)機制采用模塊化設計和插件功能,提供有關執(zhí)行用戶認證與賬號維護的服務。其在實現(xiàn)上采用了分層的體系結構,將各種具體的認證模塊從應用程序中獨立出來,使得認證機制與應用程序之間相對獨立。從而可以在應用程序中根據需要靈活地插入所需要的認證模塊或替換原先的認證組件,而不必對應用程序做任何修改。應用程序只需調用應用編程接口api即可方便的使用pam提供的各種認證功能,而不必了解太多的底層細節(jié)。pam模塊化的體系結構,可以集成范圍廣泛的認證機制,輕易地做到認證應需而改變,使得軟件的定制、維持和升級更加輕松。其層次結構如圖2-1所示6。由圖2-

24、1可以看出,pam api是應用程序層與pam服務模塊之間聯(lián)系的紐帶,起著承上啟下的作用。系統(tǒng)管理員通過pam配置文件來制定不同應用程序的不同認證策略,當應用程序調用pam api時,應用接口層將按照配置文件pam.conf的規(guī)定,加載相應的pam服務模塊。接著,應用程序層的參數通過pamapi傳遞給底層的pam服務模塊。當pam服務模塊完成相應的認證操作之后,將結果返回給應用接口層,然后由pam api根據具體的配置文件將此應答返回給應用程序層。圖2-1 pam層次結構 工作原理:應用程序層與pam服務模塊通過pam api建立聯(lián)系,按照需要調用相關的服務模塊,完成對某種應用程序的認證。工作

25、流程如下圖2-2所示:圖2-2 pam工作流程對應圖2-2,pam機制在運行時,按照圖中所標示的數字,依次完成如下步驟:l 用戶調用某個應用程序,以得到某種服務;l pam應用程序調用后臺的pam庫進行認證工作;l pam庫在/etc/pam.d/目錄中查找有關應用程序細節(jié)的配置文件, 該文件告訴pam,此應用程序使用何種認證機制;l pam庫裝載所需的認證模塊;l 上述裝載的認證模塊讓pam與應用程序中的會話函數進行通信;l 會話函數向用戶要求有關信息;l 用戶對這些要求做出回應,提供所需信息;l pam認證模塊通過pam庫將認證信息提供給應用程序;l 認證完成后,應用程序做出兩種選擇:將所

26、需權限賦予用戶,并通知用戶;l 若認證失敗,也通知用戶。2.1.2 認證機制目前,網絡通信主要提供五種通用的安全服務:認證服務、訪問控制服務、機密性服務、完整性服務和非否認性服務。認證服務是實現(xiàn)網絡安全最重要的服務之一,其他的安全服務在某種程度上都依賴于認證服務。認證包括信息認證和身份認證。信息認證保證了消息源的可靠性和消息在傳輸過程中的完整性;身份認證可以使通信雙方相互驗證身份,以保證通信雙方的真實性。本課程設計重點研究linux的安全機制用戶身份認證機制,對其認證方式與相關的認證協(xié)議進行了詳細的分析。認證機制主要是認證系統(tǒng)所采用的認證方式和認證協(xié)議,用于安全連接建立前通訊雙方身份的識別,從

27、而保障接收方接收到的數據確實是由發(fā)送方發(fā)送的。認證機制可以分為兩類:一類是通過雙方之間的交互式來證明對方身份的認證機制。該機制比較簡單,可以利用雙方的共享信息,如口令等進行身份的認證。如果通信雙方沒有共享信息,可以采用零知識證明技術進行認證。另一類采用可信第三方的認證機制。該機制中要求至少有一個可信任的第三方能夠同時識別發(fā)送方和接收方??尚诺谌阶C實發(fā)送方的身份,并回送一個證明信息(證書或是票據),從而保證發(fā)送方身份的真實性。身份認證的本質是被認證方擁有的一些信息(秘密信息、特殊硬件或特有生物學信息),除被認證方外,任何網絡用戶(認證權威除外)都不能偽造。通過身份認證,通信雙方可以相互驗證身份

28、,從而保證雙方都能夠與合法的授權用戶進行通信。主要有下面三種認證方式:l 口令認證方式口令認證是一種最簡單的用戶身份認證方式。系統(tǒng)通過核對用戶輸入的用戶名和口令與系統(tǒng)內已有的合法用戶名和口令是否匹配來驗證用戶的身份??诹钫J證的前提是請求認證者必須具有一個在用戶數據庫中唯一的id7。口令認證的安全性僅僅基于用戶口令的保密性,而用戶口令為方便記憶,一般較短而容易猜測,因此該方式不能抵御口令猜測攻擊;其次,口令的明文傳輸使得系統(tǒng)攻擊者很容易遭到竊聽;再者,由于系統(tǒng)以明文形式保存口令,一旦攻擊者獲得口令表,整個系統(tǒng)的安全性就會受到威脅。但是,由于該種認證方式實施簡單,其普遍應用于各種網絡認證中。l 基

29、于生物學特征的認證基于生物學信息的身份認證就是利用用戶所特有的生物學特征來區(qū)分和確認用戶的身份。這些個人特征是每個用戶特有的,且在一定時期內不會改變,如指紋、聲音、視網膜、dna圖案等8。由于這些特征不會丟失、被盜或忘記,因此適用于對用戶身份的鑒別和認證。但這種方案造價較高,適用于保密程度很高的場合。l 基于智能卡的認證智能卡是由一個或多個集成電路芯片組成的集成電路卡。集成電路中的微處理器和存儲器使智能卡具有數據存儲和處理的能力。智能卡可存儲用戶的個人參數和秘密信息(如idx、pwx和密鑰)。用戶訪問系統(tǒng)時必須持有該智能卡。基于智能卡的認證方式是一種雙因子的認證方式(pin+智能卡)。只有在用

30、戶正確輸入pin口令后,才能從智能卡中讀取秘密信息,進而利用該秘密信息與主機之間進行認證9。這種認證方案的安全性依賴于智能卡,由于智能卡本身提供硬件保護措施和加密算法,因此它既不易被偽造,也不能被直接讀取數據,可以利用這些功能加強系統(tǒng)整體的安全性能。但這種方法硬件投入較大,不管是客戶端的智能卡,還是服務器端的讀卡設備,造價都較高,因而限制了它的普遍性。認證協(xié)議是認證主體通過一系列有序的步驟證明自己身份的一個過程。認證協(xié)議定義了參與認證服務的所有通信方在認證過程中需要交換的所有消息格式和這些消息發(fā)生的次序以及消息的語義,采用密碼學機制來保證消息的完整性、保密性、消息來源、消息目的、時間性等。認證

31、協(xié)議是認證機制的基礎,認證協(xié)議的安全性決定了某種認證機制的優(yōu)劣。2.2 kerberos認證系統(tǒng)kerberos認證協(xié)議是一種應用于開放式網絡環(huán)境、基于可信任第三方的tcp/ip網絡認證協(xié)議,可以在不安全的網絡環(huán)境中為用戶對遠程服務器的訪問提供自動鑒別、數據安全性和完整性服務、以及密鑰管理服務。該協(xié)議是美國麻省理工學院(mit)為其athena項目開發(fā)的,基于needham-schroeder認證模型,使用des算法進行加密和認證。至今,kerberos系統(tǒng)已有五個版本,其中version1到version 3是在實驗室里開發(fā)和測試的。1988年開發(fā)的version 4是公諸于眾的第一個版本,

32、它是分布式計算環(huán)境(dce)框架的組成部分,已在一些unix系統(tǒng)中應用過。1990年推出version 5進一步對version 4中的某些安全缺陷做了改進,不僅完善了version 4所采用的基于des的加密算法,而且還采用獨立的加密模塊,允許用戶根據自己的實際需要選擇其它的加密算法,使得安全性得到了進一步的提高。目前kerberos v5已經被ietf正式命名為rfc1510。協(xié)議原理:在kerberos協(xié)議過程中,發(fā)起認證服務的通信方稱為客戶端,客戶端需要訪問的對象稱為應用服務器。首先是認證服務交換,客戶端從認證服務器(as)請求一張票據許可票據(ticket granting tick

33、et,tgt),作為票據許可服務(ticketgranting server,tgs),即圖2-3中消息過程1,2;接著是票據授權服務交換,客戶端向tgs請求與服務方通信所需要的票據及會話密鑰,即圖2-1中消息過程3,4;最后是客戶端/應用服務器雙向認證,客戶端在向應用服務器證實自己身份的同時,證實應用服務器的身份,即圖2-3中消息過程5,6。圖2-3 kerberos認證系統(tǒng)結構及其協(xié)議過程2.3 輕量級目錄訪問協(xié)議在kerberos域內,kerberos系統(tǒng)可以提供認證服務,系統(tǒng)內的訪問權限和授權則需要通過其他途徑來解決。輕量級目錄訪問協(xié)議(ldap)使用基于訪問控制策略語句的訪問控制列表

34、(access control list,acl)來實現(xiàn)訪問控制與應用授權,不同于現(xiàn)有的關系型數據庫和應用系統(tǒng),訪問控制異常靈活和豐富。因此,本次課程設計將輕量級目錄訪問協(xié)議(ldap)與kerberos認證機制、pam機制結合在一起,共同完成域內的用戶認證與應用授權。2.3.1 協(xié)議模型ldap協(xié)議采用的通用協(xié)議模型是一個由客戶端(client)發(fā)起操作的客戶端服務器(server)響應模型。在此協(xié)議模型中,ldap客戶端通過tcp/ip的系統(tǒng)平臺和ldap服務器保持連接,這樣任何支持tcp/ip的系統(tǒng)平臺都能安裝ldap客戶端。應用程序通過應用程序接口(api)調用把操作要求和參數發(fā)送給l

35、dap客戶端,客戶端發(fā)起ldap請求,通過tcp/ip傳遞給ldap服務器;ldap服務器必須分配一個端口來監(jiān)聽客戶端請求,其代替客戶端訪問目錄庫,在目錄上執(zhí)行相應的操作,把包含結果或者錯誤信息的響應回傳給客戶端;應用程序取回結果。當客戶端不再需要與服務器通信時,由客戶端斷開連接。協(xié)議模型如下圖2-4所示:圖2-4 ldap協(xié)議模型在ldapv1與ldapv2中,服務器需要追蹤全部參考節(jié)點和執(zhí)行協(xié)議操作,將最終結果返回給客戶端。為了提高效率,在ldapv3中,允許服務器將指向它的服務器的參考指針返回給客戶端,由客戶端自己去查找。這樣,雖然增加了客戶端軟件的復雜程度,但是可以有效分擔服務器的負載

36、,提高服務器的效率和分布式應用能力。2.3.2數據模型ldap是以樹狀方式組織信息,稱為目錄信息樹。dit的根節(jié)點是一個沒有實際意義的虛根,樹上的節(jié)點被稱為條目(entry),是樹狀信息中的基本數據單元。條目的名稱由一個或多個屬性組成,稱為相對識別名,此為條目在根節(jié)點下的唯一名稱標識,用來區(qū)別與它同級別的條目。從一個條目到根的直接下級條目的rdn序列組成該條目的識別名(distinguishe name,dn),dn是該條目在整個樹中的唯一名稱標識。dn的每一個rdn對應dit的一個分支,從root一直到目錄條目。下圖2-5為一個ldap目錄信息樹結構。圖2-5 ldap目錄信息樹結構2.3.

37、3 ldap的實現(xiàn)現(xiàn)有的ldap服務器實現(xiàn)有:gun組織的openldap開放源代碼的ldap服務器、novell公司的nds(novell directory services)、微軟的活動目錄(active directory)、ibm公司的enetwork ldap服務器等。在實際應用中,出于兼容性的考慮,需要選擇支持ldapv3的ldap服務器,同時要兼顧到ldap服務器額外提供的功能特性。本課程設計基于“華鐳”linux操作系統(tǒng),采用gun組織的openldap作為ldap服務器,下面對其做簡單介紹。openldap是一個通過internet進行集體開發(fā)的項日。它的目標是提供一個穩(wěn)定

38、的、商業(yè)級的、功能全面的ldap套件,其中包括ldap服務器和一些開發(fā)工具,具體內容請參考網站。由于openldap是源碼開放的,所以它在linux平臺上受到廣泛的歡迎,當然也可以移植到其他的系統(tǒng)平臺上,甚至windows平臺上。openldap 2.x版本支持ldapv3,最新的版本(2.1版)可以支持ldapv3協(xié)議的絕大部分特性,包括一些擴展功能。openldap支持模式訪問控制和模式擴展,但是不支持動態(tài)模式擴展,無法在運行時擴展模式,只能通過修改服務器的配置文件來實現(xiàn)。openldap通過配置文件中的referral指令字實現(xiàn)到其他命名上下文或其他lda

39、p服務器的引用。openldap支持的安全機制比較全面,支持多種sasl認證機制,也可以利用各種認證系統(tǒng)和加密系統(tǒng)實現(xiàn)安全性較高的目錄服務。openldap使用獨立進程slurpd實現(xiàn)目錄復制服務,可以通過結合slurpd和slapd的配置文件設計復制策略。openldap也提供自己的訪問控制機制。主要通過服務器配置文件中的access指令字實現(xiàn),access提供了豐富的語法,支持各種通配符,可以實現(xiàn)強大的訪問控制功能。本課題利用openldap目錄服務存儲用戶信息并實現(xiàn)基于kerberos認證系統(tǒng)的用戶認證,利用其訪問控制實現(xiàn)應用的授權。3用戶認證與授權方案的研究與實現(xiàn)本課題基于linux的

40、pam機制、kerberos認證系統(tǒng)、ldap目錄服務系統(tǒng)設計了域內用戶認證與應用授權的架構,該架構運行在操作系統(tǒng)為linux的主機上,提供基本的kerberos登錄認證服務,以及kerberos化的遠程登錄服務(ktelnet)、kerberos化的文件傳輸(kftp)等網絡應用服務。openldap目錄服務系統(tǒng)完成用戶信息的存儲以及相應權限的設置。本課題編寫了客戶端程序,作為認證接口,提供給應用程序調用,實現(xiàn)用戶的登錄認證與應用的授權。該系統(tǒng)架構如圖3-1所示:圖3-1用戶認證與應用授權系統(tǒng)架構3.1搭建kerberos認證系統(tǒng)3.1.1、組成模塊的安裝與配置由mit開發(fā)的kerberos

41、系統(tǒng),其源代碼是公開的,并且一直在不間斷的進行維護和更新,因此代碼的穩(wěn)定性以及成熟性都非常好,同時提供了對多種操作系統(tǒng)的支持。下面介紹其在linux操作系統(tǒng)下的安裝與配置。首先,解壓代碼壓縮包krb5-1.3.1.tacgz,使用gnu自動配置工具(autoconf)進行安裝。安裝完畢后,系統(tǒng)必須先建立起相關的kerberos配置文件,從而使系統(tǒng)能夠到指定的文件里讀取配置信息。它使用幾個端口進行密鑰的分發(fā)和管理,需要在linux系統(tǒng)的/etc/services文件末尾增加kerberos使用的端口號。同時,還必須修改系統(tǒng)的超級服務器控制文件inetd.conf。此時,還未將kerberos集成

42、到域名解析服務器dns,本課程設計選擇bind9.2.4作為dns服務器。kerberos系統(tǒng)使用時間戳來防止重放攻擊,因此,還需要設置時間同步服務器ntp server,需要在配置文件中添加與其同步的機器的ip地址,如下:server server 44kerberos系統(tǒng)的配置文件krb5.conf包含kerbcros的配置信息、用于該域的kdc以及管理服務器的位置、用于當前域和kerberos的缺省設置以及將主機名映射到kerberos域的設置。設定域名為,krb5.conf簡單描述如下:libdefaultsdefault_realm=se

43、coa.cnrealmssecoa.cn=kdc=admin_server=kerberos的密鑰分發(fā)中心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-sha13.1.2、數據庫的創(chuàng)建與管理編輯完上述配置文件后,、需要創(chuàng)建并填充存放主信息條的kerbcros的數據庫、創(chuàng)建系統(tǒng)管理員、創(chuàng)建新的密鑰列表、創(chuàng)建新的參與者等。l 創(chuàng)建數據庫在主kdc上使用kdb5

44、_util程序來創(chuàng)建數據庫和可選的stash文件。stash文件是加密格式駐留在kdc內部磁盤上的master key的復制,它是在kadmind和krb5kdc守護進程啟動之前自動認證kdc的。l 創(chuàng)建系統(tǒng)管理員kerberos基本認證系統(tǒng)需要由系統(tǒng)管理員來對主體數據庫及密鑰數據庫進行管理與維護,創(chuàng)建系統(tǒng)管理員的方法如下:(1)在訪問控制(acl)文件里增加系統(tǒng)管理員至少需要添加一個系統(tǒng)管理員的kerberos主體,訪問控制文件名在kdc.conf中指定。缺省的文件名為kadm5.acl,其文件格式為:kerberos-principal permissions optional-targe

45、t-principal該文件里的權限包括:a、d、m、c、i等,并且可以包含匹配符。為了給所有具有*/adminsecoa.cn主體權限來改變任何實體在數據庫所有權限,只需在文件中加入如下語句:*/adminsecoa.cn。(2)在kerberos數據庫里增加系統(tǒng)管理員通過在主kdc上使用kadmin.local命令完成,要增加的管理員主體應是acl文件中的主體。生成系統(tǒng)管理員主體admin/admin:#kadmin.local:addprinc admin/adminsecoa.cn。3.1.3、源代碼分析mit的kerberos源代碼非常龐大,下面以最新的1.3.1版本為例,對其進行簡

46、要的分析。為了不涉及過多的編程細節(jié),主要給出一些關鍵的api函數的名稱及其主要作用。l krb5_context用來代表任意進程的狀態(tài)。在這個結構里存儲全局參數,包括缺省域、缺省加密類型、缺省配置文件等。此函數提供了對存儲在context結構里的數據的訪問,而這些數據是不能被開發(fā)人員直接訪問的。krb5_ini_context(/*in/out*/krb5_context*context)此函數用來初始化kerberos基本context信息:加密類型、缺省域和指向特定數據的指針。在此context中的數據應該用krb5_free_context()來釋放。krb5_free_context(

47、/*in/out*/krb5_context context)此函數用來釋放通過krb5_init_context()返回的context。l krb5_auth_context用來表示一個連接中直接被客戶/服務器認證所涉及各種功能的內容,通常包括密鑰區(qū)、地址、序列號、認證符和校驗類型等信息。krb5_auth_con_init(/*out*/krb5_auth_context*auth_context)此函數用來初始化auth_context的信息,包括與各種認證例程相關的所有數據。krb5_auth_con_free(/*in/out*/krb5_auth_context*auth_con

48、text)此函數用來釋放由krb5_auth_con_init函數返回的認證內容auth_context。l 主體訪問函數主體定義了一個參與一次網絡通信的唯一命名的客戶或服務器實體,如下的兩個函數允許用來生成、修改及訪問主體部分信息。krb5_parse_name()此函數用來將主體名稱的單字符串表示方式轉化為協(xié)議中所使用的多個組成部分的主體名稱格式。krb5_unparse_name()此函數用來將多個組成部分構成的主體名稱轉化為單字符串表示的主體名稱格式。l 證書緩存函數krb5_cc_resolve()此函數用來把字符串格式的名字轉化為相應的id,并添寫相關信息。krb5_cc_defa

49、ult()此函數用來獲取缺省證書文件的相關信息。krb5_cc-initialize()此函數用來生成或刷新證書緩存。krb5_cc_get_principal()此函數用來獲取證書緩存中的主體信息,通過調用krb5_free_principal()來釋放內存。krb5_cc_remove_cred()此函數用來銷毀指定主體名的證書。l 其它全局性應用函數krb5_get_credentials()此函數為使用證書緩存或tgs交換來獲得一張額外的票據。krb5_get_in_tkt()客戶利用此函數獲得使用某種服務的初始票據。krb5_mk_req()此函數用來格式化一個krb_ap_req信

50、息到輸出緩沖區(qū)里。krb5_rd_req()此函數用來分析一個krb_ap_req信息,并返回其內容。krb5_mk_rep()此函數用來格式化并加密一個krb_ap_rep信息。krb5_rd_rep()此函數用來分析并解密一個krb_ap_rep信息,調用者應該再調用krb5_free_ap_rep_enc_part()來釋放此結構。krb5_sendauth()客戶端程序利用此函數來向服務器方發(fā)送認證的票據。krb5_recvauth()此函數與krb5_sendauth()搭配使用,服務器用來接收來自客戶的信息并向客戶提供認證應答信息。krb5_mk_safe()此函數用來生成一個kr

51、b_safe格式的消息。krb5_rd_safe()此函數用來分析輸入緩沖區(qū)里的krb_safe格式的消息。krb5_mk_priv()此函數用來生成一個krb_priv格式的消息。krb5_rd_priv()此函數用來分析輸入緩沖區(qū)里的krb_priv格式的消息。3.1.4、網絡應用的kerberos化kerberos作為可信任的第三方認證系統(tǒng),必須和其它應用服務系統(tǒng)相結合才能發(fā)揮作用9。但由于原有的應用系統(tǒng)并不能直接適用于kerberos環(huán)境,其客戶端和服務器端的軟件都要做一定的修改,使之可以在成功建立tcp連接后能夠交換加密的認證信息??梢酝ㄟ^下述方法將網絡應用加入到kerberos環(huán)境

52、中:(1)改網絡應用的客戶端和服務器端程序,加入發(fā)送、接收和處理kerberos認證信息及后續(xù)信息處理的代碼。(2)在kerberos服務器上定義應用服務的主體標識,分配密鑰并加入到密鑰庫中。(3)在網絡應用服務器運行的主機上保留一份root只讀的密鑰文件。(4)將網絡應用添加到超級服務器inetd里,取代原來不安全的應用服務。然后重起inetd。本課程設計中,將kerberos化的ktelnet、ftp服務分別簡稱為ktelnet、kftp,分析如下:l ktelnet應用服務在ktelnet應用服務系統(tǒng)中,其服務器端程序始終運行在提供服務的機器上,等待來自客戶方的服務請求。當用戶鍵入krb

53、5-telnet后,客戶端程序就開始在本地系統(tǒng)上運行,執(zhí)行下述動作:(1)根據提供給telnet命令的遠程主機地址參數獲得相應服務器主體信息;(2)獲得用戶的kerberos證書文件信息及訪問ktelnet的票據信息;(3)創(chuàng)建一個與遠程登錄服務器的tcp網絡連接;(4)將kerberos認證信息傳送給服務方;(5)接收來自服務方的認證應答信息,認證成功則繼續(xù)正常的會話。為接受服務請求,服務器端應用程序將執(zhí)行下述動作:(1)準備好keytab文件,并生成自身主體信息;(2)等待來自客戶方的服務請求;(3)接受客戶端的連接請求,與客戶建立初始的tcp網絡連接;(4)接收并處理來自客戶方的kerb

54、eros認證信息;(5)向客戶發(fā)送認證響應信息。若通過了對客戶的認證,就發(fā)送認證成功信息并繼續(xù)提供正常的遠程登錄服務,否則發(fā)送認證失敗信息并切斷連接接收來自服務方的認證應答信息。l kftp應用服務在kftp應用服務系統(tǒng)中,其服務器端程序始終運行在提供服務的機器上,等待來自客戶方的服務請求。當用戶鍵入krb5-ftp命令后,其客戶端程序就開始在本地系統(tǒng)上運行。進入ftp處理程序后,它就要對用戶提供的ftp命令進行分析,在完成一系列準備之后,向服務器方發(fā)送認證信息,得到認證后完成用戶提交的遠程文件傳輸任務。此過程即根據用戶調用的ftp命令去執(zhí)行kerberos認證并繼續(xù)提供正常的文件傳輸服務,其

55、工作過程與上述ktelnet應用服務過程類似,不再贅述。將telnet和ftp等網絡應用服務kerberos化后,用戶需要通過kinit命令來獲得kerberos初始票據,利用kerberos作為可信任的第三方認證系統(tǒng),為不安全的網絡環(huán)境提供了較為可靠的用戶認證方式。3.2搭建openldap服務器3.2.1、組成模塊的安裝與配置由gun開發(fā)的openldap軟件包,其源代碼是公開的,可以支持ldap v3的絕大部分特性,包括一些擴展功能。版本2之后的openldap使用了pthread庫,pthread庫是支持搶先式調度的線程庫。openldap支持多種后臺數據庫,缺省的數據庫是sleepc

56、at的ldbm,openldap服務器有兩個獨立的服務器進程:slapd和slurpd。slapd提供目錄服務,slurpd用于根據目錄服務器日志的變化將目錄更新信息復制到從屬目錄服務器上。openldap的體系結構如下圖3-2所示:圖3-2 openldap的體系結構3.2.2、數據庫的創(chuàng)建與管理首先,可以聯(lián)機使用ldap來創(chuàng)建數據庫。通過這種方法,只需要簡單的啟動slapd,然后使用ldap客戶端向其中增加條目。該方法對于創(chuàng)建小規(guī)模的數據庫而言是比較適合的,適合于支持更新的數據庫。第二種創(chuàng)建數據庫的方法是使用slapd提供的特殊的應用程序脫機執(zhí)行。本課題采用第一種方法創(chuàng)建數據庫。使用ldap客戶端增加條目之前,需要在slapd.conf文件中設置如下選項:suffixdn該選項定義了該數據庫中保存的條目。應該將它設置為將要創(chuàng)建的子樹的rootdn。本課題設置域名為“”,則為:suffix“dc=secoa,dc=cn”同時,

溫馨提示

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

評論

0/150

提交評論