无线局域网中RADIUS协议原理与实现

  • 格式:docx
  • 大小:156.47 KB
  • 文档页数:8

无线局域网中RADIUS 协议原理与实现1引言远程认证拨号用户服务协议(Remote Authentication Dial In User Service, RADIUS最初是由Livingston 公司提出的一个为拨号用户提供认证和计费的协议。

后经多次改进, 逐渐成为一项通用的网络认证、计费协议,并定义于IETF 提交的RFC286侨口 RFC286敬件中。

RADIUS 协议以Client/Server方式工作,客户端为网络接入服务器( NAS ,它向RADIUS 服 务器提交认证、计费等信息, RADIUS 服务器处理信息并将结果返回给 NAS 。

RADIUS 协议的应用范围很广,在移动、数据、智能网等业务的认证、计费系统中都有 所应用。

无线局域网的 802.1X 认证框架中,在认证端也建议使用RADIUS 协议。

本文将论述RADIUS 协议的原理,并探讨它在WLAh 中的应用及实现方案。

2 RADIUS 协议2.1 WLAN 网络模型实际商用的无线局域网,可以用局域网交换机来实现 802.1X 认证协议中的端口控制功能。

为保证网络的安全性,在无线局域网的出口和认证端应加上防火墙。

RADIUS 服务器和 数据库还可以采取主、备结构,以保证网络的健壮性。

网络模型如下图所示:图1无线局域网网络模型无线局域网的认证端由 RADIUS 服务器、网络接入服务器(NAS 和数据库组成。

其中:NAS 作为RADIUS 服务器的客户端,向 RADIUS 服务器转交用户的认证信息。

并在用户 通过认证之后,向 RADIUS 服务器发送计费信息。

RADIUS 服务器:作为认证系统的中心服务器,它与NAS 数据库相连,它接受来自 NAS提交的信息,对数据库进行相应的操作,并把处理结果返回给 NAS 数据库:用于保存所有的用户信息、 计费信息和其他信息。

用户信息由网络管理员添加至数据库中;计费信息来自于RADIUS 服务器;其他信息包括日志信息等。

2.2 RADIUS 的数据包结构RADIUS 是应用层的协议,在传输层它的报文被封装在 UDP 的报文中,进而封装进IP 包。

局域陶空推机RADIUS认证使用1812端口,计费使用1813端口。

以太网上的RADIUS封装后的包结构:RADIUS数据包分为5个部分:(1)Code:1个字节,用于区分 RADIUS包的类型:常用类型有:接入请求(Access-Request ), Code=1;接入应答(Access-Accept ), Code=2;接入拒绝(Access- Reject ), Code=3;计费请求(Accounting-Request ), Code=4等。

(2) Identifier: —个字节,用于请求和应答包的匹配。

(3) Length:两个字节,表示 RADIUS数据区(包括 Code, Identifier, Length, Authenticator, Attributes )的长度,单位是字节,最小为20,最大为4096。

(4) Authenticator:16 个字节,用于验证服务器端的应答,另外还用于用户口令的加密。

RADIUS服务器和NAS的共享密钥(Shared Secret) 与请求认证码(RequestAuthenticator) 和应答认证码(Response Authenticator) ,共同支持发、收报文的完整性和认证。

另外,用户密码不能在NAS和 RADIUS服务器之间用明文传输,而一般使用共享密钥(Shared Secret) 和认证码(Authenticator) 通过MD加密算法进行加密隐藏。

(5) Attributes: 不定长度,最小可为0个字节,描述RADIUS协议的属性,如用户名、口令、IP地址等信息都是存放在本数据段。

2.3 RADIUS的认证、计费过程如图1网络模型所示:(1)申请者登录网络时,NAS会有一个客户定义的Login提示符要求申请者输入用户信息(用户名和口令),申请者输入相关的认证信息后,等待认证结果。

(2) NAS在得到用户信息后,将根据RADIUS的数据包格式,向RADIUS 服务器发出“接入请求”(Access-Request )包。

包中一般包括以下RADIUS属性值:用户名、用户口令、访问服务器的ID、访问端口的ID。

(3)当RADIUS服务器收到“接入请求”包后,首先验证NAS的共享密码与 RADIUS服务器中预先设定的是否一致,以确认是所属的RADIUS客户端。

在查验了包的正确性之后,RADIUS服务器会依据包中的用户名在用户数据库中查询是否有此用户记录。

如果用户信息不符合,就向NAS发出“接入拒绝” (Access-Reject )包。

NAS在收到拒绝包后,会立即停止用户连接端口的服务要求,用户被强制退出。

(4)如果用户信息全部符合,服务器向NAS发出“接入质询”包(Access-Challenge ),对用户的登录请求作进一步的验证。

其中包括:用户口令、用户登录访问服务器的IP、用户登录的物理端口号等。

NAS收到“接入质询”包后,将消息显示给用户,要求用户进一步确认登录请求。

用户再次确认后,RADIUS服务器将比较两次的请求信息,决定如何响应用户(发送 Access-Accept、Access-Reject 或再一次的 Access-Challenge )。

(5)当所有的验证条件和握手会话均通过后,RADIUS服务器会将数据库中的用户配置信息放在"接入接受” (Access-Accept )包中返回给 NAS后者会根据包中的配置信息限定用户的具体网络访问能力。

包括服务类型:SLIP、PPR Login User、Rlogin、Framed、Callback等等。

还包括与服务类型相关的配置信息:IP地址、时间限制等等。

(6)在所有的验证、授权完成后,局域网交换机的控制端口被打开。

用户可以通过交换机进入网络。

同时,NAS向RADIUS服务器发送“计费请求开始”包(Accounting-Request Start),通知RADIUS服务器开始计费。

当用户下网时,NAS向RADIUS服务器发送“计费请求结束”包(Accounting- Request Stop ), RADIUS服务器根据计费包的信息计算用户使用网络的费用。

3 WLAN模型中RADIUS认证系统的设计与实现3.1 WLAN网络模型的简化在实验室的模拟环境下,由于网络用户少,可以采用中、小型的数据库来存放所需信息,并可以将RADIUS服务器与数据库在同一主机上实现。

局域网交换机可以实现端口控制功能。

网络结构可简化如下:图2实验室环境下WLAh网络模型3.2 NAS设计(1) RADIUS客户端处理程序:负责接收申请者的信息;向RADIUS服务器提交认证、计费、管理等数据包;向申请者返回相应结果。

(2)服务器管理程序:为了方便网络管理员对RADIUS服务器和数据库的管理,在NAS 主机上,还可以运行服务器管理程序,管理程序的功能应该包括有:管理员模块(添加、删除网络管理员,设置管理员权限等);用户信息模块(实现用户的查询、添加、删除等操作);计费信息模块(查询用户的计费信息,创建、修改、删除各种不同的计费方式,);日志信息模块等。

(3)用户信息的提交:用户需要向NAS提交用户信息,有多种方法可以实现,最简单的方法是采用Web方式提交。

在NAS上建立一个Web服务器,这样,用户可以直接使用浏览器来和NAS 交互,Web服务器接受到用户提交的信息后,把这些信息传给RADIUS的客户端处理程序。

后者把这些信息封装成RADIUS的接入请求(Access-Request )包格式,通过认证端口( 1812)向RADIUS服务器提出认证请求。

(4)计费信息的提交:认证通过之后,NAS客户端程序通过认证端口( 1812)向RADIUS 服务器发送包含有用户名、用户IP、上网起始时间等信息的“计费请求开始”包(Accounting-Request Start ),通知RADIUS服务器开始计费。

RADIUS服务器在数据库中纪录下相应项,并返回“计费响应”包(Accounting- Response )。

当用户下网时,NAS向RADIUS服务器发送包含有结束时间、数据流量等信息的“计费请求结束”包(Accou nti ng-Request Stop )。

后者返回"计费响应”包( Accounting-Response )确认。

(5)服务器管理程序的提交:也通过RADIUS客户端处理程序来向 RADIUS服务器提交。

客户端处理程序将管理程序的请求包装成标准的RADIUS包格式,并通过为服务器管理程序定义一个端口号提交给 RADIUS服务器。

3.3 RADIUS服务器设计RADIUS服务器处理来自NAS的各项数据和实现对数据库的操作,并返回相应的结果。

RADIUS客户端和服务器端的协议通信采用Socket编程来实现。

(1)对数据库的操作:RADIUS服务器通过数据库接口与数据库建立起连接。

在RADIUS 服务器中用SQL语句实现所需的数据库操作模块(如:用户、计费、管理员等信息的查询、添加、修改等操作),当RADIUS服务器需要对数据库操作时,就调用相应的模块。

(2)认证包处理:通过*认证端口( 1812),来监测NAS提交的认证数据包,收到认证包后,查询数据库验证用户,并把结果以RADIUS数据包格式从1812端口返回。

对于多个用户申请并发的情况,使用多线程方式处理。

(3)计费包的处理:当用户的认证通过时,查询该用户计费信息。

确定其计费类型、费率等。

当*到NAS在计费端口(1813)提交计费包后,就向数据库中添加“计费请求开始” 包中所提交的计费信息(包括用户名、上网起始时间等)。

在收到用户下网的“计费请求结束”后,根据包中提交的用户结束时间、数据流量等信息,计算用户的上网时长和数据流量,并根据用户计费类型来计算出用户本次上网费用,记录入数据库。

(4)服务器管理程序请求的处理:*管理程序请求的端口(自定义),收到后解包并执行相应的处理函数。

3.4数据库的设计用于保存所有的用户信息、计费信息等。

数据库中包含的表项至少应包括以下几类:(1)用户信息:包括用户名、口令、认证方式、访问权限、付费方式等。

(2)授权信息:服务器返回给用户的授权等配置信息,如服务类型,会话时间等。

(3)计费信息:存放与计费有关的各种统计信息。

如:上网时间、计费费率、用户的历次上网的数据流量和费用、用户帐户余额等。

(4)管理员信息:网络管理员的ID号和口令、管理员的权限。

(5) NAS信息:RADIUS服务器所属的各 NAS纪录。