Linux高级操作系统用户认证与授权.docx

上传人:小飞机 文档编号:1937881 上传时间:2022-12-27 格式:DOCX 页数:38 大小:488.58KB
返回 下载 相关 举报
Linux高级操作系统用户认证与授权.docx_第1页
第1页 / 共38页
Linux高级操作系统用户认证与授权.docx_第2页
第2页 / 共38页
Linux高级操作系统用户认证与授权.docx_第3页
第3页 / 共38页
Linux高级操作系统用户认证与授权.docx_第4页
第4页 / 共38页
Linux高级操作系统用户认证与授权.docx_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《Linux高级操作系统用户认证与授权.docx》由会员分享,可在线阅读,更多相关《Linux高级操作系统用户认证与授权.docx(38页珍藏版)》请在三一办公上搜索。

1、长沙理工大学Linux高级操作系统课程设计报告基于Linux的用户认证与授权研究廖正磊学 院 计算机与通信工程 专业 计算机科学与技术班 级 计算机06-3班 学号 200650080309 学生姓名 廖正磊 指导教师 王艳华 课程成绩 完成日期 2009年5月29日课程设计任务书计算机与通信工程学院 计算机科学与技术专业 课程名称网络系统课程设计时间20082009学年第1学期1920周学生姓名廖正磊指导老师王艳华题 目基于Linux的用户认证与授权研究主要内容:本课程设计主要完成一个基于Linux的用户认证与授权的研究实现。1、重点分析了Kerberos认证系统与LDAP目录服务系统的消息

2、格式、数据库管理、安装配置、配置文件、接口函数等。2、利用可信平台模块(TPM)对Kerberos协议及其蓝本NeedhamSchroeder协议进行了改进,增强了它们的安全性。并搭建了Kerberos认证系统,实现了用户登录的Kerberos认证、网络应用的Kerberos化。要求:(1)要求能独立地运用程序语言和数据库方面知识,编制一个功能简单的小型信息模拟系统。(2)学生按要求编写课程设计报告书,能正确阐述设计和实验结果。(3)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。(4)学生应抱着严谨认真的态度积极投入到课程设计过程中。 应当提交的文件:(1)课程设计报告。(

3、2)课程设计附件(源程序、各类图纸、实验数据、运行截图等)。课程设计成绩评定学 院 计算机与通信工程 专 业 计算机科学与技术班 级 计算机06-3 班 学 号 200650080309 学生姓名 廖正磊 指导教师 王艳华 课程成绩 完成日期 2009年5月22日 指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩 指导教师签字 年 月 日基于Linux的用户认证与授权系统的研究实现学生姓名:廖正磊 指导老师:王艳华摘 要 本课程设计在

4、对可信计算的体系结构、Linux的安全机制、现有的认证协议等深入研究的基础上,提出了基于Linux操作系统的用户认证与应用授权的架构,并最终完成了整个系统的搭建。本文重点分析了Kerberos认证系统与LDAP目录服务系统的消息格式、数据库管理、安装配置、配置文件、接口函数等。利用可信平台模块(TPM)对Kerberos协议及其蓝本NeedhamSchroeder协议进行了改进,增强了它们的安全性。并搭建了Kerberos认证系统,实现了用户登录的Kerberos认证、网络应用的Kerberos化;搭建了OpenLDAP目录服务系统,并利用SASL机制实现了其与Kerberos认证系统的结合。

5、在此基础上,利用OpenLDAP的访问控制机制实现了对各种网络应用服务的授权访问。利用我们编写的客户端应用接口,用户可以完成上述认证与授权过程。该系统作为信息安全实践创新平台的一部分,可应用于信息安全教学的实践环节,还可以将其应用于党政机关办公自动化与协同办公,保护党政内网的安全。关键词 身份认证;目录服务;应用授权Linux-based user authentication and authorizationStudent name: LIAO Zheng-lei Advisor:WANG Yan-huaAbstract The curriculum design in the archi

6、tecture of Trusted Computing, Linux security 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 pa

7、per analyzes the Kerberos authentication 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

8、 based on improvements to enhance their security. 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 syst

9、em. On this basis, the use of OpenLDAP access 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

10、 as part of practical innovation platform, 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;Directo

11、ry Service;Authorization目 录1引言11.1课题背景11.2课程设计目的21.3问题描述22用户认证与授权方案概述51.1 Linux的安全机制51.2 Kerberos认证系统91.3 轻量级目录访问协议103用户认证与授权方案的研究与实现143.1搭建Kerberos认证系统143.2搭建OpenLDAP服务器203.3 Kerberos认证系统与OpenLDAP的结合233.4 实现访问控制243.5 客户端应用接口的编写25参考文献28结束语291引言1.1课题背景 Linux是一个类UNIX的多用户、多任务、功能强大的操作系统。最初版本是芬兰的Linus To

12、rvalds于1991年独立开发的。由于其免费提供源代码及可执行文件,吸引了全世界各地的UNIX行家为其编写了大量的驱动程序和应用软件,在短短的几年时间里,Linux迅速发展成为一个相当完善的操作系统。不仅稳定可靠,而且还具有良好的兼容性、可移植性。近几年来,Linux操作系统以其高效性、灵活性以及开放性得到了蓬勃发展,不仅被广泛应用于PC、服务器,还广泛的应用于手机、PDA等高端嵌入设备。但是,目前的Linux版本在安全方面还存在着许多不足,其安全级别低于C2级。其新功能的不断加入及安全机制的错误配置或错误使用,都会带来很多问题。出于系统安全考虑,Linux提供的安全机制主要有:身份标识与鉴

13、别、文件访问控制、特权管理、安全审计、IPC资源的访问控制。目前,UNIX下的一种新的安全机制已被开发并且在Linux中实现。这种机制称为可插入身份认证模块,即为PAM机制1。当用户在登录Linux时,首先要通过系统的PAM验证。PAM机制可以用来动态地改变身份验证的方法和要求,允许身份认证模块按需要被加载到内核中,模块在加入后即可用于对用户进行身份认证,而不需要重新编译其它公用程序。PAM体系结构的模块化设计及其定义的良好接口,使得无需改变或者干扰任何现有的登录服务就可以集成范围广泛的认证和授权机制,因此,近年来,对PAM的底层鉴别模块的扩展广泛应用于增强Linux操作系统的安全性。Kerb

14、eros认证协议是目前应用最广泛的、基于可信任第三方的网络身份认证协议。Linux操作系统更好的安全性保证可以由Kerberos来实现2,3,目前,基于Linux操作系统,利用Kerberos协议增强其用户认证的安全性的方案在国内外均有提出。Kerberos认证协议最初是麻省理工学院(MIT)为其Athena项目开发的,其从提出到现在,共经历了五个版本的发展4。目前广泛应用的版本是其第五版本Kerberos V5。其本身存在着一定的局限性,针对其安全缺陷,已有诸多的解决方案提出。同时,伴随着其软件的优化、升级,Kerberos认证系统的应用将会越来越广泛。轻量级目录访问协议(LDAP)作为目前

15、广泛应用的目录访问协议,可以实现授权管理、网络用户管理、电子政务目录体系等服务。其基于访问控制策略语句的访问控制列表(Access Control List,ACL)来实现访问控制与应用授权,不同于现有的关系型数据库和应用系统,访问控制异常灵活和丰富5。目前,LDAP已经成为Internet上目录服务的标准协议。已有包括微软、IBM在内的几十家大型软件公司采用了LDAP技术。在我国,LDAP技术已应用在北京大学校园网络用户管理系统、上海政务网统一用户管理、中国数字图书馆系统的用户管理部分,以及北京、上海、天津、福建等省级认证中心等。1.2课程设计目的 用户认证与应用授权是安全机制的前提,基于L

16、inux操作系统,深入研究用户认证与应用授权机制,不仅可以深入理解现有的安全机制,随着研究的深入,也可以发现其现有安全机制的问题所在。用户在登录Linux操作系统时,首先要通过系统的PAM进行验证。任何认证机制都可以加入到PAM的底层鉴别模块中,可以被任何基于PAM开发的程序调用。因此,将更多安全性更高的认证机制扩展到PAM的底层鉴别模块中,可以增强Linux操作系统的安全性。Kerberos是目前应用最广泛的认证协议,本课程设计将其作为认证模块扩展到PAM中,基于PAM的程序就可以调用该认证模块用于用户认证等验证机制,可以增强系统及各种应用的安全性。本课程设计提出的用户认证与应用授权系统,集

17、成了用户与各种网络应用服务的资源和信息,可以方便有效的实现对用户的统一管理。当用户访问某种网络服务时,首先通过Kerberos的认证,登录到LDAP目录服务系统,然后LDAP可以通过其ACL验证用户是否拥有访问该服务的权限。这样既可以实现基于用户的网络应用管理,也可以实现对用户的访问控制。该系统可以应用于信息安全教学、信息安全系统的开发与实现,并将应用于党政机关办公自动化与协同办公,保护党政内网的安全,具有实用意义与创新意义。1.3问题描述 本课程设计在深入理论研究的基础上,基于Linux的PAM机制、Kerberos认证系统、LDAP目录服务系统设计了域内用户认证与应用授权的架构。该架构运行

18、在操作系统为Linux的主机上,提供基本的Kerberos登录认证服务,以及Kerberos化的远程登录服务(ktelnet)、Kerberos化的文件传输(kftp)等网络应用服务。OpenLDAP目录服务系统完成用户信息的存储以及相应权限的设置。本课题编写了客户端程序,作为认证接口,提供给应用程序调用,实现用户的登录认证与应用的授权。根据所提出的架构,在“华镭Linux操作系统”下配置各个相关模块,同时编程实现客户端用户认证的接口函数,使得用户可以调用该接口函数完成登录某种网络应用服务的认证。本课程设计的理论研究情况列举如下:1、Linux操作系统相关的理论知识,包括其组成模块、内部已有的

19、安全机制、安全缺陷及其安全需求等。2、Linux内部的可插入式认证模块(PAM)的运行原理、组成部分及其应用实例,特别是其内部的用户登录认证与应用授权模块。3、学习现有的认证协议,着重分析Kerberos协议的蓝本Needham-Schroeder认证协议,熟悉其协议过程、自身缺陷、各次攻击以及改进过程,并基于可信平台模块(TPM)对其进行改进,以增强其安全性。4、研究Kerberos认证系统,包括其系统组成、协议原理、数据库创建与管理、应用接口函数等,并研究如何将其配置在所选操作系统“华擂Linux”的PAM模块中。5、研究轻量级目录访问协议(LDAP),包括其命名模型、协议原理、数据库创建

20、与管理、安全机制、应用接口函数,及其如何与Kerberos认证系统相结合等。本课程设计所搭建的用户认证与应用授权系统包括服务器端、客户端两部分,分别介绍如下:1、服务器端配置Kerberos的服务器端,作为Kerberos的密钥分发中心(KDC),完成AS认证服务和TGS票据授权服务,并将网络应用服务进行Kerberos化,实现用户登录网络应用服务的Kerberos认证;配置OpenLDAP的服务器端,作为用户身份管理的核心数据库,利用其目录管理功能实现对用户信息的管理,并利用其访问控制列表(ACL)实现应用的授权;利用SASL机制实现Kerberos系统与OpenLDAP系统的结合,并实现两

21、者数据库的匹配,完成用户认证与应用授权系统的模块架构。2、客户端作为Kerberos系统的客户端用户在此登录,完成用户认证、服务请求,经由认证服务器认证后,调用某种Kerberos化的网络应用服务,完成与应用服务器的相互认证。作为OpenLDAP目录服务系统的客户端用户可以对目录信息进行管理与访问。用户可以调用课题所编写的认证接口函数,完成用户认证与应用授权过程。2用户认证与授权方案概述1.1 Linux的安全机制1、PAM机制通常在认证时,实现认证功能的代码通常作为应用程序的一部分而一起编译,如果发现所用算法存在某些缺陷或想采用另外一种认证方法时,用户不得不重写(修改或替换)、重新编译原程序

22、。所以希望能够将认证功能从应用中独立出来,单独进行模块化的设计、实现和维护;另一方面,希望为认证模块建立标准API,以便各个应用程序能方便的调用它们所提供的各种功能;同时认证机制对其上层用户(包括应用程序和最终用户)是透明的。应此需求,1995年,SUN的研究人员提出可插入式认证模块,目前其已逐渐成为各种UNIX系统上包括Linux操作系统的认证方案。层次结构:可插入式认证模块(PAM)机制采用模块化设计和插件功能,提供有关执行用户认证与账号维护的服务。其在实现上采用了分层的体系结构,将各种具体的认证模块从应用程序中独立出来,使得认证机制与应用程序之间相对独立。从而可以在应用程序中根据需要灵活

23、地插入所需要的认证模块或替换原先的认证组件,而不必对应用程序做任何修改。应用程序只需调用应用编程接口API即可方便的使用PAM提供的各种认证功能,而不必了解太多的底层细节。PAM模块化的体系结构,可以集成范围广泛的认证机制,轻易地做到认证应需而改变,使得软件的定制、维持和升级更加轻松。其层次结构如图2.1所示6。由图2.1可以看出,PAM API是应用程序层与PAM服务模块之间联系的纽带,起着承上启下的作用。系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略,当应用程序调用PAM API时,应用接口层将按照配置文件pam.conf的规定,加载相应的PAM服务模块。接着,应用程序层的参

24、数通过PAMAPI传递给底层的PAM服务模块。当PAM服务模块完成相应的认证操作之后,将结果返回给应用接口层,然后由PAM API根据具体的配置文件将此应答返回给应用程序层。图2.1 PAM层次结构 工作原理:应用程序层与PAM服务模块通过PAM API建立联系,按照需要调用相关的服务模块,完成对某种应用程序的认证。工作流程如下图2.2所示:图2.2 PAM工作流程对应图2.2,PAM机制在运行时,按照图中所标示的数字,依次完成如下步骤:l 用户调用某个应用程序,以得到某种服务;l PAM应用程序调用后台的PAM库进行认证工作;l PAM库在/etc/pam.d/目录中查找有关应用程序细节的配

25、置文件, 该文件告诉PAM,此应用程序使用何种认证机制;l PAM库装载所需的认证模块;l 上述装载的认证模块让PAM与应用程序中的会话函数进行通信;l 会话函数向用户要求有关信息;l 用户对这些要求做出回应,提供所需信息;l PAM认证模块通过PAM库将认证信息提供给应用程序;l 认证完成后,应用程序做出两种选择:将所需权限赋予用户,并通知用户;l 若认证失败,也通知用户。2、认证机制目前,网络通信主要提供五种通用的安全服务:认证服务、访问控制服务、机密性服务、完整性服务和非否认性服务。认证服务是实现网络安全最重要的服务之一,其他的安全服务在某种程度上都依赖于认证服务。认证包括信息认证和身份

26、认证。信息认证保证了消息源的可靠性和消息在传输过程中的完整性;身份认证可以使通信双方相互验证身份,以保证通信双方的真实性。本课程设计重点研究Linux的安全机制用户身份认证机制,对其认证方式与相关的认证协议进行了详细的分析。认证机制主要是认证系统所采用的认证方式和认证协议,用于安全连接建立前通讯双方身份的识别,从而保障接收方接收到的数据确实是由发送方发送的。认证机制可以分为两类:一类是通过双方之间的交互式来证明对方身份的认证机制。该机制比较简单,可以利用双方的共享信息,如口令等进行身份的认证。如果通信双方没有共享信息,可以采用零知识证明技术进行认证。另一类采用可信第三方的认证机制。该机制中要求

27、至少有一个可信任的第三方能够同时识别发送方和接收方。可信第三方证实发送方的身份,并回送一个证明信息(证书或是票据),从而保证发送方身份的真实性。身份认证的本质是被认证方拥有的一些信息(秘密信息、特殊硬件或特有生物学信息),除被认证方外,任何网络用户(认证权威除外)都不能伪造。通过身份认证,通信双方可以相互验证身份,从而保证双方都能够与合法的授权用户进行通信。主要有下面三种认证方式:l 口令认证方式口令认证是一种最简单的用户身份认证方式。系统通过核对用户输入的用户名和口令与系统内已有的合法用户名和口令是否匹配来验证用户的身份。口令认证的前提是请求认证者必须具有一个在用户数据库中唯一的ID7。口令

28、认证的安全性仅仅基于用户口令的保密性,而用户口令为方便记忆,一般较短而容易猜测,因此该方式不能抵御口令猜测攻击;其次,口令的明文传输使得系统攻击者很容易遭到窃听;再者,由于系统以明文形式保存口令,一旦攻击者获得口令表,整个系统的安全性就会受到威胁。但是,由于该种认证方式实施简单,其普遍应用于各种网络认证中。l 基于生物学特征的认证基于生物学信息的身份认证就是利用用户所特有的生物学特征来区分和确认用户的身份。这些个人特征是每个用户特有的,且在一定时期内不会改变,如指纹、声音、视网膜、DNA图案等8。由于这些特征不会丢失、被盗或忘记,因此适用于对用户身份的鉴别和认证。但这种方案造价较高,适用于保密

29、程度很高的场合。l 基于智能卡的认证智能卡是由一个或多个集成电路芯片组成的集成电路卡。集成电路中的微处理器和存储器使智能卡具有数据存储和处理的能力。智能卡可存储用户的个人参数和秘密信息(如IDX、PWX和密钥)。用户访问系统时必须持有该智能卡。基于智能卡的认证方式是一种双因子的认证方式(PIN+智能卡)。只有在用户正确输入PIN口令后,才能从智能卡中读取秘密信息,进而利用该秘密信息与主机之间进行认证9。这种认证方案的安全性依赖于智能卡,由于智能卡本身提供硬件保护措施和加密算法,因此它既不易被伪造,也不能被直接读取数据,可以利用这些功能加强系统整体的安全性能。但这种方法硬件投入较大,不管是客户端

30、的智能卡,还是服务器端的读卡设备,造价都较高,因而限制了它的普遍性。认证协议是认证主体通过一系列有序的步骤证明自己身份的一个过程。认证协议定义了参与认证服务的所有通信方在认证过程中需要交换的所有消息格式和这些消息发生的次序以及消息的语义,采用密码学机制来保证消息的完整性、保密性、消息来源、消息目的、时间性等。认证协议是认证机制的基础,认证协议的安全性决定了某种认证机制的优劣。1.2 Kerberos认证系统Kerberos认证协议是一种应用于开放式网络环境、基于可信任第三方的TCP/IP网络认证协议,可以在不安全的网络环境中为用户对远程服务器的访问提供自动鉴别、数据安全性和完整性服务、以及密钥

31、管理服务。该协议是美国麻省理工学院(MIT)为其Athena项目开发的,基于Needham-Schroeder认证模型,使用DES算法进行加密和认证。至今,Kerberos系统已有五个版本,其中Version1到Version 3是在实验室里开发和测试的。1988年开发的Version 4是公诸于众的第一个版本,它是分布式计算环境(DCE)框架的组成部分,已在一些Unix系统中应用过。1990年推出Version 5进一步对Version 4中的某些安全缺陷做了改进,不仅完善了Version 4所采用的基于DES的加密算法,而且还采用独立的加密模块,允许用户根据自己的实际需要选择其它的加密算法

32、,使得安全性得到了进一步的提高。目前Kerberos V5已经被IETF正式命名为RFC1510。协议原理:在Kerberos协议过程中,发起认证服务的通信方称为客户端,客户端需要访问的对象称为应用服务器。首先是认证服务交换,客户端从认证服务器(AS)请求一张票据许可票据(Ticket Granting Ticket,TGT),作为票据许可服务(TicketGranting Server,TGS),即图2.3中消息过程1,2;接着是票据授权服务交换,客户端向TGS请求与服务方通信所需要的票据及会话密钥,即图2.1中消息过程3,4;最后是客户端/应用服务器双向认证,客户端在向应用服务器证实自己身

33、份的同时,证实应用服务器的身份,即图2.3中消息过程5,6。图2.3 Kerberos认证系统结构及其协议过程1.3 轻量级目录访问协议在Kerberos域内,Kerberos系统可以提供认证服务,系统内的访问权限和授权则需要通过其他途径来解决。轻量级目录访问协议(LDAP)使用基于访问控制策略语句的访问控制列表(Access Control List,ACL)来实现访问控制与应用授权,不同于现有的关系型数据库和应用系统,访问控制异常灵活和丰富。因此,本次课程设计将轻量级目录访问协议(LDAP)与Kerberos认证机制、PAM机制结合在一起,共同完成域内的用户认证与应用授权。1. 协议模型L

34、DAP协议采用的通用协议模型是一个由客户端(Client)发起操作的客户端服务器(Server)响应模型。在此协议模型中,LDAP客户端通过TCP/IP的系统平台和LDAP服务器保持连接,这样任何支持TCP/IP的系统平台都能安装LDAP客户端。应用程序通过应用程序接口(API)调用把操作要求和参数发送给LDAP客户端,客户端发起LDAP请求,通过TCP/IP传递给LDAP服务器;LDAP服务器必须分配一个端口来监听客户端请求,其代替客户端访问目录库,在目录上执行相应的操作,把包含结果或者错误信息的响应回传给客户端;应用程序取回结果。当客户端不再需要与服务器通信时,由客户端断开连接。协议模型如

35、下图2.4所示:图2.4 LDAP协议模型在LDAPV1与LDAPV2中,服务器需要追踪全部参考节点和执行协议操作,将最终结果返回给客户端。为了提高效率,在LDAPV3中,允许服务器将指向它的服务器的参考指针返回给客户端,由客户端自己去查找。这样,虽然增加了客户端软件的复杂程度,但是可以有效分担服务器的负载,提高服务器的效率和分布式应用能力。2. 数据模型LDAP是以树状方式组织信息,称为目录信息树。DIT的根节点是一个没有实际意义的虚根,树上的节点被称为条目(Entry),是树状信息中的基本数据单元。条目的名称由一个或多个属性组成,称为相对识别名,此为条目在根节点下的唯一名称标识,用来区别与

36、它同级别的条目。从一个条目到根的直接下级条目的RDN序列组成该条目的识别名(Distinguishe Name,DN),DN是该条目在整个树中的唯一名称标识。DN的每一个RDN对应DIT的一个分支,从Root一直到目录条目。下图2.5为一个LDAP目录信息树结构。图2.5 LDAP目录信息树结构3. LDAP的实现OpenLDAP 2.x版本支持LDAPV3,最新的版本(2.1版)可以支持LDAPV3协议的绝大部分特性,包括一些扩展功能。OpenLDAP支持模式访问控制和模式扩展,但是不支持动态模式扩展,无法在运行时扩展模式,只能通过修改服务器的配置文件来实现。OpenLDAP通过配置文件中的

37、referral指令字实现到其他命名上下文或其他LDAP服务器的引用。OpenLDAP支持的安全机制比较全面,支持多种SASL认证机制,也可以利用各种认证系统和加密系统实现安全性较高的目录服务。OpenLDAP使用独立进程slurpd实现目录复制服务,可以通过结合slurpd和slapd的配置文件设计复制策略。OpenLDAP也提供自己的访问控制机制。主要通过服务器配置文件中的access指令字实现,access提供了丰富的语法,支持各种通配符,可以实现强大的访问控制功能。本课题利用OpenLDAP目录服务存储用户信息并实现基于Kerberos认证系统的用户认证,利用其访问控制实现应用的授权。

38、3用户认证与授权方案的研究与实现本课题基于Linux的PAM机制、Kerberos认证系统、LDAP目录服务系统设计了域内用户认证与应用授权的架构,该架构运行在操作系统为Linux的主机上,提供基本的Kerberos登录认证服务,以及Kerberos化的远程登录服务(ktelnet)、Kerberos化的文件传输(kftp)等网络应用服务。OpenLDAP目录服务系统完成用户信息的存储以及相应权限的设置。本课题编写了客户端程序,作为认证接口,提供给应用程序调用,实现用户的登录认证与应用的授权。该系统架构如图3.1所示:图3.1用户认证与应用授权系统架构3.1搭建Kerberos认证系统1、组成

39、模块的安装与配置由MIT开发的Kerberos系统,其源代码是公开的,并且一直在不间断的进行维护和更新,因此代码的稳定性以及成熟性都非常好,同时提供了对多种操作系统的支持。下面介绍其在Linux操作系统下的安装与配置。首先,解压代码压缩包krb5-1.3.1.tacgz,使用GNU自动配置工具(autoconf)进行安装。安装完毕后,系统必须先建立起相关的Kerberos配置文件,从而使系统能够到指定的文件里读取配置信息。它使用几个端口进行密钥的分发和管理,需要在Linux系统的/etc/services文件末尾增加Kerberos使用的端口号。同时,还必须修改系统的超级服务器控制文件inet

40、d.conf。此时,还未将Kerberos集成到域名解析服务器DNS,本课程设计选择BIND9.2.4作为DNS服务器。Kerberos系统使用时间戳来防止重放攻击,因此,还需要设置时间同步服务器ntp server,需要在配置文件中添加与其同步的机器的IP地址,如下:server 127.127.1.0server 222.28.140.144Kerberos系统的配置文件krb5.conf包含Kerbcros的配置信息、用于该域的KDC以及管理服务器的位置、用于当前域和Kerberos的缺省设置以及将主机名映射到Kerberos域的设置。设定域名为,krb5.conf简单描述如下:libd

41、efaultsdefault_realm=SECOA.CNrealmsSECOA.CN=kdc=admin_server=Kerberos的密钥分发中心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、数据库的创建与管理编辑完上述配置文件后,、需要创建并填充存放主信息条的Kerbcros的数据库、创建系统管理员、创建新的密钥列表、创建新的参与者等。

42、l 创建数据库在主KDC上使用kdb5_util程序来创建数据库和可选的stash文件。stash文件是加密格式驻留在KDC内部磁盘上的master key的复制,它是在kadmind和krb5kdc守护进程启动之前自动认证KDC的。l 创建系统管理员Kerberos基本认证系统需要由系统管理员来对主体数据库及密钥数据库进行管理与维护,创建系统管理员的方法如下:在访问控制(ACL)文件里增加系统管理员至少需要添加一个系统管理员的Kerberos主体,访问控制文件名在kdc.conf中指定。缺省的文件名为kadm5.acl,其文件格式为:Kerberos-principal permission

43、s optional-target-principal该文件里的权限包括:a、d、m、c、i等,并且可以包含匹配符。为了给所有具有*/adminSECOA.CN主体权限来改变任何实体在数据库所有权限,只需在文件中加入如下语句:*/adminSECOA.CN。在Kerberos数据库里增加系统管理员通过在主KDC上使用kadmin.local命令完成,要增加的管理员主体应是ACL文件中的主体。生成系统管理员主体admin/admin:#kadmin.local:addprinc admin/adminSECOA.CN。3、源代码分析 MIT的kerberos源代码非常庞大,下面以最新的1.3.1

44、版本为例,对其进行简要的分析。为了不涉及过多的编程细节,主要给出一些关键的API函数的名称及其主要作用。l krb5_context用来代表任意进程的状态。在这个结构里存储全局参数,包括缺省域、缺省加密类型、缺省配置文件等。此函数提供了对存储在context结构里的数据的访问,而这些数据是不能被开发人员直接访问的。krb5_ini_context(/*IN/OUT*/krb5_context*context)此函数用来初始化Kerberos基本context信息:加密类型、缺省域和指向特定数据的指针。在此context中的数据应该用krb5_free_context()来释放。krb5_fre

45、e_context(/*IN/OUT*/krb5_context context)此函数用来释放通过krb5_init_context()返回的context。l Krb5_auth_context用来表示一个连接中直接被客户/服务器认证所涉及各种功能的内容,通常包括密钥区、地址、序列号、认证符和校验类型等信息。krb5_auth_con_init(/*OUT*/krb5_auth_context*auth_context)此函数用来初始化auth_context的信息,包括与各种认证例程相关的所有数据。krb5_auth_con_free(/*IN/OUT*/krb5_auth_contex

46、t*auth_context)此函数用来释放由krb5_auth_con_init函数返回的认证内容auth_context。l 主体访问函数主体定义了一个参与一次网络通信的唯一命名的客户或服务器实体,如下的两个函数允许用来生成、修改及访问主体部分信息。krb5_parse_name()此函数用来将主体名称的单字符串表示方式转化为协议中所使用的多个组成部分的主体名称格式。krb5_unparse_name()此函数用来将多个组成部分构成的主体名称转化为单字符串表示的主体名称格式。l 证书缓存函数Krb5_cc_resolve()此函数用来把字符串格式的名字转化为相应的ID,并添写相关信息。krb5_cc_default()此函数用来获取缺省证书文件的相关信息。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()此

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号