对于任何网络,用户管理都是最基本的安全管理要求之一,在华为设备管理中通过AAA框架进行认证、授权、计费实现安全验证。
一、AAA概述
AAA(Authentication(认证), Authorization(授权), and Accounting(计费))是一种管理框架,它提供了授权部分用户访问指定资源和记录这些用户操作行为的安全机制。因其具有良好的可扩展性,并且容易实现用户信息的集中管理而被广泛使用。AAA可以通过多种协议来实现,在实际应用中,最常使用RADIUS (Remote Authentication Dial-In User Service)协议。
AAA是Authentication(认证)、Authorization(授权)和Accounting(计费)的简称,是网络安全的一种管理机制,提供了认证、授权、计费三种安全功能。
AAA常见网络架构中包括:
-
用户,接入用户,需要访问资源的接入者 -
NAS(Network Access Server),网络设备,如果配置了本地认证则网络设备作为认证服务器角色 -
AAA服务器(AAA Server),远程认证服务器,常见如RADIUS服务器
因为这边没有搭建RADIUS服务器所以我也没有用过这个远程认证,一般用的本地认证。
二、AAA实现
认证、授权、计费每个部分可以独立进行设置。
AAA支持三种认证方式:
-
不认证:完全信任用户,不对用户身份进行合法性检查。鉴于安全考虑,这种认证方式很少被采用。 -
本地认证:将本地用户信息(包括用户名、密码和各种属性)配置在NAS上,此时NAS就是AAA Server。本地认证的优点是处理速度快、运营成本低;缺点是存储信息量受设备硬件条件限制。这种认证方式常用于对用户登录设备进行管理,如Telnet,FTP用户等。 -
远端认证:将用户信息(包括用户名、密码和各种属性)配置在认证服务器上。支持通过RADIUS协议或HWTACACS协议进行远端认证。NAS作为客户端,与RADIUS服务器或HWTACACS服务器进行通信。
AAA授权功能赋予用户访问的特定网络或设备的权限。AAA支持以下授权方式:
-
不授权:不对用户进行授权处理。 -
本地授权:根据NAS上对应域下的配置进行授权。 -
远端授权:支持由RADIUS服务器授权或HWTACAS服务器授权。 -
HWTACACS授权,使用HWTACACS服务器对所有用户授权。 -
RADIUS授权,只支持对通过RADIUS服务器认证的用户授权。RADIUS协议的认证和授权是绑定在一起的,不能单独使用RADIUS进行授权。
-
当采用远端授权时,用户可以同时从授权服务器和NAS获取授权信息。NAS配置的授权信息优先级比授权服务器下发的授权信息低。
AAA支持以下两种计费方式:
-
不计费:为用户提供免费上网服务,不产生相关活动日志。 -
远端计费:支持通过RADIUS服务器或HWTACACS服务器进行远端计费。
认证和授权都有三种形式:不认证、本地认证、远端认证(RADIUS服务器认证),计费一般用得少。
三、RADIUS简介
RADIUS是一种分布式的、客户端/服务器结构的信息交互协议,可以实现对用户的认证、计费和授权功能。
通常由NAS作为RADIUS客户端,负责传输用户信息到指定的RADIUS服务器,然后根据从服务器返回的信息进行相应处理(如接受/拒绝用户接入)。RADIUS服务器一般运行在中心计算机或工作站上,维护相关的用户认证和网络服务访问信息,负责接收用户连接请求并认证用户,然后给客户端返回所有需要的信息(如接受/拒绝认证请求)。RADIUS使用UDP(User Datagram Protocol)作为传输协议,并规定UDP端口1812、1813分别作为认证、计费端口,具有良好的实时性;同时也支持重传机制和备用服务器机制,从而具有较好的可靠性。
简单来讲就是在服务器区域部署一个认证服务器用于账号与权限管理,在网络设备NAS上配置到认证服务器的地址和端口,当指定用户实现RADIUS时代理认证和请求信息,通过了认证才允许访问资源。
四、AAA的应用场景
常见的有以下应用场景:
因为没有搭建服务器一般可以使用NAS本地认证就是网络设备作为认证服务器将账号密码和授权配置好即可。
在华为的网络设备上的AAA的配置简介: aaa中以域为一个分组,域配置绑定对应的认证、授权、计费模板,模板里面可以设置(不认证、本地认证、远端认证等),然后创建用户关联到指定的域配置模板,用户默认不使用@符号就是关联到系统默认的default域,因此如果需要自定义认证域在创建时必须指定@域名,域名可以自行设置。
系统默认配置如下:
# 默认域default和default_admin,默认认证、授权是本地认证和不认证
aaa
authentication-scheme default
authorization-scheme default
accounting-scheme default
domain default
domain default_admin
local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$
local-user admin service-type http
五、AAA配置
配置示例:
# 进入AAA视图
[Huawei] aaa
# 创建认证方案
[Huawei-aaa] authentication-scheme authentication-scheme-name
# 创建认证方案并进入相应的认证方案视图,配置认证方式,local指定认证方式为本地认证。缺省情况下,认证方式为本地认证。
[Huawei-aaa-authentication-scheme-name] authentication-mode { hwtacacs | local | radius }
# 创建domain并绑定认证方案
[Huawei-aaa] domain domain-name
# 在相应的domain视图下绑定认证方案
[Huawei-aaa-domain-name] authentication-scheme authentication-scheme-name
# 在aaa视图下创建用户,如果用户名中带域名分隔符,如@,则认为@前面的部分是用户名,后面部分是域名如果没有@,则整个字符串为用户名,域为默认域
[Huawei-aaa] local-user user-name password cipher password
# 配置用户接入类型
[Huawei-aaa] local-user user-name service-type { { terminal | telnet | ftp | ssh | snmp | http } | ppp | none }
# 配置用户级别
[Huawei-aaa] local-user user-name privilege level level
因为没有RADIUS只能测试NAS本地认证实现ssh和telnet实验配置。
5.1 SSH实验配置。
AR1服务器端:
# 服务器端配置
# 配置接口地址
interface GigabitEthernet0/0/0
ip address 12.1.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.1.254 255.255.255.0
# 开启SSH服务器功能,华为上叫stelnet
stelnet server enable
# 配置远程VTY的验证方式,因为SSH和telnet通过一个虚拟终端连接到设备,也就是VTY方式因此需要配置VTY验证,配置aaa验证
user-interface vty 0 4
authentication-mode aaa
protocol inbound all
# 最后进入aaa视图配置
authentication-scheme test # 创建一个认证模板,认证方式为local,默认为local
authentication-mode local
qu # 返回aaa视图
authorization-scheme test # 创建一个授权模板,使用本地授权,就是在创建本地用户时候指定授权
authorization-mode local
qu # 返回aaa视图
accounting-scheme test # 创建一个计费模板,不计费
accounting-mode none
qu # 返回aaa视图
domain test # 创建一个域模板,将上面3个模板关联到域模板下
authentication-scheme test
accounting-scheme test
authorization-scheme test
qu # 返回aaa视图
# 开始创建用户,使用用户名@域名格式创建,服务允许telent ,ssh ,terminal
local-user chuck@test password cipher 123456
local-user chuck@test privilege level 13
local-user chuck@test service-type telnet terminal ssh
<AR1> save
AR2通过stelnet登录到服务器。
# 正确配置接口地址
interface GigabitEthernet0/0/0
ip address 12.1.1.2 255.255.255.0
# 配置第一次远程认证,这个我理解就是第一次登录需要输入账号密码那个框,需要开启
ssh client first-time enable
# 在用户视图下进行登录
[AR2]stelnet 12.1.1.1
Please input the username:chuck@test
Trying 12.1.1.1 ...
Press CTRL+K to abort
Connected to 12.1.1.1 ...
Enter password:
<AR1>dis users
User-Intf Delay Type Network Address AuthenStatus AuthorcmdFlag
0 CON 0 00:05:13 pass
Username : Unspecified
+ 129 VTY 0 00:00:00 SSH 12.1.1.2 pass
Username : chuck@test
<AR1>
# 注意第一次登录会提示y/n看清楚,然后用户名需要带域名的格式
# 通过dis users可以看到当前登录用户信息及登录方式
在服务器端进行AAA认证信息的查看:
[AR1]dis aaa offline-record all
-------------------------------------------------------------------
User name : chuck@test
Domain name : test
User MAC : ffff-ffff-ffff
User access type : SSH
User IP address : 2.1.1.12
User ID : 8
User login time : 2024/01/17 16:40:32
User offline time : 2024/01/17 16:42:26
User offline reason: user request to offline
-------------------------------------------------------------------
Are you sure to display some information?(y/n)[y]:y
-------------------------------------------------------------------
User name : chuck@test
Domain name : test
User MAC : ffff-ffff-ffff
User access type : SSH
User IP address : 2.1.1.12
User ID : 7
User login time : 2024/01/17 15:28:41
User offline time : 2024/01/17 15:29:56
User offline reason: user request to offline
-------------------------------------------------------------------
Are you sure to display some information?(y/n)[y]:y
# 查看域模板信息
[AR1]dis domain name test
Domain-name : test
Domain-state : Active
Authentication-scheme-name : test
Accounting-scheme-name : test
Authorization-scheme-name : test
Service-scheme-name : -
RADIUS-server-template : -
HWTACACS-server-template : -
User-group : -
暂时只能实现这个了,如果要配置RADIUS需要远程服务器,然后配置服务器地址和端口信息。
总结:AAA是一套认证授权的模板,分为认证、授权、计费,每个功能可以设置不认证、本地认证、远端认证,3个模板可以灵活实现认证功能,简单实验了一下通过AAA实现远程登录验证,今天就先这样了。
对文章感兴趣的欢迎搜索:不喜欢热闹的孩子
本文由 mdnice 多平台发布