网络系统课程设计基于Linux的用户认证与授权研究

上传人:沈*** 文档编号:67596491 上传时间:2022-03-31 格式:DOC 页数:35 大小:559KB
收藏 版权申诉 举报 下载
网络系统课程设计基于Linux的用户认证与授权研究_第1页
第1页 / 共35页
网络系统课程设计基于Linux的用户认证与授权研究_第2页
第2页 / 共35页
网络系统课程设计基于Linux的用户认证与授权研究_第3页
第3页 / 共35页
资源描述:

《网络系统课程设计基于Linux的用户认证与授权研究》由会员分享,可在线阅读,更多相关《网络系统课程设计基于Linux的用户认证与授权研究(35页珍藏版)》请在装配图网上搜索。

1、长沙理工大学基于Linux的用户认证与授权研究XXX学 院 计算机与通信工程 专业 计算机科学与技术 班 级 计算机0802班 学号 学生姓名 XXX 指导教师 课程成绩 完成日期 2011年3月4日课程设计任务书计算机与通信工程学院 计算机科学与技术专业 课程名称网络系统课程设计时间20102011学年第2学期12周学生姓名曹骏指导老师邓江沙题 目基于Linux的用户认证与授权研究主要内容:本课程设计主要完成一个基于Linux的用户认证与授权的研究实现。1、重点分析了Kerberos认证系统与LDAP目录服务系统的消息格式、数据库管理、安装配置、配置文件、接口函数等。2、利用可信平台模块(T

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

3、定学 院 计算机与通信工程 专 业 计算机科学与技术班 级 计算机0802班 学 号 200850080212 学生姓名 曹骏 指导教师 邓江沙 课程成绩 完成日期 2011年3月4日 指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计的评定意见综合成绩 指导教师签字 年 月 日基于Linux的用户认证与授权系统的研究实现学生姓名:曹骏 指导老师:邓江沙摘 要 本课程设计在对可信计算的体系结构、Linux的安全机制、现有的认证协议等深入研究的基础上,提出

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

5、利用我们编写的客户端应用接口,用户可以完成上述认证与授权过程。该系统作为信息安全实践创新平台的一部分,可应用于信息安全教学的实践环节,还可以将其应用于党政机关办公自动化与协同办公,保护党政内网的安全。关键词 身份认证;目录服务;应用授权Linux-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认证系统92.3 轻量级目录访问协议102.3.1 协议模型102.3.2数据模型112.3.3 LDAP的实现113用户认证与授权方案的研究与实现133.1搭建Kerberos认证系统133.1.1、组成模块的安装与配置133.1.2、数据库的创建与管理153.1.3、源代码分析153.1.4、网络应用的Kerberos化183.2搭建OpenLDAP服务器193.2.1、组成模块的安装与配置193.2.2、数据库的创建与管理203.3 Kerberos

12、认证系统与OpenLDAP的结合223.4 实现访问控制233.5 客户端应用程序的编写25参考文献27结束语281引言1.1课题背景 Linux是一个类UNIX的多用户、多任务、功能强大的操作系统。最初版本是芬兰的Linus Torvalds于1991年独立开发的。由于其免费提供源代码及可执行文件,吸引了全世界各地的UNIX行家为其编写了大量的驱动程序和应用软件,在短短的几年时间里,Linux迅速发展成为一个相当完善的操作系统。不仅稳定可靠,而且还具有良好的兼容性、可移植性。近几年来,Linux操作系统以其高效性、灵活性以及开放性得到了蓬勃发展,不仅被广泛应用于PC、服务器,还广泛的应用于手

13、机、PDA等高端嵌入设备。但是,目前的Linux版本在安全方面还存在着许多不足,其安全级别低于C2级。其新功能的不断加入及安全机制的错误配置或错误使用,都会带来很多问题。出于系统安全考虑,Linux提供的安全机制主要有:身份标识与鉴别、文件访问控制、特权管理、安全审计、IPC资源的访问控制。目前,UNIX下的一种新的安全机制已被开发并且在Linux中实现。这种机制称为可插入身份认证模块,即为PAM机制1。当用户在登录Linux时,首先要通过系统的PAM验证。PAM机制可以用来动态地改变身份验证的方法和要求,允许身份认证模块按需要被加载到内核中,模块在加入后即可用于对用户进行身份认证,而不需要重

14、新编译其它公用程序。PAM体系结构的模块化设计及其定义的良好接口,使得无需改变或者干扰任何现有的登录服务就可以集成范围广泛的认证和授权机制,因此,近年来,对PAM的底层鉴别模块的扩展广泛应用于增强Linux操作系统的安全性。Kerberos认证协议是目前应用最广泛的、基于可信任第三方的网络身份认证协议。Linux操作系统更好的安全性保证可以由Kerberos来实现2,3,目前,基于Linux操作系统,利用Kerberos协议增强其用户认证的安全性的方案在国内外均有提出。Kerberos认证协议最初是麻省理工学院(MIT)为其Athena项目开发的,其从提出到现在,共经历了五个版本的发展4。目前

15、广泛应用的版本是其第五版本Kerberos V5。其本身存在着一定的局限性,针对其安全缺陷,已有诸多的解决方案提出。同时,伴随着其软件的优化、升级,Kerberos认证系统的应用将会越来越广泛。轻量级目录访问协议(LDAP)作为目前广泛应用的目录访问协议,可以实现授权管理、网络用户管理、电子政务目录体系等服务。其基于访问控制策略语句的访问控制列表(Access Control List,ACL)来实现访问控制与应用授权,不同于现有的关系型数据库和应用系统,访问控制异常灵活和丰富5。目前,LDAP已经成为Internet上目录服务的标准协议。已有包括微软、IBM在内的几十家大型软件公司采用了LD

16、AP技术。在我国,LDAP技术已应用在北京大学校园网络用户管理系统、上海政务网统一用户管理、中国数字图书馆系统的用户管理部分,以及北京、上海、天津、福建等省级认证中心等。1.2课程设计目的 用户认证与应用授权是安全机制的前提,基于Linux操作系统,深入研究用户认证与应用授权机制,不仅可以深入理解现有的安全机制,随着研究的深入,也可以发现其现有安全机制的问题所在。用户在登录Linux操作系统时,首先要通过系统的PAM进行验证。任何认证机制都可以加入到PAM的底层鉴别模块中,可以被任何基于PAM开发的程序调用。因此,将更多安全性更高的认证机制扩展到PAM的底层鉴别模块中,可以增强Linux操作系

17、统的安全性。Kerberos是目前应用最广泛的认证协议,本课程设计将其作为认证模块扩展到PAM中,基于PAM的程序就可以调用该认证模块用于用户认证等验证机制,可以增强系统及各种应用的安全性。本课程设计提出的用户认证与应用授权系统,集成了用户与各种网络应用服务的资源和信息,可以方便有效的实现对用户的统一管理。当用户访问某种网络服务时,首先通过Kerberos的认证,登录到LDAP目录服务系统,然后LDAP可以通过其ACL验证用户是否拥有访问该服务的权限。这样既可以实现基于用户的网络应用管理,也可以实现对用户的访问控制。该系统可以应用于信息安全教学、信息安全系统的开发与实现,并将应用于党政机关办公

18、自动化与协同办公,保护党政内网的安全,具有实用意义与创新意义。1.3问题描述 本课程设计在深入理论研究的基础上,基于Linux的PAM机制、Kerberos认证系统、LDAP目录服务系统设计了域内用户认证与应用授权的架构。该架构运行在操作系统为Linux的主机上,提供基本的Kerberos登录认证服务,以及Kerberos化的远程登录服务(ktelnet)、Kerberos化的文件传输(kftp)等网络应用服务。OpenLDAP目录服务系统完成用户信息的存储以及相应权限的设置。本课题编写了客户端程序,作为认证接口,提供给应用程序调用,实现用户的登录认证与应用的授权。根据所提出的架构,在“华镭L

19、inux操作系统”下配置各个相关模块,同时编程实现客户端用户认证的接口函数,使得用户可以调用该接口函数完成登录某种网络应用服务的认证。本课程设计的理论研究情况列举如下:(1)Linux操作系统相关的理论知识,包括其组成模块、内部已有的安全机制、安全缺陷及其安全需求等。(2)Linux内部的可插入式认证模块(PAM)的运行原理、组成部分及其应用实例,特别是其内部的用户登录认证与应用授权模块。(3)学习现有的认证协议,着重分析Kerberos协议的蓝本Needham-Schroeder认证协议,熟悉其协议过程、自身缺陷、各次攻击以及改进过程,并基于可信平台模块(TPM)对其进行改进,以增强其安全性

20、。(4)研究Kerberos认证系统,包括其系统组成、协议原理、数据库创建与管理、应用接口函数等,并研究如何将其配置在所选操作系统“华擂Linux”的PAM模块中。(5)研究轻量级目录访问协议(LDAP),包括其命名模型、协议原理、数据库创建与管理、安全机制、应用接口函数,及其如何与Kerberos认证系统相结合等。本课程设计所搭建的用户认证与应用授权系统包括服务器端、客户端两部分,分别介绍如下:(1)服务器端a.配置Kerberos的服务器端,作为Kerberos的密钥分发中心(KDC),完成AS认证服务和TGS票据授权服务,并将网络应用服务进行Kerberos化,实现用户登录网络应用服务的

21、Kerberos认证;b.配置OpenLDAP的服务器端,作为用户身份管理的核心数据库,利用其目录管理功能实现对用户信息的管理,并利用其访问控制列表(ACL)实现应用的授权;c.利用SASL机制实现Kerberos系统与OpenLDAP系统的结合,并实现两者数据库的匹配,完成用户认证与应用授权系统的模块架构。(2)客户端a.作为Kerberos系统的客户端用户在此登录,完成用户认证、服务请求,经由认证服务器认证后,调用某种Kerberos化的网络应用服务,完成与应用服务器的相互认证。b.作为OpenLDAP目录服务系统的客户端用户可以对目录信息进行管理与访问。c.用户可以调用课题所编写的认证接

22、口函数,完成用户认证与应用授权过程。2用户认证与授权方案概述2.1 Linux的安全机制2.1.1 PAM机制通常在认证时,实现认证功能的代码通常作为应用程序的一部分而一起编译,如果发现所用算法存在某些缺陷或想采用另外一种认证方法时,用户不得不重写(修改或替换)、重新编译原程序。所以希望能够将认证功能从应用中独立出来,单独进行模块化的设计、实现和维护;另一方面,希望为认证模块建立标准API,以便各个应用程序能方便的调用它们所提供的各种功能;同时认证机制对其上层用户(包括应用程序和最终用户)是透明的。应此需求,1995年,SUN的研究人员提出可插入式认证模块,目前其已逐渐成为各种UNIX系统上包

23、括Linux操作系统的认证方案。层次结构:可插入式认证模块(PAM)机制采用模块化设计和插件功能,提供有关执行用户认证与账号维护的服务。其在实现上采用了分层的体系结构,将各种具体的认证模块从应用程序中独立出来,使得认证机制与应用程序之间相对独立。从而可以在应用程序中根据需要灵活地插入所需要的认证模块或替换原先的认证组件,而不必对应用程序做任何修改。应用程序只需调用应用编程接口API即可方便的使用PAM提供的各种认证功能,而不必了解太多的底层细节。PAM模块化的体系结构,可以集成范围广泛的认证机制,轻易地做到认证应需而改变,使得软件的定制、维持和升级更加轻松。其层次结构如图2-1所示6。由图2-

24、1可以看出,PAM API是应用程序层与PAM服务模块之间联系的纽带,起着承上启下的作用。系统管理员通过PAM配置文件来制定不同应用程序的不同认证策略,当应用程序调用PAM API时,应用接口层将按照配置文件pam.conf的规定,加载相应的PAM服务模块。接着,应用程序层的参数通过PAMAPI传递给底层的PAM服务模块。当PAM服务模块完成相应的认证操作之后,将结果返回给应用接口层,然后由PAM API根据具体的配置文件将此应答返回给应用程序层。图2-1 PAM层次结构 工作原理:应用程序层与PAM服务模块通过PAM API建立联系,按照需要调用相关的服务模块,完成对某种应用程序的认证。工作

25、流程如下图2-2所示:图2-2 PAM工作流程对应图2-2,PAM机制在运行时,按照图中所标示的数字,依次完成如下步骤:l 用户调用某个应用程序,以得到某种服务;l PAM应用程序调用后台的PAM库进行认证工作;l PAM库在/etc/pam.d/目录中查找有关应用程序细节的配置文件, 该文件告诉PAM,此应用程序使用何种认证机制;l PAM库装载所需的认证模块;l 上述装载的认证模块让PAM与应用程序中的会话函数进行通信;l 会话函数向用户要求有关信息;l 用户对这些要求做出回应,提供所需信息;l PAM认证模块通过PAM库将认证信息提供给应用程序;l 认证完成后,应用程序做出两种选择:将所

26、需权限赋予用户,并通知用户;l 若认证失败,也通知用户。2.1.2 认证机制目前,网络通信主要提供五种通用的安全服务:认证服务、访问控制服务、机密性服务、完整性服务和非否认性服务。认证服务是实现网络安全最重要的服务之一,其他的安全服务在某种程度上都依赖于认证服务。认证包括信息认证和身份认证。信息认证保证了消息源的可靠性和消息在传输过程中的完整性;身份认证可以使通信双方相互验证身份,以保证通信双方的真实性。本课程设计重点研究Linux的安全机制用户身份认证机制,对其认证方式与相关的认证协议进行了详细的分析。认证机制主要是认证系统所采用的认证方式和认证协议,用于安全连接建立前通讯双方身份的识别,从

27、而保障接收方接收到的数据确实是由发送方发送的。认证机制可以分为两类:一类是通过双方之间的交互式来证明对方身份的认证机制。该机制比较简单,可以利用双方的共享信息,如口令等进行身份的认证。如果通信双方没有共享信息,可以采用零知识证明技术进行认证。另一类采用可信第三方的认证机制。该机制中要求至少有一个可信任的第三方能够同时识别发送方和接收方。可信第三方证实发送方的身份,并回送一个证明信息(证书或是票据),从而保证发送方身份的真实性。身份认证的本质是被认证方拥有的一些信息(秘密信息、特殊硬件或特有生物学信息),除被认证方外,任何网络用户(认证权威除外)都不能伪造。通过身份认证,通信双方可以相互验证身份

28、,从而保证双方都能够与合法的授权用户进行通信。主要有下面三种认证方式:l 口令认证方式口令认证是一种最简单的用户身份认证方式。系统通过核对用户输入的用户名和口令与系统内已有的合法用户名和口令是否匹配来验证用户的身份。口令认证的前提是请求认证者必须具有一个在用户数据库中唯一的ID7。口令认证的安全性仅仅基于用户口令的保密性,而用户口令为方便记忆,一般较短而容易猜测,因此该方式不能抵御口令猜测攻击;其次,口令的明文传输使得系统攻击者很容易遭到窃听;再者,由于系统以明文形式保存口令,一旦攻击者获得口令表,整个系统的安全性就会受到威胁。但是,由于该种认证方式实施简单,其普遍应用于各种网络认证中。l 基

29、于生物学特征的认证基于生物学信息的身份认证就是利用用户所特有的生物学特征来区分和确认用户的身份。这些个人特征是每个用户特有的,且在一定时期内不会改变,如指纹、声音、视网膜、DNA图案等8。由于这些特征不会丢失、被盗或忘记,因此适用于对用户身份的鉴别和认证。但这种方案造价较高,适用于保密程度很高的场合。l 基于智能卡的认证智能卡是由一个或多个集成电路芯片组成的集成电路卡。集成电路中的微处理器和存储器使智能卡具有数据存储和处理的能力。智能卡可存储用户的个人参数和秘密信息(如IDX、PWX和密钥)。用户访问系统时必须持有该智能卡。基于智能卡的认证方式是一种双因子的认证方式(PIN+智能卡)。只有在用

30、户正确输入PIN口令后,才能从智能卡中读取秘密信息,进而利用该秘密信息与主机之间进行认证9。这种认证方案的安全性依赖于智能卡,由于智能卡本身提供硬件保护措施和加密算法,因此它既不易被伪造,也不能被直接读取数据,可以利用这些功能加强系统整体的安全性能。但这种方法硬件投入较大,不管是客户端的智能卡,还是服务器端的读卡设备,造价都较高,因而限制了它的普遍性。认证协议是认证主体通过一系列有序的步骤证明自己身份的一个过程。认证协议定义了参与认证服务的所有通信方在认证过程中需要交换的所有消息格式和这些消息发生的次序以及消息的语义,采用密码学机制来保证消息的完整性、保密性、消息来源、消息目的、时间性等。认证

31、协议是认证机制的基础,认证协议的安全性决定了某种认证机制的优劣。2.2 Kerberos认证系统Kerberos认证协议是一种应用于开放式网络环境、基于可信任第三方的TCP/IP网络认证协议,可以在不安全的网络环境中为用户对远程服务器的访问提供自动鉴别、数据安全性和完整性服务、以及密钥管理服务。该协议是美国麻省理工学院(MIT)为其Athena项目开发的,基于Needham-Schroeder认证模型,使用DES算法进行加密和认证。至今,Kerberos系统已有五个版本,其中Version1到Version 3是在实验室里开发和测试的。1988年开发的Version 4是公诸于众的第一个版本,

32、它是分布式计算环境(DCE)框架的组成部分,已在一些Unix系统中应用过。1990年推出Version 5进一步对Version 4中的某些安全缺陷做了改进,不仅完善了Version 4所采用的基于DES的加密算法,而且还采用独立的加密模块,允许用户根据自己的实际需要选择其它的加密算法,使得安全性得到了进一步的提高。目前Kerberos V5已经被IETF正式命名为RFC1510。协议原理:在Kerberos协议过程中,发起认证服务的通信方称为客户端,客户端需要访问的对象称为应用服务器。首先是认证服务交换,客户端从认证服务器(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认证系统结构及其协议过程2.3 轻量级目录访问协议在Kerberos域内,Kerberos系统可以提供认证服务,系统内的访问权限和授权则需要通过其他途径来解决。轻量级目录访问协议(LDAP)使用基于访问控制策略语句的访问控制列表

34、(Access Control List,ACL)来实现访问控制与应用授权,不同于现有的关系型数据库和应用系统,访问控制异常灵活和丰富。因此,本次课程设计将轻量级目录访问协议(LDAP)与Kerberos认证机制、PAM机制结合在一起,共同完成域内的用户认证与应用授权。2.3.1 协议模型LDAP协议采用的通用协议模型是一个由客户端(Client)发起操作的客户端服务器(Server)响应模型。在此协议模型中,LDAP客户端通过TCP/IP的系统平台和LDAP服务器保持连接,这样任何支持TCP/IP的系统平台都能安装LDAP客户端。应用程序通过应用程序接口(API)调用把操作要求和参数发送给L

35、DAP客户端,客户端发起LDAP请求,通过TCP/IP传递给LDAP服务器;LDAP服务器必须分配一个端口来监听客户端请求,其代替客户端访问目录库,在目录上执行相应的操作,把包含结果或者错误信息的响应回传给客户端;应用程序取回结果。当客户端不再需要与服务器通信时,由客户端断开连接。协议模型如下图2-4所示:图2-4 LDAP协议模型在LDAPV1与LDAPV2中,服务器需要追踪全部参考节点和执行协议操作,将最终结果返回给客户端。为了提高效率,在LDAPV3中,允许服务器将指向它的服务器的参考指针返回给客户端,由客户端自己去查找。这样,虽然增加了客户端软件的复杂程度,但是可以有效分担服务器的负载

36、,提高服务器的效率和分布式应用能力。2.3.2数据模型LDAP是以树状方式组织信息,称为目录信息树。DIT的根节点是一个没有实际意义的虚根,树上的节点被称为条目(Entry),是树状信息中的基本数据单元。条目的名称由一个或多个属性组成,称为相对识别名,此为条目在根节点下的唯一名称标识,用来区别与它同级别的条目。从一个条目到根的直接下级条目的RDN序列组成该条目的识别名(Distinguishe Name,DN),DN是该条目在整个树中的唯一名称标识。DN的每一个RDN对应DIT的一个分支,从Root一直到目录条目。下图2-5为一个LDAP目录信息树结构。图2-5 LDAP目录信息树结构2.3.

37、3 LDAP的实现现有的LDAP服务器实现有:GUN组织的OpenLDAP开放源代码的LDAP服务器、Novell公司的NDS(Novell Directory Services)、微软的活动目录(Active Directory)、IBM公司的eNetwork LDAP服务器等。在实际应用中,出于兼容性的考虑,需要选择支持LDAPV3的LDAP服务器,同时要兼顾到LDAP服务器额外提供的功能特性。本课程设计基于“华镭”Linux操作系统,采用GUN组织的OpenLDAP作为LDAP服务器,下面对其做简单介绍。OpenLDAP是一个通过Internet进行集体开发的项日。它的目标是提供一个稳定

38、的、商业级的、功能全面的LDAP套件,其中包括LDAP服务器和一些开发工具,具体内容请参考www.openldap.org网站。由于OpenLDAP是源码开放的,所以它在Linux平台上受到广泛的欢迎,当然也可以移植到其他的系统平台上,甚至Windows平台上。OpenLDAP 2.x版本支持LDAPV3,最新的版本(2.1版)可以支持LDAPV3协议的绝大部分特性,包括一些扩展功能。OpenLDAP支持模式访问控制和模式扩展,但是不支持动态模式扩展,无法在运行时扩展模式,只能通过修改服务器的配置文件来实现。OpenLDAP通过配置文件中的referral指令字实现到其他命名上下文或其他LDA

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

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

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

42、到域名解析服务器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简单描述如下:libdefaultsdefault_realm=SE

43、COA.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-sha13.1.2、数据库的创建与管理编辑完上述配置文件后,、需要创建并填充存放主信息条的Kerbcros的数据库、创建系统管理员、创建新的密钥列表、创建新的参与者等。l 创建数据库在主KDC上使用kdb5

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

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

46、要的分析。为了不涉及过多的编程细节,主要给出一些关键的API函数的名称及其主要作用。l krb5_context用来代表任意进程的状态。在这个结构里存储全局参数,包括缺省域、缺省加密类型、缺省配置文件等。此函数提供了对存储在context结构里的数据的访问,而这些数据是不能被开发人员直接访问的。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用来表示一个连接中直接被客户/服务器认证所涉及各种功能的内容,通常包括密钥区、地址、序列号、认证符和校验类型等信息。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()此函数用来将主体名称的单字符串表示方式转化为协议中所使用的多个组成部分的主体名称格式。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、息到输出缓冲区里。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()客户端程序利用此函数来向服务器方发送认证的票据。krb5_recvauth()此函数与krb5_sendauth()搭配使用,服务器用来接收来自客户的信息并向客户提供认证应答信息。krb5_mk_safe()此函数用来生成一个KR

51、B_SAFE格式的消息。krb5_rd_safe()此函数用来分析输入缓冲区里的KRB_SAFE格式的消息。krb5_mk_priv()此函数用来生成一个KRB_PRIV格式的消息。krb5_rd_priv()此函数用来分析输入缓冲区里的KRB_PRIV格式的消息。3.1.4、网络应用的Kerberos化Kerberos作为可信任的第三方认证系统,必须和其它应用服务系统相结合才能发挥作用9。但由于原有的应用系统并不能直接适用于Kerberos环境,其客户端和服务器端的软件都要做一定的修改,使之可以在成功建立TCP连接后能够交换加密的认证信息。可以通过下述方法将网络应用加入到Kerberos环境

52、中:(1)改网络应用的客户端和服务器端程序,加入发送、接收和处理Kerberos认证信息及后续信息处理的代码。(2)在Kerberos服务器上定义应用服务的主体标识,分配密钥并加入到密钥库中。(3)在网络应用服务器运行的主机上保留一份root只读的密钥文件。(4)将网络应用添加到超级服务器INETD里,取代原来不安全的应用服务。然后重起INETD。本课程设计中,将Kerberos化的ktelnet、ftp服务分别简称为ktelnet、kftp,分析如下:l ktelnet应用服务在ktelnet应用服务系统中,其服务器端程序始终运行在提供服务的机器上,等待来自客户方的服务请求。当用户键入krb

53、5-telnet后,客户端程序就开始在本地系统上运行,执行下述动作:(1)根据提供给telnet命令的远程主机地址参数获得相应服务器主体信息;(2)获得用户的Kerberos证书文件信息及访问ktelnet的票据信息;(3)创建一个与远程登录服务器的TCP网络连接;(4)将Kerberos认证信息传送给服务方;(5)接收来自服务方的认证应答信息,认证成功则继续正常的会话。为接受服务请求,服务器端应用程序将执行下述动作:(1)准备好Keytab文件,并生成自身主体信息;(2)等待来自客户方的服务请求;(3)接受客户端的连接请求,与客户建立初始的TCP网络连接;(4)接收并处理来自客户方的Kerb

54、eros认证信息;(5)向客户发送认证响应信息。若通过了对客户的认证,就发送认证成功信息并继续提供正常的远程登录服务,否则发送认证失败信息并切断连接接收来自服务方的认证应答信息。l kftp应用服务在Kftp应用服务系统中,其服务器端程序始终运行在提供服务的机器上,等待来自客户方的服务请求。当用户键入krb5-ftp命令后,其客户端程序就开始在本地系统上运行。进入ftp处理程序后,它就要对用户提供的ftp命令进行分析,在完成一系列准备之后,向服务器方发送认证信息,得到认证后完成用户提交的远程文件传输任务。此过程即根据用户调用的ftp命令去执行Kerberos认证并继续提供正常的文件传输服务,其

55、工作过程与上述ktelnet应用服务过程类似,不再赘述。将telnet和ftp等网络应用服务Kerberos化后,用户需要通过kinit命令来获得Kerberos初始票据,利用Kerberos作为可信任的第三方认证系统,为不安全的网络环境提供了较为可靠的用户认证方式。3.2搭建OpenLDAP服务器3.2.1、组成模块的安装与配置由GUN开发的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、数据库的创建与管理首先,可以联机使用LDAP来创建数据库。通过这种方法,只需要简单的启动slapd,然后使用LDAP客户端向其中增加条目。该方法对于创建小规模的数据库而言是比较适合的,适合于支持更新的数据库。第二种创建数据库的方法是使用slapd提供的特殊的应用程序脱机执行。本课题采用第一种方法创建数据库。使用LDA

57、P客户端增加条目之前,需要在slapd.conf文件中设置如下选项:suffixdn该选项定义了该数据库中保存的条目。应该将它设置为将要创建的子树的rootDN。本课题设置域名为“”,则为:suffix“dc=secoa,dc=cn”同时,确保指定了索引文件应该被创建的目录:directory,应该使得目录具有正确的权限,使得slapd可以写入。接着配置slapd,以便可以以具有增加条目权限的用户身份连接。可以配置目录来为该操作指定一个特定的超级管理员用户。通过在数据库定义中使用下面的两个选项实现:rootdn“cn=secoa,dc=cn”rootpw secret上述选项制定了一个DN和口

58、令,该DN可以被作为超级用户的数据库条目进行认证(该条目允许执行任何操作)。此处指定的DN和口令总是能够工作,无论该条目的名称实际上是否存在,或者无论其口令是什么。最后,还应该确保数据库定义包含了需要的索引定义:index|defaultpres,eq,approx,sub,none上述工作完成后,启动slapd,使用LDAP客户软件连接到LDAP,开始增加条目。比如,要使用ldapadd工具增加一个组织条目和一个组织角色条目,应该创建一个包含如下所示内容的entries.ldif文件:#Organization for Example Corporationdn:dc=secoa,dc=cn

59、objectClass:dcObjectobjectClass:organizationdc:secoao:Corporationdescription:The Corporation#Organizational Role for Directory Managerdn:cn=Manager,dc=secoa,dc=cnobjectClass:organizationalRolecn:Managerdescription:Directory Manager然后,使用下面的命令创建条目:ldapadd-f entries.ldif-x-D“cn=Manager,dc=secoa,dc=cn”-

60、w secret本课题中采用基于PHP语言编写的开放源代码的phpldapadmin管理和维护OpenLDAP的数据库。关于其详细使用方法,可以参见官方网站,这里不再赘述。3.2.3、应用编程接口APIOpenLDAP的API函数支持LDAP V3的编程应用,通过API函数实现客户端与服务器的交互。一个应用调用LDAPAPI一般有以下四步:l 打开一个到LDAP服务器的连接调用ldap_init()函数创建一个到服务器的连接,该函数返回一个连接句柄,允许立即建立多联接。l 绑定到目录,认证LDAP服务器调用函数ldap_bind()绑定到DN,连接至目录服务器,ldap_bind()友好地支持

61、各种认证方式。l 执行其它LDAP操作并获得其值发送LDAP请求,并返回结果信息。如通常使用ldap_search()函数及相应的参数发送搜索请求,其函数返回值能被ldap_first_entry(),ldap_next_entry()等函数解析。l 关闭连接调用函数ldap_unbind()即关闭本次连接。LDAP API的所有调用依赖于一个连接句柄,即指向一个包含所有连接信息的LDAP结构的指针。结果和错误被返回到一个称作LDAPMessage的不透明结构中。LDAP操作为这一结构提供语法分析,逐步分析返回的目录项或属性等。此外,LDAP操作还解释出现的错误。操作能同步或异步执行。同步调用

62、的函数以_s结尾。例如,调用dap_search_s()实现同步查询,调用ldap_search()实现异步查询。所有同步操作返回一个操作结果的指示(例如,操作成功返回LDAP_SUCCESS,操作失败返回错误代码)。异步操作返回操作初始化信息id。id能被用于随后的ldap_result()函数调用,以获得操作的结果。通过调用ldap_abandon()函数可以丢弃异步操作。常用的异步操作API函数见下图3-3所示:图 3-3常用的异步操作的API函数3.3 Kerberos认证系统与OpenLDAP的结合 利用SASL认证框架,可以将Kerberos认证系统与LDAP目录服务系统结合在一起。SASL认证独立于OpenLDAP服务器,SASL认证的用户和LDAP的所有用户都没有任何关系,因此,在使用SASL认证之前,首先需要在目录/usr/lib/sasa2/下创建slapd.conf,并更改slapd.conf文件的相应内容为:root dn “uid=root”,接着设置SASL root用户。利用命令saslpasswd可以添加SASL root用户并在添加时设置密码,可以使

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!