AAA、RADIUS、TACACS、Diameter协议介绍
准备软考高级时碰到的一个概念,于是搜集网络资源整理得出此文。
概述
AAA是Authentication、Authorization、Accounting的缩写简称,即认证、授权、记帐。Cisco开发的一个提供网络安全的系统。AAA协议决定哪些用户能够访问服务,以及用户能够访问哪些资源或使用哪些服务。AAA服务器,能够处理用户访问请求的服务器程序,提供验证、授权及帐户服务。
包括3个概念模块:
- 认证:证明访问用户是合法用户(一般而言是数据库用户)
- 授权:检查此合法用户拥有的权限
- 记帐:记录用户使用网络服务过程中的相关操作,即:什么人在什么时间做了什么事。
模式
支持本地认证、不认证、RADIUS认证和HWTACACS认证四种认证模式,并允许组合使用。组合认证模式是有先后顺序的。如,authentication-mode radius local表示先使用RADIUS认证,RADIUS认证没有响应再使用本地认证。当组合认证模式使用不认证时,不认证(none)必须放在最后。
支持本地授权、直接授权、if-authenticated授权和HWTACACS授权四种授权模式,并允许组合使用。组合授权模式有先后顺序。例如,authorization-mode hwtacacs local表示先使用HWTACACS授权,HWTACACS授权没有响应再使用本地授权。当组合授权模式使用直接授权时,直接授权必须在最后,如:authorization-mode hwtacacs local none。RADIUS的认证和授权是绑定在一起的,所以不存在RADIUS授权模式。
支持六种计费模式:本地计费、不计费、RADIUS计费、HWTACACS计费、RADIUS+本地计费、HWTACACS+本地计费。
框架
AAA采用客户端/服务器结构,这种结构简单、扩展性好,且便于集中管理用户信息。
AAA的基本实现流程如下:
- 用户访问网络前,首先与AAA客户端建立连接
- AAA客户端负责把用户验证凭据传递给AAA服务器
- AAA服务器根据用户认证凭据进行认证和授权,并将认证和授权结果返回给AAA客户端
- AAA客户端根据服务器的返回结果判断是否允许用户接入
其中:
- AAA客户端运行在NAS设备(Network Access Server,网络接入服务器)上,NAS设备可以是路由器、交换机等为用户提供入网服务的设备
- AAA服务器是认证服务器、授权服务器和计费服务器的统称,负责集中管理用户信息。
根据AAA使用的通信协议的不同,AAA服务器可以分为RADIUS服务器、TACACS服务器等。
应用
根据用户接入方式的不同,在网络中有以下几种应用:
- 登录用户管理:登录用户指的是直接登录设备进行操作的用户,例如Console口登录、Stelnet登录等。此类用户对安全性的要求较高,通过AAA可以限制哪些用户可以登录到设备,登录到设备后能执行哪些命令或者记录用户执行的操作等
- NAC用户接入控制:NAC用户指的是通过802.1X、MAC、Portal方式接入网络的用户。这些用户可以是有线用户、也可以是无线用户,可能是接入企业园区网络、教育网络、医疗网络或商超网络等。此类用户存在类型复杂、变动频繁、权限级别要求不统一等问题。AAA结合NAC,可以有效保证接入用户的安全性。
实现
RADIUS
Remote Authentication Dial-In User Service,远程身份验证拨号用户服务。朗讯公司提出,能在拨号网络中提供注册、验证功能。
基本所有主流设备厂商都支持,在实际网络中应用最多。
RADIUS协议可分为认证协议和计费协议,分别通过IETF RFC 2865和RFC 2866定义。由于定义RADIUS协议的时间早于AAA框架模型,所以并没有将认证和授权分开,而是将认证和授权在同一个流程中进行处理。因此,使用RADIUS协议实现AAA时,用户可能无法知道被拒绝访问的原因是由于密码错误还是因为没有权限。
RADIUS协议,一般把拨号和认证这两种功能放在两个分离的服务器,是一种基于UDP的一种客户机/服务器协议:
- NAS:网络接入服务器,RADIUS客户机。通常是一个路由器、交换机或无线访问点
- RADIUS服务器:后台认证服务器上。在RADIUS服务器上存放有用户名和它们相应的认证信息的一个大数据库,来提供认证用户名和密码及向用户发送配置服务的详细信息等。通常是在UNIX或Windows服务器上运行的一个监护程序。
特点:
- RADIUS协议使用UDP进行传输,使用1812号端口进行认证及认证通过后对用户授权,使用1813号端口对用户计费
- 灵活的认证机制:支持多种认证方法,如点对点的PAP认证(PPP PAP)、点对点的CHAP认证(PPP CHAP)、UNIX的登录操作(UNIX Login)和其他认证机制
- 支持认证转接(Authentication Forwarding),一个RADIUS服务器可以作为另一个RADIUS服务器的客户端向它要求认证,即认证转接
- 扩展性好:所有的交互都包括可变长度的属性字段。为满足实际需要,用户可以加入新的属性值。新属性的值可以在不中断已存在协议执行的前提下自行定义新的属性
- 安全:认证信息都加密传输,安全性高。RADIUS服务器和接入服务器之间传递的认证信息用一个事先设置的口令进行加密,防止敏感信息泄露
RADIUS认证授权工作过程:
- 用户输入用户名、密码等信息到客户端或连接到NAS
- 客户端或NAS产生一个接入请求(Access-Request)报文到RADIUS服务器,其中包括用户名、口令、客户端(NAS) ID和用户访问端口的ID。口令经过MD5算法进行加密
- RADIUS服务器对用户进行认证
- 若认证成功,RADIUS服务器向客户端或NAS发送允许接入包(Access-Accept),否则发送拒绝加接入包(Access-Reject)
- 若客户端或NAS接收到允许接入包,则为用户建立连接,对用户进行授权和提供服务,并转入6;若接收到拒绝接入包,则拒绝用户的连接请求,结束协商过程
- 客户端或NAS发送计费请求包给RADIUS服务器
- RADIUS服务器接收到计费请求包后开始计费,并向客户端或NAS回送开始计费响应包
- 用户断开连接,客户端或NAS发送停止计费包给RADIUS服务器
- RADIUS服务器接收到停止计费包后停止计费,并向客户端或NAS回送停止计费响应包,完成该用户一次计费,记录计费信息
TACACS、TACACS+、HWTACACS
TACACS,Terminal Access Controller Access-Control System,终端访问控制器控制系统,起源于1980s的AAA协议。在之后的发展中,各厂商在TACACS协议基础上进行扩展,如思科研发的TACACS+,华为研发的HWTACACS。两者均为私有协议,在发展过程中逐步替代TACACS协议,且不再兼容TACACS协议。HWTACACS基于TCP协议。RADIUS的认证和授权绑定在一起,而HWTACACS的认证和授权是独立的。RADIUS只对用户的密码进行加密,HWTACACS可以对整个报文进行加密。
HWTACACS协议可兼容TACACS+协议,HWTACACS协议与TACACS+协议定义的报文结构和报文类型一致,主要区别在于授权和计费报文中携带的属性含义或类型不完全相同。
与RADIUS协议相比,HWTACACS或TACACS+更加适用于登录用户(如STelnet用户)的身份认证场景。这是由于它在数据传输、加密上安全性更高,同时能够提供命令行鉴权、事件记录等优势功能。
Diameter
Diameter是IETF定义的新一代AAA协议,由RADIUS协议演进而来。Diameter协议克服RADIUS的许多缺点,如支持移动IP、多接口和移动代理认证、授权和计费等。随着Diameter协议及其应用的不断成熟和标准化,它对未来移动通信系统和宽带接入系统的发展将起到巨大的推动作用。
Diameter基本协议为移动IP(Mobile IP)、网络接入服务(NAS)等应用提供最基本的服务,如用户会话、计费等,具有能力协商、差错通知等功能。协议元素由众多命令和AVP(属性值对)构成,可以在客户机、代理、服务器之间传递鉴别、授权和计费信息。但不管客户机、代理还是服务器,都可以主动发出会话请求,对方给予应答,所以也叫对等实体之间的协议。命令代码、AVP值和种类都可以按应用需要和规则进行扩展。
Diameter NAS
Diameter的NAS协议即是Network Access Service(网络接入服务)协议。由NAS客户机处理用户MN的接入请求(RegReq),将收到的客户认证信息转送给NAS服务器;服务器对客户进行鉴别,将结果(Success/Fail)发给客户机;客户机通过RegReply将结果发回给MN,并根据结果对MN进行相应处理。
NAS作为网络接入服务器,在其用户端口接收到呼叫或服务请求时便开始与AAA服务器之间进行消息交换,有关呼叫的信息、用户身份和用户鉴别信息被打包成一种AAA消息发给AAA服务器。实际上,移动IP中的FA可以看成是通过空中的MPPP链路接收移动终端MN的服务连接请求的NAS服务器,它作为AAA服务器的客户机,在两者之间交换NAS消息请求和应答。
Diameter EAP
Diameter EAP,Extensible Authentication Protocol,可扩展鉴别协议,提供一个支持各种鉴别方法的标准机制。EAP其实是一种框架,一种帧格式,可以容纳各种鉴别信息。EAP所提供的多回合鉴别是PAP和CHAP所不具备的。
EAP协议描述用户、NAS(AAA客户机)和AAA服务器之间有关EAP鉴别消息的请求和应答的关系,完成一次对鉴别请求的应答,中间可能需要多次消息交换过程。在移动终端MN移动的环境下,MN与FA之间的鉴别扩展采用EAP,即把FA看做是一个NAS,它作为Diameter AAA的客户机,Diameter AAA服务器作为EAP的后端服务器,两者之间载送EAP分组。端到端的EAP鉴别发生在用户和它的H-AAA之间。
Diameter CMS
Diameter CMS,Cryptographic Message Syntax,密码消息语法协议,实现协议数据的Peer-to-Peer(端到端)加密。由于Diameter网络中存在不可信的Relay(中继)和Proxy,而IPSec和TLS又只能实现跳到跳的安全,所以IETF定义Diameter CMS应用协议来保证数据安全。
Diameter MIP
由于未来移动通信网络正逐步向全IP网络演进,这就不可避免碰到用户移动到外部域的问题。Diameter MIP应用协议允许用户漫游到外部域,并在经过鉴权后接受外部域Server和Agent提供的服务。在未来移动通信中,这种情况将十分常见,因此MIP协议对于移动通信系统来说至关重要。当用户移动到外部域的时候,需要进行一系列的消息交换才能安全地接入外部网络,接受其提供的服务。MIP协议的实现环境中MN和HA都可以在家乡域或在外地域,其中比较典型的一种情况是MN在外地域而HA在家乡域。
参考
- 系统架构设计师教程-第4版
- 百度百科
相关文章:

AAA、RADIUS、TACACS、Diameter协议介绍
准备软考高级时碰到的一个概念,于是搜集网络资源整理得出此文。 概述 AAA是Authentication、Authorization、Accounting的缩写简称,即认证、授权、记帐。Cisco开发的一个提供网络安全的系统。AAA协议决定哪些用户能够访问服务,以及用户能够…...
Nacos高频面试题及参考答案(2万字长文)
目录 Nacos是什么?它的主要功能有哪些? Nacos在微服务架构中扮演什么角色?...
CMakeLists.txt语法规则:条件判断中表达式说明四
一. 简介 前面学习了 CMakeLists.txt语法中的 部分常用命令,常量变量,双引号的使用。 前面几篇文章也简单了解了 CMakeLists.txt语法中的条件判断,文章如下: CMakeLists.txt语法规则:条件判断说明一-CSDN博客 CMa…...

Hive概述
Hive简介 Hive是一个基于Hadoop的开源数据仓库工具,用于存储和处理海量结构化数据. 它是Facebook在2008年8月开源的一个数据仓库框架,提供了类似于SQL语法的HQL(HiveSQL)语句作为数据访问接口. Hive可以做复查统计分析之类的工作; 利用hdfs的存储空间,进行结构化数据的存储; 利…...

buuctf-misc-33.[BJDCTF2020]藏藏藏1
33.[BJDCTF2020]藏藏藏1 题目:藏了很多层,一层一层的剥开 常规思路,先使用010打开一下看看 binwalk不行用foremost 发现是pk文件也就是压缩包,并且包含了docx文件 这不binwalk分离一下文件?虽然可以看出有隐藏文件&…...

golang 基础知识细节回顾
之前学习golang的速度过于快,部分内容有点囫囵吞枣的感觉,写gorm过程中有很多违反我常识的地方,我通过复习去修正了我之前认知错误和遗漏的地方。 itoa itoa自增的作用在编辑error code时候作用很大,之前编辑springboot的error c…...
递归陷阱七例
目录 栈溢出 无限递归 大常数参数 递归深度过大 重复计算 函数调用开销 递归与迭代的选择 总结 递归是一种强大的编程技术,它允许函数调用自身。递归在很多情况下可以简化代码,使问题更容易理解和解决。然而,递归也容易导致一些常见的…...

【3D基础】坐标转换——地理坐标投影到平面
汤国安版GIS原理第二章重点 1.常见投影方式 https://download.csdn.net/blog/column/9283203/83387473 Web Mercator投影(Web Mercator Projection): 优点: 在 Web 地图中广泛使用,易于显示并与在线地图服务集成。在…...
颈椎锻炼方式
1. 颈部伸展运动:坐直,慢慢将头向前伸展,直到感到轻微的拉伸,保持数秒钟,然后缓慢放松。重复10次。 2. 颈部旋转运动:坐直,慢慢将头向一侧转动,直到感到轻微的拉伸,保持…...

测试环境搭建:JDK+Tomcat+Mysql+Redis
基础的测试环境搭建: LAMPLinux(CentOS、ubuntu、redhat)ApacheMysqlPHP LTMJLinux(CentOS、ubuntu、redhat)TomcatMysql(Oracle)RedisJava 真实的测试环境搭建:(企业真实的运维) 基于SpringBoot(SpringCloud分布式微…...
(delphi11最新学习资料) Object Pascal 学习笔记---第11章第1节(混合引用中的错误)
11.1.3 混合引用中的错误 在使用对象时,你通常应该只使用对象变量或接口变量来访问它们。混合使用这两种方法会破坏对象 Pascal 所提供的引用计数机制,并可能导致极难跟踪的内存错误。在实践中,如果你决定使用接口,你可能应该…...

代码随想录算法训练营第三天 | 链表理论基础,203.移除链表元素,707.设计链表,206.反转链表
对于链表完全陌生,但是看题目又觉得和数组一样的 链表理论基础 Q:什么是链表? A:链表是由一系列结点组成的。每一个结点由两部分组成:数据和指针。 203.移除链表元素 题目: 给你一个链表的头节点 head 和…...

如何利用仪表构造InfiniBand流量在数据中心测试中的应用
一、什么是Infiniband? 在当今数据爆炸的时代,数据中心作为信息处理的中心枢纽,面临着前所未有的挑战。传统的通信方式已经难以满足日益增长的数据传输需求,而InfiniBand技术的出现,为数据中心带来了全新的通信解决方…...
Kubernetes 文档 / 概念 / Kubernetes 架构 / 节点
Kubernetes 文档 / 概念 / Kubernetes 架构 / 节点 此文档从 Kubernetes 官网摘录 中文地址 英文地址 节点上的组件包括 kubelet、 容器运行时以及 kube-proxy。 管理 向 API 服务器添加节点的方式主要有两种: 节点上的 kubelet 向控制面执行自注册;…...

ICode国际青少年编程竞赛- Python-1级训练场-for循环练习
ICode国际青少年编程竞赛- Python-1级训练场-for循环练习 1、 for i in range(3):Dev.step(4)Dev.turnLeft()2、 for i in range(3):Dev.step(2)Dev.turnRight()Dev.step(2)Dev.turnLeft()3、 for i in range(3):Dev.step(2)Dev.turnRight()Dev.step(2)Dev.turnLeft()4、 for…...

Flutter分模块开发、模块可单独启动、包含Provider
前言 当前案例 Flutter SDK版本:3.13.2 目前Flutter都是在一个项目中,创建不同目录进行模块开发,我进行Android原生开发时,发现原生端,是可以将每个模块独立运行起来的,灵感来自这; 折腾了几…...
Element-UI快速入门:构建优雅的Vue.js应用界面
Element-UI是一套基于Vue.js的组件库,提供了丰富的UI组件和交互效果,帮助开发者快速构建出美观、功能丰富的Web应用界面。本文将介绍如何快速入门Element-UI,并搭建一个简单的示例界面。 步骤一:安装Element-UI 首先,…...
Flutter 中的 @immutable:深入解析与最佳实践
在 Flutter 开发中,immutable 注释扮演着至关重要的角色,用于标记不可变类。不可变类顾名思义,其状态一旦创建便不可更改,这与可变类截然不同。后者允许在创建后对实例进行修改。 immutable 的利好 引入不可变类可以带来诸多优势…...

Pandas数据可视化 - Matplotlib、Seaborn、Pandas Plot、Plotly
可视化工具介绍 让我们一起探讨Matplotlib、Seaborn、Pandas Plot和Plotly这四个数据可视化库的优缺点以及各自的适用场景。这有助于你根据不同的需求选择合适的工具。 1. Matplotlib 优点: 功能强大:几乎可以用于绘制任何静态、动画和交互式图表。高度可定制&a…...

人工智能的发展将如何重塑网络安全
微信搜索关注公众号网络研究观,获取更多信息。 人们很容易认为人工智能 (AI) 真正出现是在 2019 年,当时 OpenAI 推出了 ChatGPT 的前身 GPT-2。 但现实却有些不同。人工智能的基础可以追溯到 1950 年,当时数学家艾伦图灵发表了题为“计算机…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...

iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
redis和redission的区别
Redis 和 Redisson 是两个密切相关但又本质不同的技术,它们扮演着完全不同的角色: Redis: 内存数据库/数据结构存储 本质: 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能: 提供丰…...
ubuntu22.04 安装docker 和docker-compose
首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...
虚幻基础:角色旋转
能帮到你的话,就给个赞吧 😘 文章目录 移动组件使用控制器所需旋转:组件 使用 控制器旋转将旋转朝向运动:组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转:必须移动才能旋转,不移动不旋转控制器…...

Springboot 高校报修与互助平台小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,高校报修与互助平台小程序被用户普遍使用,为…...