发新话题
打印

[网络转载] 远程访问的3A认证

远程访问的3A认证

摘 要:本文介绍了关于远程访问的安全问题,以及与其相关的两个协议RADIUS和TACACS。通过比较两个协议的区别,我们可以了解现在ISP普遍采用的确保拨号服务安全的机制。最后本文提出了实际应用时,这种机制存在的一些问题。

关键词:远程访问控制 认证 授权 记帐 TACACS RADIUS

  Internet网络的兴起推动了整个世界信息产业的飞速发展,MODEM的出现为单个网络用户获得网络服务带来了福音,它借助于现有的公用电话交换网,使用户摆脱了上网地理位置的限制,用户可以在任何一个有电话线路的地方拨号连入Internet。然而,这也给网络服务的提供者(ISP)们提出了一个无法回避的问题,即如何保证远程访问的网络安全。

  远程访问控制的安全包含三方面的内容:认证、授权和记帐。“认证”是确认远端访问用户的身份,判断访问者是否会合法的网络用户,常用的办法是以一个用户标识和一个与之对应的口令来识别用户。“授权”即对不同用户赋予不同的权限,限制用户可以使用的服务,如限制其访问某些服务器或使用某些应用,它避免了合法用户有意或无意地破坏系统。“记帐”记录了用户使用网络服务中的所有操作,包括使用的服务类型、起始时间、数据流量等信息,它不仅为ISP们提供了计费手段,同时也对网络安全起到了监视的作用。认证(Authentication)、授权(Authorization)、记帐(Accounting)三个英语单词的第一个字母都是“A”,所以现在人们常常将它们称作为“3A”或“AAA”,把它们作为网络安全策略的一个组成部分。

一、基本结构
  通常,一个远程访问控制系统可以分为硬件部分和软件部分,硬件部分用来实现对MODEM和端口的控制,软件部分则是一个运行于服务器上的程序,我们称之为后台守护进程(Daemon),它负责对用户进行认证、授权以及记录记帐信息。

  一个最简单的实现远程访问控制的方法是将用户标识列表加载于访问控制服务器内,由同一个服务器完成对MODEM和端口的控制以及对用户的认证、授权和记帐。例如,Cisco2500系列的远程访问控制器可以将一个用户标识列表和口令作为系统配置文件的一部分,由它完成控制和认证两个功能。在Windows NT环境下的RAS(Remote Access Service)也采用了这一种机制来管理远程拨号。

  但是,随着拨号用户数目的增加,采用上述机制必然导致服务器有限资源的浪费和速度的滞后,甚至无法满足要求。同时,对于经常出差的用户来说,需要通过长途拨号登录到注册地的服务器才能访问网络,既不方便也不经济。因此,将硬件和软件两部分功能分开实现于不同的服务器上,也就成为了一个比较好的解决方案

  整个系统采用客户/服务器结构。由网络访问服务器NAS(Network Access Server)充当客户端,它负责将用户的标识和口令,以及用户希望得到服务类型和配置等信息封装在请求报文中送到服务器端,并且根据服务器端回送的响应作进一步动作。
  在服务器端由一台或几台运行了Daemon的主机充当,服务器端接收到客户端发来的请求,根据请求报文中的信息和本地数据库中用户的记录对用户进行认证。本地数据库存放了用户名、口令以及该用户的配置信息。认证完成后,服务器端向客户端回送响应,指示NAS是否为该用户提供服务以及提供何种服务。
  服务器端还可以充当其它服务器的代理客户端(Proxy Client),其主要功能是将本地收到的客户端发来的请求转发给另一台服务器,并将那台服务器返回的响应转发给客户端。



二、RADIUS和TACACS
  RADIUS(Remote Authentication Dial In User Service)和TACACS (Terminal Access Controller Access Control System)是基于上述结构的远程访问控制的两个开放协议标准,它们被广泛的实现在各种拨号服务器中。
  RADIUS是由LIVINGSTON公司最早提出的,实现于它们的PortMaster系列终端上,后来由IETF列入Internet标准,定义在RFC2138和RFC2139中。
  TACACS是CISCO公司在80年代提出的,是用于其公司路由器和终端服务器产品的远程访问控制协议,后经扩展变为XTACACS(Extended TACACS),近几年为了进一步增强TACACS的功能,CISCO公司又推出了新一代的TACACS+。
  TACACS+和RADIUS都实现了认证、授权和记帐功能,它们有很多相似点:结构上都采用了客户/服务器、请求一响应:都用公共密钥对在网上传输的用户信息进行加密;都提供了进一步认证的手段;都有较好的灵活性和可扩充性。两者存在的主要区别在于:
  首先,客户端与服务器端连接采用的传输协议不同。这是它们的一个最大区别,在TACACS+协议中客户端采用TCP与服务器端连接,而在RADIUS中则采用UDP。采用TCP连接可以避免客户端和服务器端在传送用户信息和计费信息中报文的错误,提高用户记帐信息的正确性,这对绝大多数的ISP都是比较重要的,在线路质量比较差的网络上它有着较突出的优越性。但是,采用UDP连接也有不可忽视的好处;一方面采用UDP连接使服务器端的实现比较简单,另一方面TCP的超时重传机制在整个系统的实际使用中存在着一些不足,客户端在发出请求后若一段时间内未收到从服务器来的响应则需重发请求,但是通常用户希望在几秒中内完成认证,而TCP的超时重传的时间是由来回(round-trip)时间决定的,要远远大于几秒,若采用UDP,在一定时间内未收到响应后可以马上重发一个UDP报文而不需要关心前一个报文是否到达,这比采用TCP效率高。
  其次,对报文的加密程度不同。TACACS+和RADIUS都是MD5算法对报文进行加密,但TACACS+对整个报文进行加密,而RADIUS仅对用户的口令部分加密。
  再次,对AAA功能的分离程度不同。为了使RADIUS协议尽可能的简单,易于实现,RADIUS定义的数据报文比较简单,服务器在收到NAS的认证请求后,若用户认证成功后就将用户的授权信息封装在认证响应报文中返回给NAS。因此也就导致了用户的认证和授权过程往往无法打开,通常在RADIUS中用户的认证信息和配置信息是放在同一个数据库中。而TACACS+中为了使认证、授权和记帐功能能够按需要完全分开,它定义了较复杂的数据报文结构以满足这一要求,认证、授权和记帐都有各自不同的请求和响应报文格式,这样三种功能可以实现于不同的服务器上,与之对应的数据库也可以各自分开。
  最后,在支持代理方式上不同。在RADIUS协议中定义了服务器端充当代理客户端的功能,但在TACACS+协议中没有具体提到。代理功能常用于分布式的远程访问控制系统中,通过将用户信息转发给一异地的含有用户信息记录的服务器进行认证和授权,使在不同地理位置上的活动用户不需通过长途拨号登录到注册地的NAS就能得到本地接入服务,即通常称的“漫游”。
  TACACS+和RADIUS都是开放标准,现在很多NAS产品都同时支持这两种协议,但是各个厂商在实现它们的过程中往往根据自己产品的特点对协议作了扩充,给不同的NAS产品之间的互操作带来了影响。
三、实际应用中存在的问题
  1.用户数量对系统的影响
  当用户数量很大量,要使系统能够同时并发处理多个客户端的请求,并能从庞大的用户数据库中迅速搜索到相关信息,对系统提出了两方面的要求:一方面是对服务器端内存在的要求、另一方面是服务器处理速度的要求。
  ISP们通常可以采用硬件升级来应付这种情况。当然,我们还可以另一种方法,即配置多台服务器,系统结构如图2,采用这种结构的远程访问控制系统,将用户信息分开存放于不同的服务器,从而减少每台服务器上用户信息的总量和对请求的处理量。当然在采用这种方法时,需建立一个用户标志与服务器之间的对应关系,从而使NAS知道对于某一用户该由哪个服务器认证。


  2.“漫游”的安全性问题
  随着网络把整个世界连成一体,人们对网络的依赖也越来越大,人们希望在任何地方都能得到网络服务。于是,“漫游”成了人们迫切希望得到的服务。代理功能为实现“漫游”提供了很好的支持。
  A地和B地的ISP通过联合为用户提供“漫游”,两地的服务器通过广域网相连,并且建立信任关系,使用相同的密钥。当A地的用户漫游到B地,只需拨号与B地的NAS连接。B地的服务通过广域网向A地的服务器转发请求报文来认证用户身份,当得到A地服务器的认证后,由B地的NAS直接向用户提供本地网络服务。这样A地的用户不需拨打长途登录到A地的服务器,从而大大减少了开销,也减轻了线路负载。为了使B地的服务器能够正确的转发请求,用户在登录时,除了需提供用户标志和口令外,还需指出注册地服务器的名称。


  在整个认证过程中,由于报文通过广域网进行传送,因此被截取的可能性也就很大。RADIUS只对用户口令部分加密,因此用户信息很容易被窃听。在这方面,TACACS+对整个报文进行加密的优越性就相对比较突出了。不过虽然两者都考虑了这方面的问题,但仍然存在一些不安因素,例如记帐报文的正确传送直接关系的ISP和用户利益,但当服务器被连接到广域网上时,服务器也就很可能成为被攻击的对象。因此,我们需要引入检测机制,对报文的可信度进行检查,以防止欺骗行为的发生。同时,在服务器端尽可能的不要提供开放的服务,如TELNET,FTP,EMALL,HTTP等。

TOP

发新话题