1、Radius 认证在局域网安全管理中的应用唐镇 济宁市公安消防支队摘要 RADIUS协议是一个被广泛应用于网络认证、授权和计费的协议。该文在介绍 RADIUS协议原理的基础上,对 RADIUS协议的实现做了分析与设计,提出一个基于 Radius认证交换机的网络安全认证管理模型,实现了内部网络与外部网络的安全认证管理,克服了传统计费系统对内部网络无法管理的缺点,在局域网运行中得到了良好的效果。关键词: 局域网 RADIUS 认证 1 引言远程认证拨号用户服务协议(Remote Authentication Dial In User Service, RADIUS)最初是由Livingston公司
2、提出的一个为拨号用户提供认证和计费的协议。后经多次改进,逐渐成为一项通用的网络认证、计费协议,RADIUS 协议以 Client/Server方式工作,客户端为网络接入服务器(NAS) ,它向RADIUS服务器提交认证、计费等信息,RADIUS 服务器处理信息并将结果返回给 NAS。本文提出一种网络安全认证管理模型。利用 Radius认证技术,在局域网内实现了内部与外部网络资源访问认证管理。2 RADIUS认证2.1 RADIUS 认证局域网模型实际常用的局域网,可以用局域网交换机来实现端口控制功能。为保证网络的安全性,在局域网的出口和认证端应加上防火墙。RADIUS 服务器和数据库还可以采取
3、主、备结构,以保证网络的健壮性。网络模型如下图所示:图 1 局域网网络模型局域网的认证端由 RADIUS服务器、网络接入服务器(NAS)和数据库组成。其中:NAS:作为 RADIUS服务器的客户端,向 RADIUS服务器转交用户的认证信息。并在用户通过认证之后,向 RADIUS服务器发送计费信息。RADIUS服务器:作为认证系统的中心服务器,它与 NAS、数据库相连,它接受来自 NAS提交的信息,对数据库进行相应的操作,并把处理结果返回给 NAS。数据库:用于保存所有的用户信息、计费信息和其他信息。用户信息由网络管理员添加至数据库中;计费信息来自于 RADIUS服务器;其他信息包括日志信息等。
4、2.2 RADIUS的认证、计费过程如图 1网络模型所示: (1)申请者登录网络时,NAS 会有一个客户定义的 Login提示符要求申请者输入用户信息(用户名和口令) ,申请者输入相关的认证信息后,等待认证结果。(2)NAS 在得到用户信息后,将根据 RADIUS的数据包格式,向 RADIUS服务器发出“接入请求”(Access-Request)包。包中一般包括以下 RADIUS属性值:用户名、用户口令、访问服务器的 ID、访问端口的 ID。(3)当 RADIUS服务器收到“接入请求”包后,首先验证 NAS的共享密码与 RADIUS服务器中预先设定的是否一致,以确认是所属的 RADIUS客户端
5、。在查验了包的正确性之后,RADIUS 服务器会依据包中的用户名在用户数据库中查询是否有此用户记录。如果用户信息不符合,就向 NAS发出“接入拒绝”(Access-Reject)包。NAS 在收到拒绝包后,会立即停止用户连接端口的服务要求,用户被强制退出。(4)如果用户信息全部符合,服务器向 NAS发出“接入质询”包(Access-Challenge) ,对用户的登录请求作进一步的验证。其中包括:用户口令、用户登录访问服务器的 IP、用户登录的物理端口号等。NAS收到“接入质询”包后,将消息显示给用户,要求用户进一步确认登录请求。用户再次确认后,RADIUS服务器将比较两次的请求信息,决定如何
6、响应用户(发送 Access-Accept、Access-Reject 或再一次的 Access-Challenge) 。(5)当所有的验证条件和握手会话均通过后,RADIUS 服务器会将数据库中的用户配置信息放在“接入接受” (Access-Accept)包中返回给 NAS,后者会根据包中的配置信息限定用户的具体网络访问能力。包括服务类型:SLIP、PPP、Login User、Rlogin、Framed、Callback 等等。还包括与服务类型相关的配置信息:IP 地址、时间限制等等。(6)在所有的验证、授权完成后,局域网交换机的控制端口被打开。用户可以通过交换机进入网络。同时,NAS 向
7、 RADIUS服务器发送 “计费请求开始”包(Accounting-Request Start) ,通知 RADIUS服务器开始计费。当用户下网时,NAS 向 RADIUS服务器发送“计费请求结束”包(Accounting-Request Stop) ,RADIUS 服务器根据计费包的信息计算用户使用网络的费用。3 局域网模型中 RADIUS认证系统的设计与实现3.1 NAS设计(1)RADIUS 客户端处理程序:负责接收申请者的信息;向 RADIUS服务器提交认证、计费、管理等数据包;向申请者返回相应结果。(2)服务器管理程序:为了方便网络管理员对 RADIUS服务器和数据库的管理,在 NA
8、S主机上,还可以运行服务器管理程序,管理程序的功能应该包括有:管理员模块(添加、删除网络管理员,设置管理员权限等) ;用户信息模块(实现用户的查询、添加、删除等操作) ;计费信息模块(查询用户的计费信息,创建、修改、删除各种不同的计费方式, ) ;日志信息模块等。(3)用户信息的提交:用户需要向 NAS提交用户信息,有多种方法可以实现,最简单的方法是采用Web方式提交。在 NAS上建立一个 Web服务器,这样,用户可以直接使用浏览器来和 NAS交互,Web 服务器接受到用户提交的信息后,把这些信息传给 RADIUS的客户端处理程序。后者把这些信息封装成 RADIUS的接入请求(Access-R
9、equest)包格式,通过认证端口(1812)向 RADIUS服务器提出认证请求。(4)计费信息的提交:认证通过之后,NAS 客户端程序通过认证端口(1812)向 RADIUS服务器发送包含有用户名、用户 IP、上网起始时间等信息的“计费请求开始”包(Accounting-Request Start) ,通知 RADIUS服务器开始计费。RADIUS 服务器在数据库中纪录下相应项,并返回“计费响应”包(Accounting-Response) 。当用户下网时,NAS 向 RADIUS服务器发送包含有结束时间、数据流量等信息的“计费请求结束”包(Accounting-Request Stop)
10、。后者返回“计费响应”包(Accounting-Response)确认。(5)服务器管理程序的提交:也通过 RADIUS客户端处理程序来向 RADIUS服务器提交。客户端处理程序将管理程序的请求包装成标准的 RADIUS包格式,并通过为服务器管理程序定义一个端口号提交给RADIUS服务器。3.2 RADIUS服务器设计RADIUS服务器处理来自 NAS的各项数据和实现对数据库的操作,并返回相应的结果。RADIUS 客户端和服务器端的协议通信采用 Socket编程来实现。(1)对数据库的操作:RADIUS 服务器通过数据库接口与数据库建立起连接。在 RADIUS服务器中用SQL语句实现所需的数据
11、库操作模块(如:用户、计费、管理员等信息的查询、添加、修改等操作) ,当RADIUS服务器需要对数据库操作时,就调用相应的模块。(2)认证包处理:通过监听认证端口(1812) ,来监测 NAS提交的认证数据包,收到认证包后,查询数据库验证用户,并把结果以 RADIUS数据包格式从 1812端口返回。对于多个用户申请并发的情况,使用多线程方式处理。(3)计费包的处理:当用户的认证通过时,查询该用户计费信息。确定其计费类型、费率等。当监听到 NAS在计费端口(1813)提交计费包后,就向数据库中添加“计费请求开始”包中所提交的计费信息(包括用户名、上网起始时间等) 。在收到用户下网的“计费请求结束
12、”后,根据包中提交的用户结束时间、数据流量等信息,计算用户的上网时长和数据流量,并根据用户计费类型来计算出用户本次上网费用,记录入数据库。(4)服务器管理程序请求的处理:监听管理程序请求的端口(自定义) ,收到后解包并执行相应的处理函数。3.3 数据库的设计用于保存所有的用户信息、计费信息等。数据库中包含的表项至少应包括以下几类:(1) 用户信息:包括用户名、口令、认证方式、访问权限、付费方式等。(2) 授权信息:服务器返回给用户的授权等配置信息,如服务类型,会话时间等。(3) 计费信息:存放与计费有关的各种统计信息。如:上网时间、计费费率、用户的历次上网的数据流量和费用、用户帐户余额等。(4
13、) 管理员信息:网络管理员的 ID号和口令、管理员的权限。(5) NAS信息:RADIUS 服务器所属的各 NAS纪录。包括各 NAS的 ID号、与RADIUS服务器的共享密码等。(6) 日志信息:保存用户上网的历史记录、网络管理员的登录及操作纪录。3.4认证端各部分的实现:操作系统:RADIUS 服务器和 NAS均采用 Linux(Red Hat 9.0,内核 Linux-2.4.20-8)作为操作系统。(1) NAS:用 Apache和 Tomcat构建一个支持 JSP的 Web服务器,这样申请者可以通过 Web页面来提交登录信息。服务器管理程序主要是处理系统管理员的信息,用 QT3.0完
14、成用户界面。RADIUS 客户端程序(C 语言实现)将用户或系统管理员提交的消息封装成 RADIUS包,并通过相应的端口转发给 RADIUS服务器。(2) 数据库:采用 MySQL数据库来实现,MySQL 是一个多用户、多线程 SQL数据库服务器。它由一个服务器守护程序 mysqld和很多不同的客户程序和库组成。Red Hat 9.0中自带有 MySQL服务,将服务启动即可。我们可以将 RADIUS服务器与 SQL数据库相连,建立用户数据库和计费数据库,对用户信息和计费信息进行有效的管理。(3) RADIUS服务器 :采用 freeradius-0.9.0来搭建 RADIUS服务器,实现 RA
15、DIUS协议,并使用 RADIUS服务器的 EAP-Identity认证方式(即:RADIUS 服务器对申请者的用户名和口令进行认证) 。freeradius支持访问 SQL数据库,首先需要建立 RADIUS数据库(以 MySQL为例:mysql -uroot -prootpass radius db_mysql.sql) ,建立后的数据库会包含如下一些表项:radcheck:用于指明用户的认证方式;radgroupcheck:将用户分组进行管理,指明各组的属性,如限定有些用户组默认的认证结果就是 Accept或 Reject;radgroupreply:对各用户组设定回应的属性;usergr
16、oup:指明用户与组的关系;radacct:存放与计费有关的各种统计信息。我们还可以添加一些我们所需的其他表项。4 结束语RADIUS协议最初作为拨号网络中协议,由于它易于管理、可扩展性好等特点,而逐渐被广泛使用,成为多种网络的认证、授权和计费的协议。但 RADIUS协议仍然存在诸如:基于 Response Authenticatior对共享密钥的攻击、基于 User-Password属性对用户密码的攻击等安全缺陷。这些都有待于进一步的研究和完善。参考文献1 易正强,王耀军. 基于 Proxy的网络计费系统的设计与实现J. 计算机工程, 2001,27(2):166-168.2 张德庆. In
17、tranet 网络安全管理研究J. 计算机应用, 2001,21(8):43-45.3 Cisco Inc. CISCO IOS 网络安全M. 人民邮电出版社, 2001,1.Radius 认证在局域网安全管理中的应用唐镇 济宁市公安消防支队摘要 RADIUS协议是一个被广泛应用于网络认证、授权和计费的协议。该文在介绍 RADIUS协议原理的基础上,对 RADIUS协议的实现做了分析与设计,提出一个基于 Radius认证交换机的网络安全认证管理模型,实现了内部网络与外部网络的安全认证管理,克服了传统计费系统对内部网络无法管理的缺点,在局域网运行中得到了良好的效果。关键词: 局域网 RADIUS
18、 认证 1 引言远程认证拨号用户服务协议(Remote Authentication Dial In User Service, RADIUS)最初是由Livingston公司提出的一个为拨号用户提供认证和计费的协议。后经多次改进,逐渐成为一项通用的网络认证、计费协议,RADIUS 协议以 Client/Server方式工作,客户端为网络接入服务器(NAS) ,它向RADIUS服务器提交认证、计费等信息,RADIUS 服务器处理信息并将结果返回给 NAS。本文提出一种网络安全认证管理模型。利用 Radius认证技术,在局域网内实现了内部与外部网络资源访问认证管理。2 RADIUS认证2.1 R
19、ADIUS 认证局域网模型实际常用的局域网,可以用局域网交换机来实现端口控制功能。为保证网络的安全性,在局域网的出口和认证端应加上防火墙。RADIUS 服务器和数据库还可以采取主、备结构,以保证网络的健壮性。网络模型如下图所示:图 1 局域网网络模型局域网的认证端由 RADIUS服务器、网络接入服务器(NAS)和数据库组成。其中:NAS:作为 RADIUS服务器的客户端,向 RADIUS服务器转交用户的认证信息。并在用户通过认证之后,向 RADIUS服务器发送计费信息。RADIUS服务器:作为认证系统的中心服务器,它与 NAS、数据库相连,它接受来自 NAS提交的信息,对数据库进行相应的操作,
20、并把处理结果返回给 NAS。数据库:用于保存所有的用户信息、计费信息和其他信息。用户信息由网络管理员添加至数据库中;计费信息来自于 RADIUS服务器;其他信息包括日志信息等。2.2 RADIUS的认证、计费过程如图 1网络模型所示: (1)申请者登录网络时,NAS 会有一个客户定义的 Login提示符要求申请者输入用户信息(用户名和口令) ,申请者输入相关的认证信息后,等待认证结果。(2)NAS 在得到用户信息后,将根据 RADIUS的数据包格式,向 RADIUS服务器发出“接入请求”(Access-Request)包。包中一般包括以下 RADIUS属性值:用户名、用户口令、访问服务器的 I
21、D、访问端口的 ID。(3)当 RADIUS服务器收到“接入请求”包后,首先验证 NAS的共享密码与 RADIUS服务器中预先设定的是否一致,以确认是所属的 RADIUS客户端。在查验了包的正确性之后,RADIUS 服务器会依据包中的用户名在用户数据库中查询是否有此用户记录。如果用户信息不符合,就向 NAS发出“接入拒绝”(Access-Reject)包。NAS 在收到拒绝包后,会立即停止用户连接端口的服务要求,用户被强制退出。(4)如果用户信息全部符合,服务器向 NAS发出“接入质询”包(Access-Challenge) ,对用户的登录请求作进一步的验证。其中包括:用户口令、用户登录访问服
22、务器的 IP、用户登录的物理端口号等。NAS收到“接入质询”包后,将消息显示给用户,要求用户进一步确认登录请求。用户再次确认后,RADIUS服务器将比较两次的请求信息,决定如何响应用户(发送 Access-Accept、Access-Reject 或再一次的 Access-Challenge) 。(5)当所有的验证条件和握手会话均通过后,RADIUS 服务器会将数据库中的用户配置信息放在“接入接受” (Access-Accept)包中返回给 NAS,后者会根据包中的配置信息限定用户的具体网络访问能力。包括服务类型:SLIP、PPP、Login User、Rlogin、Framed、Callba
23、ck 等等。还包括与服务类型相关的配置信息:IP 地址、时间限制等等。(6)在所有的验证、授权完成后,局域网交换机的控制端口被打开。用户可以通过交换机进入网络。同时,NAS 向 RADIUS服务器发送 “计费请求开始”包(Accounting-Request Start) ,通知 RADIUS服务器开始计费。当用户下网时,NAS 向 RADIUS服务器发送“计费请求结束”包(Accounting-Request Stop) ,RADIUS 服务器根据计费包的信息计算用户使用网络的费用。3 局域网模型中 RADIUS认证系统的设计与实现3.1 NAS设计(1)RADIUS 客户端处理程序:负责接
24、收申请者的信息;向 RADIUS服务器提交认证、计费、管理等数据包;向申请者返回相应结果。(2)服务器管理程序:为了方便网络管理员对 RADIUS服务器和数据库的管理,在 NAS主机上,还可以运行服务器管理程序,管理程序的功能应该包括有:管理员模块(添加、删除网络管理员,设置管理员权限等) ;用户信息模块(实现用户的查询、添加、删除等操作) ;计费信息模块(查询用户的计费信息,创建、修改、删除各种不同的计费方式, ) ;日志信息模块等。(3)用户信息的提交:用户需要向 NAS提交用户信息,有多种方法可以实现,最简单的方法是采用Web方式提交。在 NAS上建立一个 Web服务器,这样,用户可以直
25、接使用浏览器来和 NAS交互,Web 服务器接受到用户提交的信息后,把这些信息传给 RADIUS的客户端处理程序。后者把这些信息封装成 RADIUS的接入请求(Access-Request)包格式,通过认证端口(1812)向 RADIUS服务器提出认证请求。(4)计费信息的提交:认证通过之后,NAS 客户端程序通过认证端口(1812)向 RADIUS服务器发送包含有用户名、用户 IP、上网起始时间等信息的“计费请求开始”包(Accounting-Request Start) ,通知 RADIUS服务器开始计费。RADIUS 服务器在数据库中纪录下相应项,并返回“计费响应”包(Accountin
26、g-Response) 。当用户下网时,NAS 向 RADIUS服务器发送包含有结束时间、数据流量等信息的“计费请求结束”包(Accounting-Request Stop) 。后者返回“计费响应”包(Accounting-Response)确认。(5)服务器管理程序的提交:也通过 RADIUS客户端处理程序来向 RADIUS服务器提交。客户端处理程序将管理程序的请求包装成标准的 RADIUS包格式,并通过为服务器管理程序定义一个端口号提交给RADIUS服务器。3.2 RADIUS服务器设计RADIUS服务器处理来自 NAS的各项数据和实现对数据库的操作,并返回相应的结果。RADIUS 客户端
27、和服务器端的协议通信采用 Socket编程来实现。(1)对数据库的操作:RADIUS 服务器通过数据库接口与数据库建立起连接。在 RADIUS服务器中用SQL语句实现所需的数据库操作模块(如:用户、计费、管理员等信息的查询、添加、修改等操作) ,当RADIUS服务器需要对数据库操作时,就调用相应的模块。(2)认证包处理:通过监听认证端口(1812) ,来监测 NAS提交的认证数据包,收到认证包后,查询数据库验证用户,并把结果以 RADIUS数据包格式从 1812端口返回。对于多个用户申请并发的情况,使用多线程方式处理。(3)计费包的处理:当用户的认证通过时,查询该用户计费信息。确定其计费类型、
28、费率等。当监听到 NAS在计费端口(1813)提交计费包后,就向数据库中添加“计费请求开始”包中所提交的计费信息(包括用户名、上网起始时间等) 。在收到用户下网的“计费请求结束”后,根据包中提交的用户结束时间、数据流量等信息,计算用户的上网时长和数据流量,并根据用户计费类型来计算出用户本次上网费用,记录入数据库。(4)服务器管理程序请求的处理:监听管理程序请求的端口(自定义) ,收到后解包并执行相应的处理函数。3.3 数据库的设计用于保存所有的用户信息、计费信息等。数据库中包含的表项至少应包括以下几类:(7) 用户信息:包括用户名、口令、认证方式、访问权限、付费方式等。(8) 授权信息:服务器
29、返回给用户的授权等配置信息,如服务类型,会话时间等。(9) 计费信息:存放与计费有关的各种统计信息。如:上网时间、计费费率、用户的历次上网的数据流量和费用、用户帐户余额等。(10) 管理员信息:网络管理员的 ID号和口令、管理员的权限。(11) NAS信息:RADIUS 服务器所属的各 NAS纪录。包括各 NAS的 ID号、与RADIUS服务器的共享密码等。(12) 日志信息:保存用户上网的历史记录、网络管理员的登录及操作纪录。3.4认证端各部分的实现:操作系统:RADIUS 服务器和 NAS均采用 Linux(Red Hat 9.0,内核 Linux-2.4.20-8)作为操作系统。(1)
30、NAS:用 Apache和 Tomcat构建一个支持 JSP的 Web服务器,这样申请者可以通过 Web页面来提交登录信息。服务器管理程序主要是处理系统管理员的信息,用 QT3.0完成用户界面。RADIUS 客户端程序(C 语言实现)将用户或系统管理员提交的消息封装成 RADIUS包,并通过相应的端口转发给 RADIUS服务器。(2) 数据库:采用 MySQL数据库来实现,MySQL 是一个多用户、多线程 SQL数据库服务器。它由一个服务器守护程序 mysqld和很多不同的客户程序和库组成。Red Hat 9.0中自带有 MySQL服务,将服务启动即可。我们可以将 RADIUS服务器与 SQL
31、数据库相连,建立用户数据库和计费数据库,对用户信息和计费信息进行有效的管理。(3) RADIUS服务器 :采用 freeradius-0.9.0来搭建 RADIUS服务器,实现 RADIUS协议,并使用 RADIUS服务器的 EAP-Identity认证方式(即:RADIUS 服务器对申请者的用户名和口令进行认证) 。freeradius支持访问 SQL数据库,首先需要建立 RADIUS数据库(以 MySQL为例:mysql -uroot -prootpass radius db_mysql.sql) ,建立后的数据库会包含如下一些表项:radcheck:用于指明用户的认证方式;radgrou
32、pcheck:将用户分组进行管理,指明各组的属性,如限定有些用户组默认的认证结果就是 Accept或 Reject;radgroupreply:对各用户组设定回应的属性;usergroup:指明用户与组的关系;radacct:存放与计费有关的各种统计信息。我们还可以添加一些我们所需的其他表项。4 结束语RADIUS协议最初作为拨号网络中协议,由于它易于管理、可扩展性好等特点,而逐渐被广泛使用,成为多种网络的认证、授权和计费的协议。但 RADIUS协议仍然存在诸如:基于 Response Authenticatior对共享密钥的攻击、基于 User-Password属性对用户密码的攻击等安全缺陷。这些都有待于进一步的研究和完善。参考文献1 易正强,王耀军. 基于 Proxy的网络计费系统的设计与实现J. 计算机工程, 2001,27(2):166-168.2 张德庆. Intranet 网络安全管理研究J. 计算机应用, 2001,21(8):43-45.3 Cisco Inc. CISCO IOS 网络安全M. 人民邮电出版社, 2001,1.