目录
AAA概述
功能介绍
AAA:分别为Authentication、Authorization、Accounting
- 认证(Authentication):验证用户的身份与可使用的网络服务;
- 授权(Authorization):依据认证结果开放网络服务给用户;
- 计帐(Accounting):记录用户对各种网络服务的用量,并提供给计费系统。
AAA的优势
灵活性、可控性、可扩展性、可靠性、标准化协议
AAA认证基本模型
AAA基本模型包括用户,NAS,认证服务器三个部分
AAA认证流程:
1、用户向NAS发起认证连接请求
2、NAS设备将用户的认证请求转发给认证服务器
3、认证服务器返回认证结果给NAS
4、NAS设备根据认证的返回结果对用户进行相应的认证,授权和计费操作
注:NAS(Network Authentication Server)不是(Network Attached Storage)网络附属存储
协议概述
AAA可以通过多种协议来实现,在实际应用中,最常使用RADIUS协议。
RADIUS(Remote Authentication Dial In User Service) 用户远程拨入认证服务,它主要针对的远程登录类型有:SLIP、PPP、telnet和rlogin等。RADIUS协议应用范围很广,包括普通电话、上网业务计费,对Virtual Private Network的支持可以使不同的拨入服务器的用户具有不同权限。RADIUS是一种分布式的、客户端/服务器结构的信息交互协议,能保护网络不受未授权访问的干扰,常应用在既要求较高安全性、又允许远程用户访问的各种网络环境中。该协议定义了基于UDP(User Datagram Protocol)的RADIUS报文格式及其传输机制,并规定UDP端口1812、1813分别作为默认的认证、计费端口。
RADIUS最初仅是针对拨号用户的AAA协议,后来随着用户接入方式的多样化发展,RADIUS也适应多种用户接入方式,如以太网接入等。它通过认证授权来提供接入服务,通过计费来收集、记录用户对网络资源的使用。
RADIUS协议的主要特征如下:
- 客户端/服务器模式
- 安全的消息交互机制
RADIUS客户端和RADIUS服务器之间认证消息的交互是通过共享密钥的参与来完成的,并且共享密钥不能通过网络来传输,增强了信息交互的安全性。另外,为防止用户密码在不安全的网络上传递时被窃取,RADIUS协议利用共享密钥对RADIUS报文中的密码进行了加密
- 良好的扩展性
RADIUS报文是由包头和一定数目的属性(Attribute)构成,新属性的加入不会破坏协议的原有实现。
RADIUS客户端:一般位于网络接入服务器NAS(Network Access Server)上,可以遍布整个网络,负责传输用户信息到指定的RADIUS服务器,然后根据从服务器返回的信息进行相应处理(如接受/拒绝用户接入)
RADIUS服务器:一般运行在中心计算机或工作站上,维护相关的用户认证和网络服务访问信息,负责接收用户连接请求并认证用户,然后给客户端返回所有需要的信息(如接受/拒绝认证请求)。RADIUS服务器通常要维护三个数据库。
- Users:用于存储用户信息(如用户名、口令以及使用的协议、IP地址等配置信息)。
- Clients:用于存储RADIUS客户端的信息(如接入设备的共享密钥、IP地址等)。
- Dictionary:用于存储RADIUS协议中的属性和属性值含义的信息。
报文格式
- Code:长度为1个字节,用来说明RADIUS报文的类型。
- Identifier:长度为1个字节,用来匹配请求报文和响应报文,以及检测在一段时间内重发的请求报文。客户端发送请求报文后,服务器返回的响应报文中的Identifier值应与请求报文中的Identifier值相同。
- Length:长度为2个字节,用来指定RADIUS报文的长度。超过Length取值的字节将作为填充字符而忽略。如果接收到的报文的实际长度小于Length的取值,则该报文会被丢弃。
- Authenticator:长度为16个字节,用来验证RADIUS服务器的响应报文,同时还用于用户密码的加密。
- Attribute:不定长度,为报文的内容主体,用来携带专门的认证、授权和计费信息,提供请求和响应报文的配置细节。Attribute可以包括多个属性,每一个属性都采用(Type、Length、Value)三元组的结构来表示。
报文类型
认证报文
报文名称 | 说明 |
Access-Request | 认证请求报文,是RADIUS报文交互过程中的第一个报文,用来携带用户的认证信息(例如:用户名、密码等)。认证请求报文由RADIUS客户端发送给RADIUS服务器,RADIUS服务器根据该报文中携带的用户信息判断是否允许接入。 |
Access-Accept | 认证接受报文,是RADIUS服务器对RADIUS客户端发送的Access-Request报文的接受响应报文。如果Access-Request报文中的所有属性都可以接受(即认证通过),则发送该类型报文。RADIUS客户端收到此报文后,用户才能认证通过并被赋予相应的权限。 |
Access-Reject | 认证拒绝报文,是RADIUS服务器对RADIUS客户端的Access-Request报文的拒绝响应报文。如果Access-Request报文中的任何一个属性不可接受(即认证失败),则RADIUS服务器返回Access-Reject报文,用户认证失败。 |
Access-Challenge | 认证挑战报文。EAP中继认证时,RADIUS服务器接收到Access-Request报文中携带的用户名信息后,会随机生成一个MD5挑战字,同时将此挑战字通过Access-Challenge报文发送给用户。用户使用该挑战字对用户密码进行加密处理后,将新的用户密码信息通过Access-Request报文发送给RADIUS服务器。RADIUS服务器将收到的已加密的密码信息和本地经过加密运算后的密码信息进行对比,如果相同,则该用户为合法用户。 |
计费报文
报文名称 | 说明 |
Accounting-Request(Start) | 计费开始请求报文。如果客户端使用RADIUS模式进行计费,客户端会在用户开始访问网络资源时,向服务器发送计费开始请求报文。 |
Accounting-Response(Start) | 计费开始响应报文。服务器接收并成功记录计费开始请求报文后,需要回应一个计费开始响应报文。 |
Accounting-Request(Interim-update) | 实时计费请求报文。为避免计费服务器无法收到计费停止请求报文而继续对该用户计费,可以在客户端上配置实时计费功能。客户端定时向服务器发送实时计费报文,减少计费误差。 |
Accounting-Response (Interim-update) | 实时计费响应报文。服务器接收并成功记录实时计费请求报文后,需要回应一个实时计费响应报文。 |
Accounting-Request(Stop) | 计费结束请求报文。当用户断开连接时(连接也可以由接入服务器断开),客户端向服务器发送计费结束请求报文,其中包括用户上网所使用的网络资源的统计信息(上网时长、进/出的字节数等),请求服务器停止计费。 |
Accounting-Response(Stop) | 计费结束响应报文。服务器接收计费停止请求报文后,需要回应一个计费停止响应报文。 |
授权报文
报文名称 | 说明 |
CoA-Request | 动态授权请求报文。当管理员需要更改某个在线用户的权限时(例如,管理员不希望用户访问某个网站),可以通过服务器发送一个动态授权请求报文给客户端,使客户端修改在线用户的权限。 |
CoA-ACK | 动态授权请求接受报文。如果客户端成功更改了用户的权限,则客户端回应动态授权请求接受报文给服务器。 |
CoA-NAK | 动态授权请求拒绝报文。如果客户端未成功更改用户的权限,则客户端回应动态授权请求拒绝报文给服务器。 |
DM-Request | 用户离线请求报文。当管理员需要让某个在线的用户下线时,可以通过服务器发送一个用户离线请求报文给客户端,使客户端终结用户的连接。 |
DM-ACK | 用户离线请求接受报文。如果客户端已经切断了用户的连接,则客户端回应用户离线请求接受报文给服务器。 |
DM-NAK | 用户离线请求拒绝报文。如果客户端无法切断用户的连接,则客户端回应用户离线请求拒绝报文给服务器。 |
注:
- CoA:(Change of Authorization)是指用户认证成功后,管理员可以通过RADIUS协议来修改在线用户的权限。
- DM:(Disconnect Message)是指用户离线报文,即由RADIUS服务器端主动发起的强迫用户下线的报文。
应用场景
通过AAA(Radius服务器)为上网用户提供认证、授权和计费:
某企业网络通过LANSwitch与AC/NGAF作为目的网络接入服务器。用户需要通过服务器的远端认证才能通过建立连接,该网络中的用户需要访问Internet资源。为了保证网络的安全性,企业管理员希望控制用户对于Internet的访问。
通过在AC/NGAF上配置AAA,实现AC/NGAF与AAA服务器的对接,可以由AAA服务器对用户进行统一管理。用户在客户端上输入用户名和密码后,AC/NGAF可以接收到用户的用户名和密码等认证信息并将用户信息发送给AAA服务器,由AAA服务器对其进行认证。如果认证通过,则用户可以开始访问Internet。在用户访问过程中,AAA服务器还可以记录用户使用网络资源的情况。
为了提高可靠性,可以部署两台AAA服务器,并在AC/NGAF上进行相应配置实现AAA服务器的主备备份,主服务器发生故障时,备服务器可以接替主服务器工作,保证用户业务不会中断。
另:1,比如在使用AC做流控和认证的时候,我们的AC在这个网络里面就是处于中间的这个位置,通过AC和radius服务器进行认证,当用户要上网的时候我们通过给radius服务器发起认证,认证成功之后我们就可以正常访问到互联网,并且AC对此行为进行记录,审计,符合网络安全法的基本要求。
2,结合这个需求背景,可以还可以涉及到我们的SSL Virtual Private Network这个角色,结合动态令牌认证的时候,我们的SSL Virtual Private Network设备可以结合AAA认证做动态令牌认证,用户名密码可以在域控的服务器做认证,radius服务器作为动态令牌的认证,双因素的认证方法,所以在这里AAA仅仅是一种认证角色,具体的场景具体的内容。
通过AAA对管理用户进行认证和授权:
管理用户(Administrator)与AC/AD/NGAF建立连接,对AC/AD/NGAF进行管理、配置和维护。在AC/AD/NGAF上配置AAA后,当管理用户登录Switch时,AC/AD/NGAF将管理用户的用户名和密码等信息发送给AAA服务器,由AAA服务器来进行统一认证,同时记录这些用户的操作行为。