基于STK方式的移动银行系统的设计与实现_第1页
基于STK方式的移动银行系统的设计与实现_第2页
基于STK方式的移动银行系统的设计与实现_第3页
基于STK方式的移动银行系统的设计与实现_第4页
基于STK方式的移动银行系统的设计与实现_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 PAGE15 / NUMPAGES15第一章引言研究背景和方向近几年来,随着Internet 的迅猛发展,用户接入网络数不断增加,ISP(InternetService Provider 服务提供商)对用户接入和计费管理变得日益重要。在其它领域,如IP 运营商、大规模防火墙等,对用户接入认证的要求也越来越高,原有的简单认证方式已经不满足当前需要,迫切需要一种能够完成实时用户接入认证、实时记账、全局漫游、多种计费方式、支持多种认证安全方式、跨越多平台的用户接入认证系统。RADIUS(Remote Authentication Dial-In User Service 用户远程拨号验证服务)协议

2、1作为IETF(Internet Engine Tasks Force 互联网工程任务组)定义的标准协议已经越来越被大多数ISP、ITSP 和安全系统所认可。RADIUS 协议中所规定的接入认证(Authentication)、用户授权(Authorization)、记账(Accounting)2、漫游(Roaming)和属性(Attribute)扩展方式等解决了众多ISP 所面临的问题,成为今后流行的趋势。这样,开发符合RADIUS 协议的用户接入认证、授权和记账的软件成为构筑ISP、电信运营商、安全网络系统中的必要部分。现行的RADIUS 开发虽然部分满足了用户的需求,但存在几个关键问题,

3、如开发者不能利用已有存在的系统,重复劳动,开发周期长;各种系统实现方式差异很大,不利于维护扩充;软件特定平台,不能跨越平台使用;对协议包理解方式不同,不能互通漫游等,这样就需要一种全新的开发方法和框架。我们分析了国际上流行的各种RADIUS 系统实现,依照最新的协议与讨论草案,结合其它系统的先进优点,设计并实现了一个可扩充的AAA 协议栈软件包。根据这个软件包,用户可以在协议栈的基础之上,选择自己所需要的运行模块和连接方式,编写符合自己需要的用户回调函数和全局设置接口,就可以完成一个标准的RADIUS系统。用户使用本协议栈开发RADIUS 系统时,可以脱离编写协议时的各种繁琐过程,无需考虑协议

4、的语法和数据包的结构,并且使系统所覆盖的协议最多。采用这种方法开发的RADIUS 系统具有符合国际标准协议、使用简便、开发周期短、系统灵活性高、易于扩充和与系统间可互通漫游的特点。我们采用这种方法已被开发者实际利用,产生极大的利用价值,具有很好的发展前景。在本文中,首先介绍RADIUS 协议与其特性,然后给出所设计协议栈的框架原理与其实现,协议栈所支持的功能和应用方法,最后给出结论和进一步需要完成的工一个可扩展的AAA 协议栈2作。相关工作国际上有一个组织和我们工作类似,项目名称为“Stacks of InternetTelephony”3,开始时间大约为2000 年6 月。以下是我们所开发的

5、RADIUS 协议栈和这个项目中的关于RADIUS 的栈的比较:系统实现和功能本协议栈 Vovida 项目组继承系统 Livingston RADIUS Merit AAA系统框架进程池单请求派生进程验证方式 PAP、CHAP、MS-CHAP PAP、CHAP、MS-CHAP网管接口函数支持不支持用户数据本地文件、数据库只支持本地文件配置管理本地文件、数据库只支持本地文件日志按时间递进、数据库简单文本其它部分提供客户端和测试程序无客户端和测试程序第二章 RADIUS 相关协议与其特性RADIUS 系统框架远程拨号用户鉴别服务RADIUS 是朗讯网际互连系统中的一个基于客户端/服务员的安全协议。

6、在RFC21384和RFC21395中被IETF 定义为标准协议。用户相关信息存储于一个中心位置,被称为RADIUS 服务员。RADIUS 客户端与RADIUS 服务员通过通信来验证用户。服务员返回给客户端关于验证用户的操作权限。虽然RADIUS 这个名词用来说明客户端与服务员进行通信的网络协议,但它经常被用来说明整个客户端/服务员系统。如图2-1 所示。一个可扩展的AAA 协议栈3RADIUS客户端RADIUS服务员认证记账请求认证记账响应图2-1:一个简单的RADIUS 客户端/服务员系统框架基于RADIUS 的远程接入环境共包括三个部分:用户、远程接入服务员和RADIUS 服务员。每个用

7、户是RAS 的一个客户,而每个RAS 是用户的服务员和RADIUS 服务员的客户。结构如图2-2。数据库本地RADIUS服务员远端RADIUS服务员RASISDNRASMODEMSRASFIREWALLRAS需认证端网络计算机移动用户Internet用户请求接入者本地认证方法UNIX passwordWinNT DomainText图2-2:一个RADIUS 服务员结构说明RAS 设备将不同连接用户的请求转换为RADIUS 认证请求或记账请求。RADIUS 服务员可以接收来自不同RAS 设备上的请求信息,并选择预先设定的认证方法来完成请求,并发送响应给RAS。处于不同位置的RADIUS 服务员

8、还可以连接在一起,组成一个RADIUS 认证环境。每个RADIUS 可以将发给自己的请求转发给其它RADIUS 服务员来处理。结构如图2-3。一个可扩展的AAA 协议栈4RADIUS服务员负责区域A用户RADIUS服务员负责区域B用户RADIUS服务员负责区域C用户区域CRADIUS客户端图2-3:多个RADIUS 服务员的认证框架这样就可以组成一个跨越不同地理位置的分布式认证环境,无论从认证用户数量上,还是在用户分布上都可以实现透明的集中式管理。RADIUS 基本功能RADIUS 是一个在用户网络接入设备(例如拨号服务器)和用户信息存放设备之间交换信息的标准方法。它有三个基本功能。验证(Au

9、thentication):RADIUS 判别一个用户请求服务是否合法。用户鉴别信息可以存放在本地users 文件,本地数据库、外部数据库中;也可以通过其它验证方式进行鉴别如UNIX 口令文件、Windows NT 域数据库等。一个简单的典型例子如下:一个拨号用户通过RADIUS 协议试图接入网络的过程如下:1、用户拨号进入一个远程接入服务员(MODEM池)并开始一个PPP 会话;2、远程接入服务员把从PPP 会话中得到的用户验证信息经过处理,打成RADIUS 协议请求包,传送给RADIUS 服务员;3、如果RADIUS 服务员通过了这个验证,它将发送接受响应给RAS,并附加上其它信息包括用户

10、建立连接所需要的IP 地址、最接时间等等;如果RADIUS 不能验证这个请求或验证没有通过,它将发送拒绝响应给RAS 以与错误的原因;4、使用这些信息,RAS 如果受到接受响应包,则它允许用户开始操作网络,如果拒绝则断掉连接并给出错误信息。授权(Authorization):RADIUS 协议可以控制用户会话中使用特定的网络设备服务。在RAS 发送的验证请求信息中,除基本信息外,还可以有用户期望连接类型等,RADIUS 服务员可以根据请求完成验证。RADIUS 服务员可以将验证通过的其它参数发送给RAS 以规定用户连接。所有的属性交换由用户配置文件控制。配置文件中包括两种属性:检查属性和返回属

11、性。检查属性定义了一些连接所需请求。RAS在向RADIUS 服务员发送验证请求时必须具备这些属性,否则验证不会成功。返回一个可扩展的AAA 协议栈5属性为验证成功后RADIUS 服务员发送给RAS 的附加信息,例如定义连接的一些参数。一旦用户通过认证,RADIUS 服务员根据系统预先设置的用户配置文件,附加用户可以使用的资源能力,如IP 地址、连接协议、连接速率等。通过这种方式,可以集中管理用户的不同访问能力,比如用户普通拨号接入网络时应该获取的速率和连接方式和通过ISDN 拨入网络的速率和连接方式,以与两种方式的口令可以是不同的。记账(Accounting):RADIUS 协议可以记录会话开

12、始记录、会话结束记录。包括本次连接的用户名、开始连接时间、结束连接时间、用户使用协议、用户使用带宽、传输数据量、连接断开原因和出错信息等。RADIUS 客户端在连接开始的时候向RADIUS 服务员发送会话开始记录,在连接结束的时候发送会话结束记录。通常情况下RADIUS 服务员只记录会话结束记录;对于会话开始记录一般用于用户超时监测和切断控制。RADIUS 扩充功能RADIUS 协议除了基本功能以外,为了适应Internet 的不断扩大,增强了几个功能:代理(漫游):为了能够使用户能在异地通过认证使用服务,RADIUS 协议支持服务员之间转发代理请求和响应。请求和响应的转发根据RADIUS 服

13、务员存放在本地的proxy 文件或数据库中存放的外部RADIUS 服务员信息进行。如图2-3,当一个用户在C 地要求使用服务时,C 地RADIUS 服务员首先判断该用户是否是本地用户,如果不是,根据用户特征查找代理表,看是否和用户开户地RADIUS A 有代理关系,如果有那么就转发该请求到A地RADIUS 服务员,A地RADIUS 服务员完成验证后,将响应结果发回C 地RADIUS 服务员,C 地RADIUS 再将结果发回给用户。记账签名和时间戳:记账请求/响应包必须签名。根据包的容,使用客户端与服务员之间的共享密钥,通过MD5 算法计算包的摘要,这样保证了记账包不被窃听者篡改。时间戳也保证了

14、记账记录的唯一性,保证记录的准确性,防止窃听者破环。用户自定义属性:RADIUS 协议除了规定的属性外,用户可以自行添加所需要的属性。在添加用户自定义属性时,需要注明用户ID 等标志。这样不同运营商之间除了协议规定的属性外,还可以互通其它属性,交换信息。地址绑定:RADIUS 协议规定可以将RADIUS 服务员与指定的IP 地址绑定,这样可以在多宿主主机上使用RADIUS。RADIUS 配置RADIUS 配置主要在RADIUS 服务员部分,通过各种配置文件进行。RADIUS 服务一个可扩展的AAA 协议栈6员所需要的配置文件全部放在名为 raddb 的目录下。它的组织形式如下:图2-4 RAD

15、IUS 目录结构字典文件 dictionary:RADIUS 服务员使用字典文件来建立检查属性列表和返回属性列表。字典文件包括可能用到的属性名称、属性号、属性值等。用户文件users:存储用户的配置信息,包括鉴别和授权信息。客户文件clients:存储RADIUS 所有的本服务员对应的客户端地址与共享密钥。代理文件proxy:存储所有远程RADIUS 服务员的地址和共享密钥等。菜单文件menus:存储各种用户通过认证后可以选择的服务类型。RADIUS 特性基于RADIUS 协议的接入认证/计费系统提供以下特性:客户机/服务员模式:要求对用户进行认证的设备被称为客户端,要求RADIUS服务员进行

16、服务,而一个RADIUS 服务员也可以是其它服务员的客户端。安全:在大型网络中,安全信息分散于网络不同设备上。RADIUS 协议可以允许用户信息保存于一台主机之上,最小化安全漏洞的危险。RADIUS 服务员管理所有鉴别和接入网络服务的功能。RADIUS 服务员与客户端之间使用共享密钥进行通信。可适应性:RADIUS 软件可以安装在任何通信环境之中。也可以和其它安全系统和协议融合为一体。对用户可以使用多种验证方法。可扩展性:所有传输的信息被组织为称为三元组(属性、长度、值)中,新的属性可以随时添加。管理简便:RADIUS 服务员将安全信息存储于中心位置,只需要维护这一处信息即可。对不同厂商的远程

17、接入设备可以按统一的安全模式维护和管理。广泛的审计能力:RADIUS 提供一种审计跟踪能力,称为RADIUS 记账。收集来的信息可以用来分析安全效果和计费。一个可扩展的AAA 协议栈7第三章协议栈框架协议栈包含协议框架本协议栈所覆盖的协议主要有以下几个。1、 RADIUS 协议:定义于RFC2138 中,是RADIUS 体系的主要部分,主要对验证和授权、包格式、语法和漫游等进行了规定。2、 RADIUS Accouting 协议:定义于RFC2139 中,主要对记账、记账包格式等进行了规定。3、 RADIUS Authentication Client MIB:定义于RFC26186中,主要定

18、义了用户在RADIUS 认证客户端中SNMP 代理需要的管理信息库。4、 RADIUS Authentication Server MIB:定义于RFC26197中,主要定义了用户在RADIUS 认证服务员中SNMP 代理需要的管理信息库。5、 RADIUS Accounting Client MIB:定义于RFC26208中,主要定义了用户在RADIUS 记账客户端中SNMP 代理需要的管理信息库。6、 RADIUS Accounting Server MIB:定义于RFC26219中_,主要定义了用户在RADIUS 记账服务员中SNMP 代理需要的管理信息库。本协议栈以TCP/IP 协议为

19、基础,使用UDP 为主要传输手段。协议栈的核心为RFC2138 和RFC2139 组成的RADIUS 主要系统。RFC2618-RFC2621 主要实现协议栈具有网络管理功能,示意图如下。协议栈系统软件包RFC2618 RFC2619 RFC2620 RFC2621RFC2138 Authentication RFC2139 AccountingUDPIP框图3-1 协议栈包含的协议协议栈功能框架本协议栈的功能框架如图3-2 所示。一个可扩展的AAA 协议栈8AAA协议栈包处理回调函数、用户全局设置、接口函数网管模块端口绑定监听数据库访问模块多种验证方式包加密解密包接收发送漫游代理配置管理图3

20、-2 RADIUS 协议栈功能框架各部分主要功能如下:配置管理:负责从本地配置文件或数据库中读取系统的参数设置,包括地址、端口号、认证协议、超时控制时间等。多种验证方式:负责根据预先配置的方式对请求进行认证,包括PAP、CHAP、MS-CHAP 方式等。包加密解密:对认证请求包的口令字段进行加密和解密,生成所需的请求和响应验证字。包接收发送:接收请求包,并将其组织成结构体形式;把结构体形式的数据结构打成二进制包。漫游代理:根据请求包容,应用设置条件,判断其是否需要代理。如果需要代理,则处理后转发出去。接收代理响应,并转发给RADIUS 客户端。端口绑定监听:根据配置主机和端口信息,申请sock

21、et 并绑定于指定端口。监听来自客户端以与其它RADIUS 服务员的请求和响应。网管模块:对RADIUS 系统的各个状态和参数进行监控,并在SNMP 代理调用时将这些参数返回给调用者。数据库访问模块:在对用户认证和记账时访问用户数据,访问方式可以支持多种数据库形式。包处理回调函数、用户全局设置、接口函数:是用户使用本协议栈时需要编写的代码部分,具体使用方法见第五章。第四章协议栈实现开发环境与工具一个可扩展的AAA 协议栈9本协议栈的开发环境有多种,可以是 WinNT,Linux,HP-UX,Solaris 等UNIX操作系统。如果使用专用数据库的话,还需要在所用操作系统上安装ORACLE 等数

22、据库服务器与客户端。工具是UNIX 上的C 编译系统或者是WINDOWS 上的VC 编译系统。本协议栈采用标准ANSI C 语言编写,因为C 语言执行速度快,兼容性和跨平台性好。系统逻辑流程使用本协议栈开发的RADIUS 服务员系统在处理请求包时采用的算法如图4-1所示。打开预先定义端口或知名端口,申请网络数据报套接字绑定到端口上,便于以后主动监听。预先创建若干RADIUS子进程,并建立父子间通信的全双工管道等待处理主进程发送给它们的处理请求。主进程读取RADIUS代理表和RADIUS客户端表,以后检验客户端合法性和查找远端代理地址。将网络套接字和管道描述符全部放入一个SELECT描述字段中,

23、该字段中的项对应可以进行I/O的描述符。通过监控这个字段可以获知那个I/O端口上有数据达到。求出包括网络套接字和父子进程间管道描述字的最大值。SELECT监听I/O。一旦数据到达,进行一下处理如果表中网络套接字有数据发到,则调用处理子程序,该子程序首先判断该请求的源是否合法,是否需要漫游处理,然后选择预先分配的一个空闲进程处理请求。如果管道描述字有数据发到,则表示对应子进程处理请求完毕,子程序恢复空闲状态。图4-1 系统网络通信算法一个可扩展的AAA 协议栈10使用本协议栈开发的RADIUS 服务员系统的系统逻辑流程如下。初始化配置(是否派生子进程、字典文件和日志文件路径、终端参数)登记各种信

24、号处理例程s i g n a l ( )读取配置文件r a d c o n f i g _ i n i t ( ) ,读入主机地址、端口号、最大请求个数、代理服务超时时间、最大请求超时时间)读取字典文件d i c t _ i n i t ( ) ,将字典容放入存组织成为链表,以后使用派生后台进程f o r k ( ) ,退出当前会话,这样脱离命令行关闭终端c l o s e ( ) ,显示软件版本打开知名端口o p e n _ u d p s o c k ( ) 绑定端口清空所有网络套接字端口F D _ C L E A R ( ) ,准备监听派生指定个数的子进程c h i l d _ m a

25、k e ( ) ,并监控父子进程间通信的读写管道申请表空间,调用T U X E D O ,读取客户端列表和代理服务员列表放入存表中u p d a t e _ c l i e n t s ( ) u p d a t e _ p r o x y ( )将监控描述符字段清零并置位F D _ Z E R O ( )循环非阻塞监控以上端口S E L E C T ( ) ,根据情况分别执行以下子程序F D _ I S S E T ( )认证记账端口请求,调用认证处理r a d _ r e q u e s t ( ) 代理认证记账端口请求,调用代理处理R a d _ p r o x y ( ) 子进程发送信

26、号,处理子进程完毕。子进程空闲置位。图4-2 系统逻辑流程一个可扩展的AAA 协议栈11RADIUS 服务员中采用基于数据报的并发无连接网络通信算法、进程处理采用主进程循环处理,子进程顺序处理算法。并且为提高效率,采用进程预分配的方法。系统运行时,由空闲子进程组成一个空闲进程池,当有请求时,主进程顺序选择一个空闲子进程完成请求。子进程完成请求后通知父进程。示意见图4-3。RADIUS主进程子进程池空闲子进程接收新请求的子进程正在处理请求的子进程完成子进程通知父亲图4-3 系统运行时进程关系图包处理逻辑流程协议栈中的主进程在处理请求包时所作处理如图4-4 所示。接收数据包到缓冲区 r e c v

27、 f r o m ( )判断包源客户端的合法性如果是认证包系列用f i n d _ c l i e n t ( )如果是记账包系列用c a l c _ a c c t r e q ( )将缓冲区打成请求头结构r a d r e c v ( )判断是否需要代理h a n d l e _ p r o x y ( )需要代理,调用代理模块保存漫游状态p u s h _ p r o x y ( )发送到远端s e n d p r o x y 2 s e r v e r ( )不需要代理,判断是否是重包查找空闲子进程登记包特性到子进程结构中将请求包放入缓冲区通过F I F O 发送给子进程图4-4 主进

28、程处理请求包流程一个可扩展的AAA 协议栈12协议栈中对于代理漫游包的处理如图4-5 所示。接收数据包到缓冲区recvfrom()判断包源服务员的合法性find_server()将缓冲区打成请求头结构radrecv()找出包对应的描述符查找发送时记的请求头pop_proxy()转发响应给最初的客户端sendproxy2client()图4-5 漫游请求包流程协议栈中子进程处理请求包的流程图如图4-6 所示。循环等待父进程发送处理消息read()将接收到的缓冲区打成请求头结构radrecv()根据不同请求包类型,调用用户自定义回调函数响应模块如认证处理rad_authenticate()等处理完

29、毕,返回继续等待下一个请求图4-6 子进程处理请求包流程从图中可以看出,协议栈的用户只需要编写用户处理请求包的回调函数,对于其它过程则可以不用关心。测试环境和方法一个可扩展的AAA 协议栈13本协议栈的测试环境可以象开发环境一样,有多种组合。下面选取其中一种,以协议栈为基础的RADIUS 系统,如图4-7 所示。本地RADIUS服务员ORACLE数据库远端RADIUS服务员RADIUS客户端测试程序图4-7 协议栈测试环境其中本地 RADIUS 服务员接收发自RADIUS 客户端的请求,ORACLE 数据库作为存储用户数据和配置信息的服务器。远程RADIUS 服务员接收漫游用户的认证请求。测试

30、程序负责产生测试呼叫。测试分为两个部分:功能测试和性能测试。功能测试包括对RADIUS 服务员中是否满足RFC2138 和RFC2139 中规定功能的测试;性能测试包括在大并发用户量下系统的响应时间和正确率。需要编写一个能完成测试要求的测试程序。此测试程序运行于RADIUS 客户端,通过进程间通信模仿调用方程序。测试前还要编写一个模拟数据生成程序,它负责从数据库中抽取数据,模仿呼叫数据。接口回调函数开发者通过回调函数来使用本协议栈,在请求包处理回调函数中,开发者可以使用协议栈提供的各种实用函数,包括属性提取函数、加密解密函数、包发送接收函数、打包函数和访问数据库函数。一个典型的回调函数例子的流

31、程图如下。一个可扩展的AAA 协议栈14判断用户名长度是否合法判断是否有属性getattribute()抽取SESSION_INDEX属性放入响应链表中抽取相应请求属性getattribute()应用客户端口令解密请求口令decrypt_password()调TUXEDO访问数据库取口令get_password()判断为正确,并发送响应send_accept()判断为错误,并发送响应send_reject()图4-8 典型回调函数流程图第五章协议栈功能特点协议实现全、互通性较高:本协议栈基本全部实现了IETF 中关于RADIUS 的相关协议。由于本协议栈完全遵守IEFT 的关于RADIUS 的

32、各个协议,所以在以本协议栈为基础开发的RADIUS 系统可以完全实现互通,在和其它标准RADIUS 系统也可以实现较大程度上的互通。多种验证类型:在验证过程中,RAS 和RADIUS 服务员传送口令信息,这个口令信息通过RAS 和RADIUS 服务员之间的共享密钥加密。口令信息源于用户输入,根据用户选择可以有以下三种:1、PAP(Password Authentication Protocol 口令验证协议)非常简单,用户发送口令给RADIUS 服务员,RADIUS 服务员通过数据库或操作系统来验证。用户发送口令给RAS 的过程中,口令以明文方式传送。RAS 传送口令给RADIUS 的过程中,

33、使用共享密钥加密。最后RADIUS 服务员以口令明文的方式进行验证。2、CHAP(Challenge Handshake Authentication Protocol 挑战握手验证协议)避免在任何通信连接中使用口令明文。在CHAP 中,RAS 首先生成一个随机数(称为挑战)并发送给用户,用户的PPP 端生成一个由口令和挑战组成的单向摘要并发送给RAS,由于摘要是单向加密,RADIUS 服务员不能从摘要中恢复口令,所以它使用本地数据库中存储的用户口令用同样方法计算出摘要和接收的摘要比较,如果一样则验证通过。3、MS-CHAP (Microsoft Challenge Handshake一个可扩

34、展的AAA 协议栈15Authentication Protocol 微软挑战握手验证协议)是微软提出的类似于CHAP 而整合入微软操作系统中的验证方法,它可以在操作系统之上采用不同级别:本地用户、域用户、域组、主机用户、主机组合外部数据库等来验证用户。二次开发工作量少,容易扩充:由于协议栈已经完成了开发RADIUS 系统所需的大部分工作,用户只需要开发少量的回调函数,完成自己的特定需要,所以可以快速开发。由于协议栈的实现是基于协议的包处理过程,所以用户可以根据协议的变化和需求的变更,不断改进实现,而不需要太多工作量。运行稳定:由于协议栈采用进程池的方式实现,所占用的存一定,系统开销最小。所以

35、不会大量占用系统资源(CPU 处理时间和存),不会出现因请求数量变化而使系统资源的占用发生颠簸。更不会出现存泄漏等错误。性能:由于我们对协议栈的实现做到精益求精,采用高效的实现方法,优化代码的设计,所以使用本协议栈开发的RADIUS 系统在同档次的服务器上运行效率比其它系统要高。一般来说,在主频为300MHz 的主机上,其它系统可以实现500 个/秒的认证速度,而使用本协议栈开发的RADIUS 系统可以实现1000 个每秒。多种用户验证手段:本协议栈有多个模块支持多种数据库访问方式,用户数据可以存放在以下几个形式中,文本文件、UNIX DBM、MYSQL、ORACLE、MS-SQL 等。多种日

36、志方法:详细错误信息输出到本地日志、系统日志、数据库中。可以帮助管理员和开发人员迅速找到错误原因,实时掌握系统状态。跨平台运行:本协议栈可以运行在多个平台之上。由于是基于进程实现,所以不会因为各个操作系统对线程实现不同而引发差异。本协议栈在 HP-UX 1 1.00、IBMRS6000 AIX 4.2、Redhat Linux 5.2、Slackware Linux 2.0.30、Solaris 2.7.1、Solaris x86 2.7.1、SunOS 4.1.3、WindowsNT/2000 上测试成功。第六章协议栈应用方法本协议栈的应用可以分为以下几个步骤:1、了解RADIUS 协议概况

37、:开发者必须对RFC2138、RFC2139 有所了解,虽然不用了解包的发送和接收、加密解密细节,但对协议的使用步骤和包的格式定义必须了解。2、了解协议栈和实用函数:开发者必须掌握本协议栈的逻辑流程,了解函数的定义和调用的顺序。3、编写用户回调接口函数:根据自定义的不同需要,对每个类型的请求进行处理。4、连接编译整个协议栈:选择不同运行模块,包括不同的验证方式、访问数据库的类型等,在操作系统上运行编译器。一个可扩展的AAA 协议栈165、配置RADIUS 系统:在系统运行之前,需要根据不同的系统组成部分,选择适当方式来配置系统,例如:主机地址、端口、代理员的列表、客户端的列表等。在使用本协议栈

38、时应注意以下几个问题:1、字典文件和属性的定义:由于不同厂商对属性和属性值的定义值不同,所以应注意区别,防止属性数据类型不匹配。2、确定操作系统参数如最大打开文件数、信号灯数等符合需要。3、尽量在用户回调函数中使用静态存,防止动态存使用不慎而引起的存泄漏和系统崩溃。4、根据不同需要,连接不同模块,防止占用系统过多。5、减少用户处理执行时间,以利于系统整体的运行性能。第七章结论协议栈实现系统与相关系统比较采用本协议栈编写的AAA 系统与其它典型RADIUS 实现系统比较如下表:系统本实现 Livingston1 Merit10 Ascend11 Freeradius12协议实现全部全部全部全部全

39、部认证方式一般一般一般一般多功能多一般一般一般多兼容性一般好一般一般一般性能好一般一般一般好扩展性好一般一般一般好测试工具全面简单简单简单简单结论由于Internet 不断发展,用户的接入越来越为人们关注。而防火墙和VPN 中的不断使用,使RADIUS 协议也日益成为工业事实标准。随着网络协议不断增多,使用协议栈来开发网络通信程序是近年来流行的趋势。开发一个可供快速组建RADIUS 系统的协议栈是一个必不可少的基础工具。一个可扩展的AAA 协议栈17本文通过集成关于 RADIUS 的若干协议,实现一个AAA 协议栈,使得开发基于RADIUS 协议的安全认证系统变得更加容易。通过测试,本协议栈在

40、同等环境条件下,系统的功能和性能达到相近系统的前列。不足之处和进一步的工作虽然我们做了大量工作,但在以下几个方面还存在着不足:1、对不同系统的各种属性的处理还不够全面。2、认证中的验证类型还需扩充。3、与其它安全认证系统的互通性有待提高。今后进一步的工作是:1、实现最新的RADIUS 协议RFC286513、RFC286614。2、改进协议栈,使之能运行于集群之上,提高系统性能。3、对数据库的访问中增加LDAP(轻型目录访问协议)的支持。4、加入负载平衡算法,使系统不同进程能发挥更大效率。5、增强与其它RADIUS 系统的互通性。6、支持TACACS+协议15,TACACS 终端访问控制器接入

41、控制系统协议。定义于RFC1492 中。TACACS+增强型。类似于RADIUS 的AAA 协议,与RADIUS 不同之处在于:传输协议使用TCP 而不是UDP。RADIUS 只加密口令字段,而TACACS+加密整个包净荷。TACACS+允许验证和授权分离,而RADIUS 中验证和授权是集成的。7、支持Diameter 协议16。IETF 着眼的下一代AAA 协议。一个全新轻量级的,基于端点的。提供可扩展的基础来引进新策略和AAA 服务。继承RADIUS 的机能。突破RADIUS 协议限制,允许服务员向客户端发送统一消息。使用重传和失败恢复算法。提供端到端的安全机制。支持漫游和移动IP 网络。

42、参考文献1.Lucent, “Remote Authentication Dial-In User Service”,.livingston./marketing/whitepapers/radius_paper.html,一个可扩展的AAA 协议栈1819922.Internet Engineering Task Force (IETF) Authentication, Authorization,and Accounting (AAA) Working Group Charter; available at./html.charters/aaa-charter.html.3.“Stacks

43、 of Internet Telephony”, ., 20004.C. Rigney, A. Rubens, W. Simpson, and S. Willens, “Remote AuthenticationDial In User Service”, IETF Network Working Group, April 1997.RFC2138.5.C. Rigney, “RADIUS Accounting”, IETF Network Working Group, April 1997.RFC2139.6.B. Aboba, G. Zorn “RADIUS Authentication

44、Client MIB”, IETF NetworkWorking Group, June 1999. RFC2618.7.B. Aboba, G. Zorn “RADIUS Authentication Server MIB”, IETF NetworkWorking Group, June 1999. RFC2619.8.B. Aboba, G. Zorn “RADIUS Accounting Client MIB”, IETF Network WorkingGroup, June 1999. RFC2620.9.B. Aboba, G. Zorn “RADIUS Accounting Se

45、rver MIB”, IETF Network WorkingGroup, June 1999. RFC2621.10. University of Michigan and Merit Network, Inc. “Merit AAA Server”,199211. Ascend Communications, Inc. “Ascend RADIUS”, 199612. “Free RADIUS Project”, ., 200013. C. Rigney, A. Rubens, W. Simpson, and S. Willens, “RemoteAuthentication Dial I

46、n User Service”, IETF Network Working Group, June2000. RFC2865.14. C. Rigney, “RADIUS Accounting”, IETF Network Working Group, June2000. RFC2866.15. C. Finseth, An Access Control Protocol, Sometimes Called TACACS,IETF RFC 1492, July 1993; available at/in-notes/rfc1492.txt.16. P.R. Calhoun, A.C. Rube

47、ns, and H. Akhtar, Diameter Base Protocol,IETF AAA Working Group, Internet draft, Oct. 1999, work in progress.一个可扩展的AAA 协议栈19致在此,首先向我的导师鞠九滨教授表示深深的意!从本科论文开始,鞠九滨教授以他严谨的治学态度、渊博的学识、敏锐的思维和孜孜不倦的工作作风对我进行了悉心的教诲,使我受益终生。同时还要向春阳高级工程师表示感,老师一丝不苟的工作作风非常值得我的学习。向师兄钶、猛表示衷心的感。他们在科研上帮我攻克难关,给了我许多无私的关心和帮助。感研究小组成员静、广艳、于海

48、超,是他们使我在团结协作中不断成长。特别感于秀峰老师、胡成全老师、胡亮老师和房至一老师对我的帮助。一个可扩展的AAA 协议栈20论文摘要认证(Authentication)、授权(Authorization)、记账(Accounting)是网络接入的三个重要需求。满足这些要求的RADIUS(Remote Authentication Dial-In UserService 用户远程拨号验证服务)协议作为IETF(Internet Engine Tasks Force互联网工程任务组)定义的标准协议已经越来越被大多数ISP、ITSP 和安全系统所认可。这样,开发符合RADIUS 协议的用户接入认

49、证、授权和记账的软件成为构筑ISP、电信运营商、安全网络系统中的必要部分。现行的RADIUS 开发虽然部分满足了用户的需求,但存在几个关键问题,如开发者不能利用已有存在的系统,重复劳动,开发周期长;各种系统实现方式差异很大,不利于维护扩充;软件特定平台,不能跨越平台使用;对协议包理解方式不同,不能互通漫游。作为一个可扩充的AAA 协议栈软件包,用户可以在AAA 协议栈的基础之上,选择自己所需要的运行模块和连接方式,编写符合自己需要的用户回调函数和全局设置接口,就可以完成一个标准的RADIUS 系统。用户使用本协议栈开发AAA 系统时,可以脱离编写协议时的各种繁琐过程,无需考虑协议的语法和数据包的结构,并且使系统所覆盖的协议最多。采用这种方法开发的RADIUS 系统具有符合国际标准协议、使用简便、开发周期短、系统灵活性高、易于扩充和与系统间可互通漫游的特点。一个可扩展的AAA 协议栈21AbstractAuthentication, Authorization and Accounting are three crucial requirementsfor network access. To

温馨提示

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

评论

0/150

提交评论