摘 要: 在分析SOCKSv5代理服务协议及可扩展认证协议EAP的基础上,设计了一种基于SOCKSv5与EAP联合的代理认证服务器。
关键词: SOCKSv5 EAP 授权
目前大多数安全系统使用的SOCKSv5代理服务只能支持限定的认证方法,且无法根据用户的身份情况灵活地选择认证机制。本系统把SOCKSv5代理服务与可扩展认证协议(EAP)联合起来,形成了可扩展的代理认证子体系——基于SOCKSv5与EAP联合的代理认证服务器,从而弥补了防火墙代理服务在支持多种认证机制中的不足,提高了用户身份认证的灵活性、访问控制的可靠性,并为授权管理中的鉴定权限问题提供了有效的解决途径。
1 SOCKSv5的结构和原理
1.1 SOCKSv5的结构
随着网络安全技术的不断发展,防火墙怎样适应于不断出现的应用服务和安全服务成了迫切需要解决的问题。SOCKS代理服务技术成为解决该问题的有效途径。SOCKS主要由运行在防火墙系统上的代理服务器软件包和链接到各种网络应用程序的库函数包组成。这样的结构可以使用户根据自己的需要制定代理软件,有利于增添新的应用,从而不断地扩展SOCKS的功能。SOCKSv5是SOCKS协议的最新版本,它是SOCKSv4功能的延伸,它支持创建UDP代理,并把协议结构扩展为支持强认证机制,把地址方案扩展到包含域名和IPv6寻址。
1.2 协议原理
SOCKSv5在OSI模型的会话层控制数据流,它定义了非常详细的访问控制。SOCKSv5在客户机和应用服务器主机之间建立了一条虚电路,可根据认证对用户进行监视和访问控制。用SOCKSv5的代理服务器可隐藏内部网的网络地址结构。同防火墙结合起来使用时,数据包通过惟一的防火墙端口(默认为1080)到SOCKSv5代理服务器,然后代理服务器过滤发往目标主机的数据。同时,它能为认证、加密和密钥管理模块提供插件模块,使用户自由地采用他们所需的技术,从而为灵活、广泛地应用SOCKSv5协议奠定了良好的基础。其协议过程如下:
(1)当TCP的应用客户希望建立一个只有经过防火墙才能到达目标应用服务器的连接时,它打开一个到SOCKSv5服务器系统上适当端口的连接。SOCKSv5服务在TCP上的端口通常为1080。
(2)如果连接请求成功,即客户连接上了SOCKSv5服务器,则客户端发送一个消息,其中包含SOCKSv5的版本号以及一种或多种认证方案。SOCKSv5服务器选择客户提供的诸多方法中的一种返回给客户端。
(3)客户端接收到该消息后,针对将要使用的具体认证方法与SOCKSv5服务器协商,并用协商好的方法进行认证,然后发送代理请求。
(4)SOCKSv5服务器检查该请求,据检查结果决定是建立适当的代理回路还是拒绝该请求。同时给客户发送代理回路状态。客户检查代理状态。
(5)代理服务器开始中继应用协议的数据。
2 可扩展认证协议的内容及应用
2.1 协议内容
可扩展认证协议是PPP认证的一般协议,它支持多种认证机制。EAP在连接控制阶段不会选择某种特定的认证机制,而是在认证阶段选择。这允许认证者在决定特定的认证机制之前请求更多的信息。同时也允许使用后端服务器来执行各种认证,而PPP认证者只用来传递认证的信息。协议过程如下。
(1)认证者和对方建立连接控制。
(2)连接建立阶段完成之后,认证者发送一个或更多的认证请求。请求的类型包含身份、MD5-挑战、一次性口令、一般的标识卡等。MD5-挑战类型紧密地对应于CHAP认证协议。在典型的模式中,认证者在发送一个或多个对认证信息的请求之后,将发送一个初始的身份请求。但初始的身份请求并不是协议要求的,在身份可以推测的情况下它有可能被取消。
(3)对方发送应答包来答复每个请求。应答包的类型域与请求包相同。
(4)认证者发送认证成功或失败包来结束认证阶段。
在默认的情况下,EAP以代理模式运行,即EAP允许网络访问服务器和后端服务器协商整个认证过程。客户和网络接入服务器(NAS)在连接控制协议交流期间进行EAP协议的协商,更进一步的认证消息均在客户和后端服务器之间被传输。网络接入服务器不再直接参与认证过程,而是作为代理者在二个远端之间中继信息。
2.2 应 用
任意一个认证机制都可使用EAP验证远程访问连接。在远程客户和认证者(远程访问服务器或者因特网认证服务器)之间需要协商好将要使用的认证机制。EAP可支持多种认证机制,诸如通用标识卡、MD5-挑战、S/Key以及未来的任何认证技术。
EAP允许远程客户和认证者之间自由会话。会话包含认证者对认证信息的请求和远程客户的应答。例如,当EAP通过安全标示卡来实现时,认证者可独立地询问远程客户的名字、PIN以及卡的标识值,直到远程客户回答完所有问题,认证才成功地结束。为了实现成功验证,远程访问客户和认证者必须支持相同的EAP类型。
EAP-RADIUS不是一种EAP类型,而是任何EAP类型的信息通过认证者(远程访问服务器或IAS)到达RADIUS的传输过程。例如,对用于支持RADIUS认证的远程访问服务器来说,在远程访问客户和远程访问服务器之间的EAP消息将被封装和格式化为远程访问服务器和RADIUS服务器之间的RADIUS消息。
EAP-RADIUS适用于RADIUS作为认证提供者的环境。使用EAP-RADIUS的优点在于EAP类型不必嵌入在每个远程访问服务器上,而只需嵌入到RADIUS服务器上。
在EAP-RADIUS的典型使用情况中,Windows 2000远程访问服务器配置为可与EAP和IAS服务器结合来用于认证。一个连接成功创建后,远程访问客户与远程访问服务器协商EAP的使用。当客户发送一个EAP消息给远程访问服务器时,远程访问服务器把EAP消息包装成一个RADIUS消息,并把它发送给配置好的IAS服务器。IAS服务器处理EAP消息,同时返回一个封装了RADIUS的EAP消息给远程访问服务器。远程访问服务器把EAP消息提交给远程访问客户。在这种配置中,远程访问服务只是一个中继设备。远程访问客户和IAS服务器负责所有EAP消息的处理。
3 SOCKSv5-EAP代理认证服务器的设计
3.1 代理认证模块的结构
EAP协议允许防火墙在SOCKSv5认证方法阶段不必预先商定具体的认证机制。它支持所有的EAP认证的扩展机制,认证服务器可根据用户的身份来决定认证机制的类型。这就允许SOCKS服务器在决定之前认证机制可以向用户请求更多的信息。并且可以使用一个后端服务器来专门执行各种不同的认证,这使得支持EAP功能的RADIUS服务器可以用作后端服务器进行各种不同的认证。代理认证模块结构如图1所示。
3.2 SOCKSv5-EAP的协商过程
(1)SOCKSv5认证方法协商阶段,EAP并不进行明确的认证机制的选择,而是在SOCKS基于认证方法的子协商阶段才选定认证机制。SOCKS服务器除了用于传递认证信息之外,还能进行简单的访问控制、过滤和认证。
(2)一旦TCP连接在客户和SOCKS服务器间建立,客户发送一个包含版本标识符和方法选择集的消息。服务器从METHODS所给的方法中选择一种。
(3)在SOCKSv5认证方法被协商确定后,RADIUS服务器发送一个或多个请求信息来认证SOCKSv5客户。请求中的类型域用于指明被请求的内容,包括身份、MD5-挑战、一次性口令和一般的认证卡等。MD5-挑战类型与挑战握手协议(CHAP)相对应。典型情况下,在请求更多的认证信息之前,SOCKSv5服务器发送一个初始的身份请求。
(4)应答包包含的类型域与请求的类型域相同。SOCKS或RADIUS服务器将用一个认证成功或失败包来结束认证阶段。
(5)SOCKSv5服务器在客户和认证服务器RADIUS之间不停地中继双方发出的EAP包。
3.3 协商过程中各种包的格式
(1)SOCKS/RADIUS服务器请求包以及对方应答包的摘要如图2所示。
VER标识子协商的当前版本;CODE标识EAP请求(值为1)或EAP应答(值为2);ID域负责辅助匹配请求和应答;TYPE域标识请求或应答类型(身份、通知、NAK、MD5-Challege、一次性口令和一般的认证卡),一般来说请求类型和应答类型应相同。
(2)EAP包的格式如图3所示。
其中CODE域标识EAP请求或EAP应答;LENGTH域标识EAP包的长度;DATA域的格式由CODE域决定。
4 基于SOCKSv5-EAP代理认证服务器的认证系统
4.1 系统结构
该系统主要由SOCKSv5-EAP代理认证服务器、安全管理终端、应用客户端、资源服务器组成。系统结构图如图4所示。
SOCKSv5-EAP代理认证服务器主要由SOCKSv5服务器和RADIUS服务器共同组成。其中RADIUS服务器作为后台服务器,具有鉴权功能。安全管理终端主要由授权发布机构、证书管理中心和证书库组成。
4.2 系统流程
(1)当客户要访问资源时,客户通过代理认证服务器进行身份认证。认证过程如下。
①SOCKSv5客户向SOCKSv5服务器发送版本标识/方法选集消息,SOCKSv5服务器收到该消息,从METHODS中选择一种方法,并回应给客户。EAP将使用METHODS域中的下列标志:(TDB)Extensible Authentication Protocol。
②方法协商结束,双方进入依赖方法的子协商阶段。在此阶段,RADIUS服务器向客户发请求,客户对每个请求作应答,RADIUS服务器根据客户情况决定出一种认证机制。请求中包括请求的类型。
③代理回路的建立阶段。客户发出代理请求,SOCKSv5服务器根据自己的规则初步判断是否允许代理,如果允许,则建立常规的SOCKSv5代理回路。否则拒绝,不予代理。代理回路建立后,SOCKSv5服务器开始在客户与RADIUS服务器之间不间断地传送EAP包。认证在进行中。
(2)用所决定出的认证机制认证完毕后,代理认证服务器把包含身份和权限属性的认证结果交给授权发布机构,授权发布机构把权限证书离线发布给客户。
(3)客户把证书信息提交给SOCKSv5服务器,由SOCKSv5中转给RADIUS服务器来鉴定证书的权限。
(4)鉴定权限通过后,RADIUS服务器发送给SOCKSv5服务器一个认证成功包,告诉它客户通过了权限的鉴定,SOCKSv5把此消息中转给客户,SOCKSv5服务器启动客户与应用资源服务器之间的代理回路,进行应用数据的中继。
(5)授权发布机构根据证书的有效期撤消证书,同时通知代理认证服务器证书过期。
5 结束语
本文在介绍SOCKSv5协议、EAP的基础上,设计了一个代理认证服务器,在很大程度上提高了用户身份认证和访问控制技术的灵活性。同时,它也为授权管理提供了一种灵活验证授权的技术方法。该方法解决了防火墙协议对不断扩展的认证机制的支持问题。该技术可与其他网络安全技术诸如授权管理等相结合,形成比较完善的并可以不断扩展的安全体系。
参考文献
1 楚狂,梁宁,吴永义等.网络安全与防火墙技术.北京:人民邮电出版社,2000
2 江学争,王亚弟.基于RADIUS的身份认证系统的设计与实现.电子技术学院学报,2002;12(4)
3 Otenko O.PMI Components.http://sec.isi.salfordac.uk/,2002-12-02