一、AAA(Authentication、Authorization、Accounting) 验证、授权和记费
验证 Authentication :验证用户身份
授权 Authorization :授权用户可以使用哪些服务
记费 Accounting :记录用户使用网络资源的情况,对用户进行计费
实现AAA功能可以在本地进行,也可以由AAA服务器在远程进行。

计费功能由于占用系统资源大通常都使用AAA服务器实现。对于用户数量大的情况,验证和授权也应该使用AAA服务器。
AAA服务器与网络设备的通信有标准的协议,目前比较流行的是RADIUS协议。

二、提供AAA支持的服务
PPP: PPP的PAP、CHAP验证的用户。
EXEC: 指通过telnet登陆到路由器,以及通过各种方式(如console口,aux口等)进入到路由器进行配置的操作。
FTP: 通过ftp登陆到路由器的用户。

三、验证与授权
1、验证
用户名、口令验证: 包括PPP的PAP验证、PPP的CHAP验证、EXEC用户验证、FTP用户验证。
拨号的PPP用户可以进行主叫号码验证。

2、授权
服务型授权: 对一个用户授权提供的服务。可以是PPP、EXEC、FTP中的一种或几种。
回呼号码: 对PPP回呼用户可以设定回呼号码。
隧道属性: 配置L2TP的隧道属性。

验证、授权可以在本地进行,也可以在RADISU服务器进行。但对一个用户的验证和授权使用相同的方法,即或者验证、授权均在本地进行,或者均使用RADIUS服务器。

四、计费及AAA使用特别提醒
+记录用户使用资源情况
+只能使用AAA服务器进行计费
+对于进行了验证的用户缺省都要进行计费
+如果不希望计费一定要配置如下命令:
aaa accounting-scheme optional

首次使用AAA,经常发生配置了用户而验证不通过的情况。这实际上是由于没有学会灵活使用aaa accounting-scheme optional的原因。其实这种情况不是验证不通过,而是计费失败,切断了用户。
因为开始使用的时候启用AAA,这时缺省使用本地验证。而本地验证也是需要计费的,由于没有配置RADIUS服务器,造成计费失败,而因为没有配置aaa accounting-scheme optional,在计费失败时的处理就是断开用户,因此用户不能成功上网。
aaa accounting-scheme optional的作用是在计费失败时允许用户继续使用网络。因此在只验证不计费的情况下,一定要注意配置aaa accounting-scheme optional命令。

五、AAA基本配置命令
aaa-enable: 启用AAA。
aaa accounting-scheme optional: 计费处理选项。
aaa authentication-scheme login { default | methods-list } { method1 [ method2 … ] }
aaa authentication-scheme ppp { default | methods-list } { method1 } [ method2 … ]
配置login的验证方法表和ppp的验证方法表,方法表的名字可以是default也可以自己取。缺省方法表的缺省方法为本地验证。验证方法有三种:radius、local、none。配置多种方法时,前面的方法失败则使用后面的方法,这里说的失败不是验证失败,而是验证不能成功进行,比如与RADIUS服务器通信失败,因此只有RADIUS方法才可能有失败的情况。所以只有5种有意义的方法组合:
后面的方法有5种有效组合: radius、local、none、radius local、radius none。
方法表的概念:
login只能配置一个方法表,配置了方法表即自动应用到所有需要AAA的FTP用户、EXEC用户。
PPP可以配置多个方法表,特定的接口使用哪个方法表还需要将这个方法表应用到接口上。即在接口上配置ppp authentication-mode { chap | pap } [ callin ] [ scheme { default | name-list } ],缺省使用default方法表。

六、本地用户数据库

使用本地验证、授权需要在路由器上维护用户数据库。由于路由器上资源有限,此数据库不宜过大。最多只支持配置50个用户。大量用户应该使用RADIUS服务器。

七、调试和监控信息
+显示在线用户
display aaa user
+原语调试信息,观察AAA请求与结果
debugging radius primitive
+事件调试信息,观察AAA过程
debugging radius event

原语为各服务(PPP、EXEC、FTP)与AAA功能的接口,常见原语有7种。
请求原语三种:
join(pap):用户名、口令验证请求。
join(chap):PPP的CHAP验证请求。
leave:用户下网请求。
返回结果的原语三种:
accept:验证通过。
reject:验证不通过,拒绝用户。
bye:用户下网的确认。
另外还有一种:
cut:在计费失败时,如果没有配置 aaa accounting-scheme optional 则要求相应服务切断用户。
用事件调试信息可以简单观察AAA过程。由于事件调试信息很短,在用户验证活动量大时可以只打开事件调试信息,这样不会由于调试信息过多而无法观察。

RADIUS

一、
+RADIUS(Remote Authentication Dial-in User Service)是当前流行的安全服务器协议
+实现AAA(Authorization、Authentication、Accounting)

RADIUS采用客户机/服务器(Client/Server)结构。验证、授权时客户端的任务是将用户(User)的信息发送到指定的服务器,然后根据服务器的不同响应进行处理。RADIUS服务器的任务是接收客户端发来的用户连接请求,验证用户,并返回客户端提供服务所需要的配置信息。RADIUS服务器的数据库中集中存放了相关的安全信息,避免安全信息凌乱散布带来的不安全性,同时更可靠且易于管理。实现计费时,客户端将用户的上网时长、进出字节数、进出包数等原始数据送到RADIUS服务器上,以供RADIUS服务器计费时使用。
在路由器上运行RADIUS客户端程序。

二、RADIUS实现AAA的流程

首先由各种服务(PPP、EXEC、FTP)得到用户信息,然后将这些信息交给RADIUS服务器进行验证。如果通过验证,RADIUS服务器将验证信息连同RADIUS用户数据库中包含的用户授权信息一起送给路由器。路由器根据这些信息向用户提供相应服务。
通过验证的同时,通知RADIUS服务器会话开始。 于会话终止时再次通知RADIUS服务器。 这样由RADIUS服务器保存的记帐记录可以用于计费。

三、RADIUS结构及基本原理
RADIUS协议采用客户机/服务器(Client/Server)结构,路由器作为客户端与RADIUS服务器通信。
UDP(User Datagram Protocol)即用户数据报协议,它是一种面向无连接的协议,传输层不保证报文的可靠性和顺序性,这样报文可能丢失或者是乱序。RADIUS协议使用了两个UDP端口分别用于验证(以及验证通过后对用户的授权)和计费。在RADIUS的协议文本RFC 2138和RFC 2139中,使用1812号端口作为验证端口,1813号端口为计费端口。也可以使用其他端口。
RADIUS协议采用了“请求/响应”的操作模式,请求由客户端发起,当RADIUS服务器收到一个合法的请求后就要给予响应。由于UDP报文可能会丢失,网络也可能临时出现故障,因此路由器提供重传机制,当在一定时间内没有收到RADIUS服务器的响应时,会重传刚才的请求。如果多次重传后仍然收不到响应,那么路由器会向备用的RADIUS服务器发送请求。
作为安全协议,RADIUS自身的安全性也有一定考虑。 客户端与服务器端有共享密钥。通讯时使用MD5算法通过共享密钥对包进行数字签名,验证签名的正确性可以防止网络上的其他主机冒充路由器或者RADIUS服务器。用户口令也需要进行加密后再在网上传送,使口令不会泄漏。
每个RADIUS包有0到多个属性,用户的各种信息均写在属性中,一些属性协议还规定了各属性值的含义。性能的扩展只需要增加包中所带的属性即可。使用中还可以定义私有的属性类型和属性值。这需要修改RADIUS服务器的属性字典。

四、RADIUS验证与授权
+验证、授权过程如下:
路由器将得到的用户信息打包向RADIUS服务器发送
RADIUS服务器对用户进行验证:
合法用户–返回访问接受包(用户授权信息)
非法用户–返回范文拒绝包
路由器接收服务器的响应包:
访问接受包–允许上网,使用其授权信息对用户进行处理
访问拒绝包–拒绝用户上网请求

1、首先发送验证请求包。在用户名、口令验证时验证请求包包含用户名和加密后的口令;CHAP验证中包含用户名,CHAP验证过程中的各项(Challenge、CHAP Identifier、Response);主叫号码验证还需要有主叫号码。
2、RADIUS服务器收到验证请求包后,首先检查包的合法性,然后根据包中用户信息验证用户是否合法。如果用户非法,则向路由器发送访问拒绝包;如果用户合法,那么RADIUS服务器会将用户的授权信息(如用户类型、回呼号码等等)打包发送到路由器,该包称为访问接受包。
3、路由器收到访问接受/拒绝包时,首先要判断包中的签名是否正确,如果不正确将认为收到了一个非法的包。如果签名正确,且收到的是访问接受包那么路由器会判断授权服务类型是否与此用户相符,如果不符则拒绝该用户的上网请求,如果符合则接受用户的上网请求,并使用其他用户授权信息对用户进行处理(如回呼、L2TP隧道属性的设置)。 如果签名正确且收到的是访问拒绝包,则拒绝该用户的上网请求。

五、RADIUS计费

路由器负责收集可能同用户上网费用有关的信息,并将这些信息发送到RADIUS服务器。RADIUS服务器通常是网上的一台工作站,使用这些信息进行计费。
每次计费交互过程包括路由器发到RADIUS服务器的计费请求包,和RADIUS服务器返回的应答包。对于需要计费的用户,在一个会话过程中至少需要两次这样的交互过程,分别在验证通过后和用户下网时。如果配置了实时计费,还会每隔一段时间进行一次实时计费。
计费信息包括会话时间、输入输出包数、输入输出字节数。
当得不到正确计费应答包时认为计费失败。此时如果配置了aaa accounting-scheme optional命令则继续允许用户访问网络,否则将切断用户。

六、RADIUS用户管理
+RADIUS协议为标准协议,遵循RADIUS协议的所有服务器可以互通
+用户管理放置在RADIUS服务器端进行,有相应的管理软件
+用户可以灵活选用RUDIUS服务器及用户管理软件

RADIUS协议只规定了RADIUS服务器同RADIUS客户端(路由器)的信息交互的格式。由于RADIUS协议是标准的,所以路由器能与不同的RADIUS服务器互通。而在RADIUS服务器上,使用者可以任意根据自己的需要对得到的信息进行处理,满足不同的需求。

七、RADIUS基本配置
+配置RADIUS服务器
radius server { hostname | ip-address } [authentication-port port-number ]
[accouting-port port-number ] 配置服务器地址和端口号,最多可以配置3个RADIUS服务器。
radius shared-key string 配置共享密钥。
+配置重传参数
radius retry times 配置最大重传次数,如果达到这个次数仍然未得到应答包则认为此RADIUS服务器已不可用。
radius timer response-timeout seconds 配置重传时间间隔,单位为秒。
+配置实时计费
radius timer realtime-accounting minutes 配置实时计费时间间隔,单位为分钟。此时间不宜过短,否则会大量占用系统资源。

八、RADIUS包调试信息
+配置RADIUS服务器密钥、重传次数、超时定时器
redius shared-key this-is-my-secret
redius retry 2
radius timer response-timerout 5
+将缺省方发表应用到封装了PPP的接口
ppp authentication-mode pap scheme default

版权声明:本文为OceanF原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/OceanF/p/9210600.html