APP下载

Kerberos实验系统设计与分析

2015-11-17禹水琴

电脑知识与技术 2015年24期

禹水琴

摘要:Kerberos是University of Massachusetts设计开发的一种认证。本Kerberos系统由六台主机组成,其中一台作为Kerberos系统的服务器兼主KDC,两台作为从KDC,另外三台分别作为telnet服务器、FTP服务器和客户机。部署Kerberos基础结构涉到安装KDC,为主机创建密钥以及迁移用户。重新配置Kerberos部署与执行初始部署一样困难,因此要认真规划部署以避免必须进行重新配置。

关键词:Kerberos;认证协议;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

所谓认证协议就是指在网络实体之间秘密进行发送、接收、确认等操作的非否认性或安全认证。哪怕是讨论最基本的,只有3-4个实体,交换的消息只有4-6条,要设计,认证一个这样的协议也非常麻烦。事实证明要开发,设计一个认证协议是非常复杂的一项工作,现在很多组织结构,大型公司致力于这项工作。

在一个分布式的client/server体系结构中采用一个或多个Kerberos服务器提供一个认证服务。从用户的角度来看,启动Kerberos会话后,Kerberos服务通常不可见。一些命令(如telnet或ftp)也是如此。初始化Kerberos会话通常仅包括登录和提供Kerberos口令。

1 Kerberos验证过程

Kerberos验证分为两个阶段:允许进行后续验证的初始验证以及所有后续验证自身。

1.1 初始验证—票证授予票证

客户机(用户或应用服务器)通过从密钥分发中心(KeyDistributionCenter,KDC)请求票证授予票证(Ticket-GrantingTicket,TGT)开始Kerberos会话。此请求通常在登录时自动完成。

KDC可创建票证授予票证,并采用加密形式将其发送回客户机。客户机使用其口令来解密票证授予票证。

拥有有效的TGT(票证授予票证)后,只要该TGT未到期,客户机便可以请求所有类型的网络操作(如rlogin或telnet)的票证。此票证的有效期通常为几个小时。每次客户机执行唯一的网络操作时,都将从KDC请求该操作的票证。

1.2 启动Kerberos验证

1)客户机通过向KDC发送其票证授予票证作为其身份证明,从KDC请求特定服务(例如,远程登录到另一台计算机)的票证。

2)KDC将该特定服务的票证发送到客户机。

例如,假定用户joe在服务器boston上使用rlogin。因为这个用户早已通过验证(也就是说这个用户已经拿到票证授予票证),所以当运行到rlogin时,这个用户会自动透明地获得票证。这个用户利用这个票证可任何时候远程登录到boston,一直到票证期限结束为止。假如joe想远程登录到电脑denver,就要按上面步骤获得另一个票证。

3)客户机将票证发送到服务器。

使用网络应用服务时服务器会自动透明地将服务器的票证发送到应用服务器。

4)服务器允许此客户机进行访问。

2 规划Kerberos部署

在安装Kerberos服务之前,必须解决几个配置问题。虽然在初始安装后可以更改配置,但每向系统中添加一台新客户机便会增加执行此操作的难度。而且某些更改可能需要进行完全重新安装,所以在规划Kerberos配置时最好应考虑长期目标。

2.1 Kerberos领域

领域是一个类似于域的逻辑网络,用于定义一组系统,这些系统位于同一主KDC下。与建立DNS域名一样,在配置Kerberos服务之前,应解决以下问题以便进行跨领域验证:领域名称、领域数和每个领域的大小以及各领域之间的关系。

2.2 Kerberos领域和服务器

每个领域都必须包括一台用于维护主体数据库的主副本的服务器。此服务器称为主KDC服务器。此外,每个领域还应至少包含一台从KDC服务器,该服务器包含主体数据库的多个副本。主KDC服务器和从KDC服务器都可创建用于建立验证的票证。

领域还可以包含两种其他类型的Kerberos服务器。Kerberos网络的应用程序服务器是用于提供对基于Kerberos的应用程序(如ftp、telnet和rsh)的访问的服务器。领域还可以包括NFS服务器,该服务器使用Kerberos验证来提供NFS服务。

2.3 Kerberos术语

下表列举了Kerberos认证技术中相关的一些关键的术语。

[术语\&概念解释\&领域

(realm)\&Kerberos的认证数据库所负责的一个网络范围称作一个realm。该数据库中存放该网络范围内的所有主体(principal)及其密钥,数据库的内容被Kerberos的ticket分发服务器as和TGS访问。Realm通常用大写的字符串表示,并且在大多数Kerberos系统的配置中,realm和该网络环境的DNS域是一致的。\&主体

(principal)\&在Kerberos协议中,主体是参加认证的基本实体。通常,主体有两种类型,一种表示网络服务使用者的身份,另一种表示某一特定主机上的某种网络服务,即主体是表示客户端和服务端身份的实体。用户所见到的主体用一个字符串表示,其结构如下:

主名(Primaryname)

实例(Instance)

领域(Realm)

故一个Kerberos主体可以表示为:Primaryname/Instance@Realm,一个在LILAC.HIT.EDU.CN域内的用户名为hyw,实例为管理员admin的主体名可以表示为:hyw/admin@LILAC.HIT.EDU.CN。

再如,principal“john/abc.def.com@DEF.COM”表示域“def.com”中主机abc.def.com上的用户john。\&票据

(ticket)\&Ticket是安全传递用户身份所需要的信息集合,包含身份和其他相关信息。通常,它包括客户方principal、服务方principal、客户方IP地址、时间戳(分发ticket的时间)、ticket的生存期、会话密钥等。\&会话密钥

(SessionKey)\&在两个主体之间使用的一个暂时的加密密钥,它的生存时间仅局限在一次通信会话过程中。\&证书

(credential)\&在一次认证交换中为了成功使用门票所需的信息,它包含一张门票和一个会话密钥。在票据的生存期内,客户端将证书保存在cache文件中。\&认证符

(authenticator)\&在客户端向服务端进行认证时,它伴随ticket一直发送。其作用是证明ticket的用户就是拥有ticket的用户,用于防止重放攻击。它的主要内容是时间戳(客户端发送ticket的时间)。\&TGS

(票据发送服务器,Ticketgrantingserver)\&为用户分发ticket的服务器,用户使用这个ticket向要求提供服务的服务器证明自己的身份。\&TGT

(票据认证票据,Ticketgrantingticket)\&用户向TGS证明自己身份的ticket。\&As

(身份证证服务器,Authenticationserver)\&为用户分发TGT的服务器。\&KDC

(密钥分配中心,Keydistributioncenter)\&通常as和TGS统称为KDC,有时也指KDC所在的主机。\&]

3 Kerberos实验系统设计

3.1 Kerberos系统组成

本Kerberos系统由六台主机组成,其中一台作为Kerberos系统的服务器兼主KDC,两台作为从KDC,另外三台分别作为telnet服务器、FTP服务器和客户机。

上图中各角色在实验中的参数设置如下:

领域名称:XNJTDX. LAB DNS域名:xnjtdx.lab 主KDC:kdc1. xnjtdx.lab

从KDC1:kdc2. xnjtdx.lab 从KDC2:kdc3. xnjtdx.lab 客户机:ct. xnjtdx.lab

telnet服务器:tlt. xnjtdx.lab FTP服务器:ftp. xnjtdx.lab admin主体:adn. xnjtdx.lab

3.2 Kerberos组件

Kerberos服务也包括以下内容:

1)密钥分发中心(主KDC)

2)从KDC。

3)数据库管理程序-kadmin和kadmin.local。

4)数据库传播软件-kprop。

5)用于获取、查看和销毁票证的用户程序-kinit、klist和kdestroy。

6)用于更改Kerberos口令的用户程序-kpasswd。

7)远程应用程序-ftp、rcp、rdist、rlogin、rsh、ssh和telnet。

8)远程应用程序守护进程-ftpd、rlogind、rshd、sshd和telnetd。

3.3 必要命令

3.3.1 KDC服务命令

krb5kdc

这是启动基于KerberosV5的KDC服务的命令,只有KDC主机才可以启动这一服务。它的原始地址是在/optr/kerberos/sbin/krb5kdc。

kadmind

这一命令可以启动KDC上的密钥管理服务,只有KDC主机才可以启动这一服务。它的原始地址是在/usr/kerberos/sbin/kadmin。

3.3.2 kdb5_util命令

这一命令把Kerberos数据库作为一个整体进行操作,通过输入:kdb5_util可以查看它的命令格式和参数信息,这里只介绍实验中用到的几个命令。

在EXAMPLE.COM域中创建Kerberos数据库:kdb5_utilcreate–rEXAMPLE.COM-s

在本机创建一个数据库备份文件:kdb5_utildumpslave文件

在本机创建一个用于鉴别KDC的stash文件:kdb5_utilstash

3.3.3 kadmin.local/kadmin命令

这两个命令都是修改数据库中单个个体的函数,前者是主KDC管理本地的Kerberos数据库的命令,直接输入即可进入数据库管理界面;后者是远程管理Kerberos数据库的命令,需要一个存在于数据库中的主体及其密码才可以进入。例如已经数据库中的一个主体名为host/abc.example.com,它的密码是:1234,那么命令形式如下图:首先输入:kadmin-phost/abc.example.com,系统会检查是否有这个主体,如果存在,它会提示客户输入密码,如果也正确,就登入成功了。这时系统会出现”kadmin:”字样的提示符。

3.4 Kerberos应用(ekrb5-telnet和gssftp)

应用Kerberos使我们能够设计一个基本的Kerberos认证及应用服务系统,该系统运行在操作系统为Linux的主机上,它提供基本的Kerberos认证服务,并提供Kerberos化的远程登录和文件传输安全服务。我们也把远程登录和文件传输系统的Kerberos化称为Kerberizedtelnet和Kerberizedftp。通常我们也把Kerberos化的应用服务系统简称为Kerberos应用服务系统。

参考文献:

[1] 网络信息安全综合实验系统v3.5(实验篇).

[2] 网络信息安全综合实验系统v3.5(原理篇).

[3] 文铁华,谷士文.增强Kerberos协议安全性的改进[J].通信学报,2004(06).

[4] 巨瑜芳.Kerberos协议简介及安全性分析[J].科技传播,2010(16).