Raidus

  • 一、前言
    • RADIUS简介
  • 二、什么是AAA协议
    • AAA的各类功能
  • 三、RADIUS为何采用UDP,而不是TCP
    • 采用UDP的原因如下
  • 四、Radius的架构:
    • RADIUS客户端
    • RADIUS服务器
  • 五、Radius的主要特点
  • 六、RADIUS报文
    • RADIUS报文格式
    • RADISU报文类型:
      • RADIUS认证报文
      • RADIUS计费报文
      • RADIUS授权报文
  • 七、RADIUS工作过程
  • 八、RADIUS代理

一、前言

RADIUS简介

应用层协议Radius是Remote Authentication Dial In User Service的简称,即远程认证拨号用户服务。当用户想要通过某个网络(如电话网)与网络接入服务器NAS(Network Access Server)(此NAS非彼NAS)建立连接从而获得访问其它网络的权力时,NAS可以选择在NAS上进行本地认证计费,或把用户信息传递给Radius服务器,由Radius进行认证计费。Radius协议规定了NAS与Radius服务器之间如何传递用户信息和记账信息,Radius服务器负责接收用户的连接请求,完成验证,并把传递服务给用户所需的配置信息返回给NAS。例如:用户要求得到某些服务(如SLIP, PPP, telnet),必须通过NAS,由NAS依据某种顺序与所连服务器通信从而进行验证。用户通过拨号进入NAS,然后NAS按配置好的验证方式(如PPP PAP, CHAP等)要求输入用户名,密码等信息,用户按提示输入。通过与NAS的连接,NAS得到这些信息。而后,NAS把这些信息传递给Radius服务器,并根据服务器的响应来决定用户是否可以获得他所要求的服务。

二、什么是AAA协议

目前,电信运营商和服务提供商所采用的认证方式主要有本地认证、RADIUS认证和不认证;而计费策略更是丰富多彩,常见的有不计费(包月)、按时长计费、按流量计费、按端口计费等等。目前在所有这些认证计费方式中,以采用RADIUS Server进行集中认证计费应用的最为普及和广泛。

Radius是AAA协议的一个实现,那么什么是AAA协议?

AAA是鉴别,授权和记账(Authentication, Authorization,Accounting)的简称,它是运行于NAS上的客户端程序,提供了一个用来对鉴别,授权和记账这三种安全功能进行配置的一致的框架。一个网络允许外部用户通过公用网对其进行访问,从而用户在地理上可以极为分散。大量分散用户通过Modem(调制解调器,猫)等设备从不同的地方可以对这个网络进行随机访问。用户可以把自己的信息传递给这个网络,也可以从这个网络得到自己想要的信息。由于存在内外的双向数据流动,网络安全就成为很重要的问题了。大量的modem形成了Modem pools。对modem pool的管理就成为网络接入服务器或路由器的任务。管理的内容有:哪些用户可以获得访问权,获得访问权的用户可以允许使用哪些服务,如何对使用网络资源的用户进行记费。AAA很好地完成了这三项任务。AAA的配置实际上是对网络安全的一种管理,这里的网络安全主要指访问控制,包括哪些用户可以访问网络服务器,具有访问权的用户可以得到哪些服务,如何对正在使用网络资源的用户进行记账。下面简单介绍一下鉴别,授权,记账的作用。

  • 鉴别(Authentication):鉴别用户是否可以获得访问权。

  • 授权(Authorization) :授权用户可以使用哪些服务。

  • 记账(Accounting) :记录用户使用网络资源的情况。

AAA的各类功能

  • 认证功能,AAA支持以下认证方式:

    • 不认证:对用户非常信任,不对其检查,一般情况下不采用这种方式。

    • 本地认证:将用户信息(包括本地用户的用户名、密码和各种属性)配置在接入服务器上。本地认证的优点是速度快,降低运营成本;但存储信息量受设备硬件条件限制。

    • 远端认证:支持通过RADIUS协议或HWTACACS协议进行远端认证,由接入服务器作为Client端,与RADIUS服务器或TACACS服务器通信。

  • 授权功能,AAA支持以下授权方式:

    • 直接授权:对用户非常信任,直接授权通过。

    • 本地授权:根据宽带接入服务器上为本地用户账号配置的相关属性进行授权。

    • HWTACACS授权:由TACACS服务器对用户进行授权。

    • if-authenticated授权:如果用户通过了认证,并且使用的认证方法不是none,则对用户授权通过。

    • RADIUS认证成功后授权:RADIUS协议的认证和授权是绑定在一起的,不能单独使用RADIUS进行授权。

  • 计费功能,AAA支持以下计费方式:

    • 不计费

    • 远端计费:支持通过RADIUS服务器或TACACS服务器进行远端计费。

三、RADIUS为何采用UDP,而不是TCP

RADIUS协议采用的是UDP协议,数据包可能会在网络上丢失,如果客户没有收到响应,那么可以重新发送该请求包。多次发送之后如果仍然收不到响应,RADIUS客户可以向备用的RADIUS服务器发送请求包。
RADIUS是一种分布式的、C/S架构的信息交互协议,能包含网络不受未授权访问的干扰,常应用在既要求较高安全性、又允许远程用户访问的各种网络环境中。

协议定义了基于UDP(User Datagram Protocol)的RADIUS报文格式及其传输机制,并规定UDP端口1812作为认证端口、1813计费端口。

如果是思科设备:认证和授权端口为UDP1645,计费端口1646。

RADIUS最初仅是针对拨号用户的AAA协议,后来随着用户接入方式的多样化发展,RADIUS也适应多种用户接入方式,如以太网接入等。它通过认证授权来提供接入服务,通过计费来收集、记录用户对网络资源的使用。

采用UDP的原因如下

  • NAS和RADIUS服务器大多在同一个局域网中,使用UDP更加快捷方便。

  • 简化了服务端的实现。

  • NAS和RADIUS服务器之间传递的一般是几十至上百个字节长度的数据,用户要容忍几秒到十几秒的验证等待时间。当处理大量用户时服务器端采用多线程,UDP简化了服务器端的实现过程。

  • TCP是必须成功建立连接后才能进行数据传输的,这种方式在有大量用户使用的情况下实时性不好。

  • 当向主用服务器发送请求失败后,还要必须向备用的服务器发送请求。于是RADIUS要有重传机制和备用服务器机制,它所采用的定时机制,TCP不能很好的满足。

  • RADIUS有自己的机制,来解决UDP丢包特点。

    如果NAS向某个RADIUS服务器提交请求没有收到返回信息,那么可以要求备份RADIUS服务器重传。由于有多个备份RADIUS服务器,因此NAS进行重传的时候,可以采用轮询的方法。如果备份RADIUS服务器的密钥和以前RADIUS服务器的密钥不同,则需要重新进行认证。

四、Radius的架构:

客户端/服务器模式。

RADIUS客户端

一般位于网络接入服务器NAS(Network Access Server)上,可以遍布整个网络,负责传输用户信息到指定的RADIUS服务器,然后根据从服务器返回的信息进行相应处理(如接受/拒绝用户接入)。

设备作为RADIUS协议的客户端,实现以下功能:

  • 支持标准RADIUS协议及扩充属性,包括RFC(Request For Comments)2865、RFC2866。
  • 支持华为扩展的私有属性。
  • 对RADIUS服务器状态的主动探测功能。
  • 计费结束报文的本地缓存重传功能。
  • RADIUS服务器的自动切换功能。

RADIUS服务器

一般运行在中心计算机或工作站上,维护相关的用户认证和网络服务访问信息,负责接收用户连接请求并认证用户,然后给客户端返回所有需要的信息(如接受/拒绝认证请求)。RADIUS服务器通常要维护三个数据库。

  • Users:用于存储用户信息(如用户名、口令以及使用的协议、IP地址等配置信息)。
  • Clients:用于存储RADIUS客户端的信息(如接入设备的共享密钥、IP地址等)。
  • Dictionary:用于存储RADIUS协议中的属性和属性值含义的信息。

五、Radius的主要特点

  • 客户端/服务器模型

网络访问服务器(NAS)作为RADIUS的客户端运行。该客户负责将用户信息传递给指定RADIUS服务器,然后对返回的响应进行操作。RADIUS服务器负责接收用户连接请求,认证用户,然后返回所有客户端交付所需的配置信息服务给用户。

RADIUS服务器可以作为其他RADIUS服务器的代理客户端或其他种类的认证服务器。

  • 网络安全

客户端和RADIUS服务器之间的事务是通过使用共享密钥进行身份验证。另外,发送任何用户密码在客户端和RADIUS服务器之间加密,消除有人窥探不安全网络确定用户密码的可能性。

  • 灵活的认证机制

RADIUS服务器能支持多种认证用户的方法。包括点对点的PAP认证(PPP PAP)、点对点的CHAP认证(PPP CHAP)、UNIX的登录操作(UNIX login)、和其他认证机制。

  • 可扩展协议

所有交易均由可变长度Attribute长度值3元组。可以添加新属性值从而影响协议的现有实现。

六、RADIUS报文

RADIUS报文格式

基于UDP报文传输消息

各字段的解释如下:

  • Code:长度为1个字节,用来说明RADIUS报文的类型。
Code值 报文类型
1 Access-Request
2 Access-Accept
3 Access-Reject
4 Accounting-Request
5 Accounting-Response
11 Access-Challenge
255 Reserved(保留,在生成一个新的数据包时使用)
  • Identifier:长度为1个字节(0~255),用来匹配请求报文和响应报文,以及检测在一段时间内重发的请求报文(防止重放攻击)。客户端发送请求报文后,服务器返回的响应报文中的Identifier值应与请求报文中的Identifier值相同
  • Length:长度为2个字节,用来指定RADIUS报文的长度。表示RADIUS数据区(包括Code, Identifier, Length, Authenticator, Attributes)的长度,单位是字节,最小为20,最大为4096。超过Length取值的字节将作为填充字符而忽略。如果接收到的报文的实际长度小于Length的取值,则该报文会被丢弃。
  • Authenticator:长度为16个字节,用来验证RADIUS服务器的响应报文,同时还用于用户密码的加密。
  • Attribute:不定长度,为报文的内容主体,用来携带专门的认证、授权和计费信息,提供请求和响应报文的配置细节。Attribute可以包括多个属性,每一个属性都采用(Type、Length、Value)三元组的结构来表示(具体属性值代表的含义不做过多阐述)。

RADISU报文类型:

目前RADIUS定义了十六种报文类型。

RADIUS认证报文
  • Access-Request:认证请求报文,是RADIUS报文交互过程中的第一个报文,用来携带用户的认证信息(例如:用户名、密码等)。认证请求报文由RADIUS客户端发送给RADIUS服务器,RADIUS服务器根据该报文中携带的用户信息判断是否允许接入

  • Access-Accept:认证接受报文,是服务器对客户端发送的Access-Request报文的接受响应报文。如果Access-Request报文中的所有属性都可以接受(即认证通过),则发送该类型报文。客户端收到此报文后,认证用户才能认证通过并被赋予相应的权限。

  • Access-Reject:认证拒绝报文,是服务器对客户端的Access-Request报文的拒绝响应报文。如果Access-Request报文中的任何一个属性不可接受(即认证失败),则RADIUS服务器返回Access-Reject报文,用户认证失败。

RADIUS计费报文
  • Accounting-Request(Start):计费开始请求报文。如果客户端使用RADIUS模式进行计费,客户端会在用户开始访问网络资源时,向服务器发送计费开始请求报文。

  • Accounting-Response(Start):计费开始响应报文。服务器接收并成功记录计费开始请求报文后,需要回应一个计费开始响应报文。

  • Accounting-Request(Interim-update):实时计费请求报文。为避免计费服务器无法收到计费停止请求报文而继续对该用户计费,可以在客户端上配置实时计费功能。客户端定时向服务器发送实时计费报文,减少计费误差。

  • Accounting-Response(Interim-update):实时计费响应报文。服务器接收并成功记录实时计费请求报文后,需要回应一个实时计费响应报文。

  • Accounting-Request(Stop):计费结束请求报文。当用户断开连接时(连接也可以由接入服务器断开),客户端向服务器发送计费结束请求报文,其中包括用户上网所使用的网络资源的统计信息(上网时长、进/出的字节数等),请求服务器停止计费。

  • Accounting-Response(Stop):计费结束响应报文。服务器接收计费停止请求报文后,需要回应一个计费停止响应报文。

RADIUS授权报文

CoA:(Change of Authorization)是指用户认证成功后,管理员可以通过RADIUS协议来修改在线用户的权限。

DM:(Disconnect Message)是指用户离线报文,即由RADIUS服务器端主动发起的强迫用户下线的报文。

  • CoA-Request:动态授权请求报文。当管理员需要更改某个在线用户的权限时(例如,管理员不希望用户访问某个网站),可以通过服务器发送一个动态授权请求报文给客户端,使客户端修改在线用户的权限。

  • CoA-ACK:动态授权请求接受报文。如果客户端成功更改了用户的权限,则客户端回应动态授权请求接受报文给服务器。

  • CoA-NAK:动态授权请求拒绝报文。如果客户端未成功更改用户的权限,则客户端回应动态授权请求拒绝报文给服务器。

  • DM-Request:用户离线请求报文。当管理员需要让某个在线的用户下线时,可以通过服务器发送一个用户离线请求报文给客户端,使客户端终结用户的连接。

  • DM-ACK:用户离线请求接受报文。如果客户端已经切断了用户的连接,则客户端回应用户离线请求接受报文给服务器。

  • DM-NAK:用户离线请求拒绝报文。如果客户端无法切断用户的连接,则客户端回应用户离线请求拒绝报文给服务器。

七、RADIUS工作过程

  1. 用户拨入

  2. 所拨入的设备(比如NAS)将拨入用户的用户的信息(比如用户名、口令、所占用的端口等等)打包向RADIUS服务器发送。如果Radius服务器发送Access-Challenge要求二次验证,则Radius客户端将再次收集用户信息通过Access-Request发送。

  3. 如果该用户是一个合法的用户,那么Radius告诉NAS该用户可以上网,同时传回该用户的配置参数;否则,Radius反馈NAS该用户非法的信息。

  4. 如果该用户合法,NAS就根据从RADIUS服务器传回的配置参数配置用户。如果用户非法,NAS反馈给用户出错信息并断开该用户连接。

  5. 如果用户可以访问网络,RADIUS客户要向RADIUS服务器发送一个记费请求包表明对该用户已经开始计费。

  6. RADIUS服务器收到并成功记录该请求包后要给予响应。

  7. 当用户断开连接时(连接也可以由接入服务器断开)。

  8. RADIUS客户向RADIUS服务器发送一个计费停止请求包,其中包含用户上网所使用网络资源的统计信息(上网时长、进/出的字节/包数等)。

  9. RADIUS服务器收到并成功记录该请求包后要给予响应。

八、RADIUS代理

对RADIUS代理服务器来说,一个RADIUS服务器在收到一个来自RADIUS客户端(例如NAS服务器)的认证请求(或者计费请求)后,向一个远程的RADIUS服务器提交该请求,收到来自远程服务器的回复后,将这个回复传输给客户,这个回复可能带有反映本地管理策略的变化。使用RADIUS代理服务器通常是为了漫游。漫游功能使两个或更多的管理实体允许每一个用户为某项服务而拨入到任一个实体网络中。

一个RADIUS服务器可以同时作为转送服务器和远程服务器运行。在某些域中作为一个转发服务器,在其他域中作为一个远程服务器。一个转发服务器可以作为任何数量远程服务器的转发者。一个远程服务器可以有任意数量的转发服务器向它转发,也能向任意数量域提供认证。一个转发服务器可以向另一个转发服务器转发,从而生成一个代理链,应当注意避免循环引用。

下面的过程解释了一个代理服务器在一个NAS服务器、转发服务器和远程服务器之间的通信。

  1. NAS向一个转发服务器发出接入请求。
  2. 转发服务器把这个请求转发给一个远程服务器。
  3. 远程服务器给转发服务器送回接入允许、接入拒绝或接入盘问。此时,服务器送回的是接入允许。
  4. 转发服务器将接入允许传输给NAS。

转发服务器必须把已经存在于数据包中的任何代理状态属性当作不可见的数据。它的操作禁止依靠被前面服务器添加到代理状态属性中的内容。

如果收到来自客户端的请求中有任何代理状态属性,在给客户端的回复中,转发服务器必须在给客户端的回复中包括这些代理状态属性。当转发服务器转发这个请求时,它可以把代理状态属性包含在其中,也可以在已转发的请求中忽略代理状态属性。如果转发服务器在转发的接入请求中忽略了代理状态属性,它必须在响应返回给用户之前把这些代理状态属性添加到该响应中。

应用层协议——RADIUS相关推荐

  1. 36 张图详解应用层协议:网络世界的最强王者

    上帝视角 应用层 我们前面介绍过 TCP/IP 模型的下三层,分别是网络接入层.网络层和传输层.它们都是为应用层服务的,传输应用层的各种数据,现在我们就来看看最高层的应用层. 应用层 在 TCP/IP ...

  2. 二、应用层协议概述与HTTP

    一.应用层简述 应用层提供网络应用程序和对应的协议,常见的如web,email和DNS等.应用程序的结构有两种:C/S(client/server)结构和P2P结构. 在CS结构中,服务端IP地址固定 ...

  3. QQ使用的应用层协议

    QQ使用的应用层协议是OICQ,OICQ使用的传输层协议是UDP.使用端口:4000用于发送信息,端口:8000用于接收信息.OICQ协议提供可靠的传输服务. 转载于:https://blog.51c ...

  4. 如何设计应用层协议(草稿)

    应用层的协议应当定义什么 应用进程交换的报文类型,如请求报文和相应报文 各种报文类型的语法,如报文中的各个字段及其详细描述 字段的语义,即包含在字段中的信息的含义 进程何时,如何发送报文,以及及时对报 ...

  5. UDP对应的应用层协议之DHCP协议

    文章目录 一.DHCP协议是什么? 二.工作流程 一.DHCP协议是什么? DHCP是动态主机配置协议,是基于UDP的应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互. DHCP提 ...

  6. UDP对应的应用层协议之DNS、DHCP

    文章目录 一.UDP对应的应用层协议? 二.DNS 1.什么是DNS? 2.DNS的工作原理? 3.为什么域名解析用UDP协议? 4.为什么区域传送用TCP协议? 5.DNS解析过程 6. DNS负载 ...

  7. TCP对应的应用层协议之FTP /SMTP / HTTP

    文章目录 一.TCP对应的应用层协议 二.FTP协议 1.主动模式和被动模式 2.查看ftp服务器上的文件 3.下载文件 4.上传文件 5. 其他FTP命令 三.SMTP协议(邮件传送协议) 四.万维 ...

  8. 应用层协议与网络应用

    网络应用的体系结构 1.客户机/服务器(Client-Server, C/S) 服务器: 7*24小时提供服务 永久访问地址/域名 利用大量服务器实现可拓展性 客户机: 与服务器通信,使用服务器提供的 ...

  9. 基于tcp的应用层协议还原

    基于tcp的应用层协议还原技术是网络安全每个领域都需要的一种基础技术. 首先,我们需要认识到tcp协议的两个特征: tcp是一种流协议.发送者以字节流的形式传递给接收者. tcp协议本身没有固有的&q ...

  10. 物联网应用层协议选择和分析--MQTT、CoAP 、HTTP、XMPP、SoAP

    物联网应用层协议选择和分析--MQTT.CoAP .HTTP.XMPP.SoAP MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)最早 ...

最新文章

  1. python复数类型的虚部通过什么表示_python复数,python中复数怎么表示
  2. webpack中设置jquery为全局对象
  3. 程序员如何跟领导提离职_如何优雅地跟老板提加薪?按照这3个步骤来,也不是什么难事...
  4. Linux系统编程29:进程信号之什么是信号及signal函数
  5. qtableview删除选中行_如何批量删除PPT备注+如何修改模板信息
  6. python逗号表达式_python – 如何用位于括号外的逗号分割一个字符串?
  7. mysql中文版下载_mysql数据库下载
  8. OpenGL 概念整理
  9. python 并行_python多进程并行代码实例
  10. 微计算机最常用的输入法,输入无极限 最常用五款拼音输入法横评
  11. Java8(JDK1.8)新特性
  12. 计算机数据计量单位换算
  13. 【优先队列】Toda 2
  14. java支持scss_Java的SASS实现?
  15. [小知识] 获取浏览器UA标识
  16. Transformer课程 业务对话机器人Rasa 3.x 运行命令学习
  17. 微信公众号开发测试帐号
  18. 【NodeJs-5天学习】第三天实战篇④ ——QQ机器人,实现自动回复、重要提醒
  19. 非常优秀在线EXCEL编辑器-handsontable
  20. 免费下载Windows 7(申请序列号)

热门文章

  1. 黑客是如何发现女朋友出轨的
  2. MAC OS系统如何使用动态远程桌面
  3. Tomcat Get请求中文乱码
  4. Stata数据处理:清洗CFPS数据库
  5. 数学建模——模拟退火优化投影寻踪
  6. 安卓HTML5屏蔽弹窗代码,手机弹窗太烦人,5招教你屏蔽各种弹窗通知!
  7. 2018 ACM-ICPC 西安邀请赛记录
  8. 从学生宿舍到全球舞台: 米哈游的成长故事
  9. 2019最新黑马视频教程分享给大家十次方乐优商城项目下载
  10. 使用Python+TensorFlow2构建基于卷积神经网络(CNN)的ECG心电信号识别分类(二)