首页 > 代码库 > 利用ACS服务器实现用户的认证、授权和审计
利用ACS服务器实现用户的认证、授权和审计
需要分析:
某医院在中国北京、上海、广州、青岛等多个地方有分院和诊所,并通过SDH专线进行互联实现信息化连接,来实现办公网、视频会议等信息的传递。该院通过几年信息化,目前全国网络设备(包括交换机、路由器、防火墙、无线控制器等)共有大概200余台。全国共有IT人员十几人。为了管理方便,北京、上海等各城市的网络设备管理各自为阵,由各个地方的IT人员进行管理。而每个地方的所有设备的密码为了方便登录都设备成一致的,例如北京的设备密码都设置为bj001,上海的的设置密码为sh001。考虑到安全问题,密码每三个月需要定期更换一次。目前存在的问题是①每一次更换密码,就需要登录到200多台设备上分别进行更换,费时费力;②每位IT员工知道每台设备的密码,如果有人不慎操作失误,无法记录是谁做的操作。
目前客户的需求是①想要对所有设备实施统一的用户认证,并对用户进行授权②北京的IT人员拥有所有权限,而各个地方的IT人员只能管理各自的网络设备③希望对用户行为进行审计。而客户的这些需求其实正是今天我们要说的AAA。通过AAA服务,可以对设备进行集中认证,并对用户进行授权和审计。
AAA简介
所谓AAA,是指认证(Authentication)、授权(Authorization)和审计(Accounting)。认证是对用户访问网络或设备进行验证,即是否允许你访问,即“你是谁?”。举例来说,一个用户在家使用ADSL上网,需要输入用户名和密码,这就叫做认证;授权是对接入进来的用户进行不同级别的访问限制,给不同的用户分配不同的权限,即“你能做什么”。例如用户A登录一台交换机可以进入特权模式,而用户B则只能停留在用户
模式下;审计是对用户的行为进行记录,即用户“做了什么”。通过审计,可以记录用户什么时候登录的,什么时候下线等。
ACS简介
ACS是思科的一款AAA软件。3.X和4.X的版本是装是一台Windows Server的服务器上,5.X之后,ACS进行了一个大的改版。ACS变为了一个由思科封装的Linux服务器的一个软件。用户购买ACS的形式有2种,一种是直接购买思科出的硬件服务器,该服务器已经预装了ACS5.X;并一种形式是购买许可,然后下载ACS系统(经过Linux封装,我们暂且叫为ACS系统)装在EXSI上的虚机版本。本次实验所使用的是虚拟机版本的ACS5.3。
在ACS和思科设备之间有两种协议可选(只是简单介绍,感兴趣的童鞋可以找找资料)
1.RADIUS
radius协议是公有标准,通常用在非思科设备和对802.1X等用户认证
2.tacacs+
tacacs+是思科私有协议,通常用在用户登录设备认证
以下详细介绍今天的实验
利用ACS服务器实现用户的认证、授权和审计
用户需求:
1. 利用AAA服务器实现对所以网络设备的统一认证,在AAA服务器宕机的情况下能使用本地用户进行登录,在AAA服务器正常的情况下优先使用AAA服务器,且不能使用本地用户;
2. 利用AAA服务器对用户的级别进行授权,例如用户A是级别1的用户,用户B和用户C是级别15的用户;对级别15的命令进行授权,Group1的用户只能使用show、ping、telnet、traceroute命令,不能使用其他命令;Group2的用户能使用所有命令;
3. 对所有用户在网络设备上的登录、拿出、命令操作进行审计,例如用户B在什么时间登录设备,什么时候时间登出,进行了哪些命令的操作,如它使用过show ip interface brief的命令。
拓扑图如下:
基本配置如下:
R1:
R1(config)#int f0/0
R1(config-if)#ip add 12.1.1.1 255.255.255.0
R1(config-if)#no shut
R2:
R2(config)#int f0/0
R2(config-if)#ip add 12.1.1.2 255.255.255.0
R2(config-if)#no shut
R2(config-if)#int f3/0
R2(config-if)#ip add 192.168.0.10 255.255.255.0
R2(config-if)#no shut
1.认证
R2(config)#aaa new-model
R2(config)#aaa authentication login noacs none
R2(config)#line con 0
R2(config-line)# login authentication noacs
R2(config-line)#line aux 0
R2(config-line)# login authentication noacs
R2(config)#tacacs-server host 192.168.0.100 key cisco
R2(config)#aaa authentication login acs group tacacs+ local
R2(config)#line vty 0 4
R2(config-line)#login authentication acs
配置ACS
Step1:在AAA服务器(ACS)上添加R2
Step2:在ACS上添加用户和组
Step3:
配置完成后,在R2上进行测试
R2#test aaa group tacacs+ user1 cisco new-code
Sending password
User successfully authenticated
在R1上telnet R2,可以成功
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
username: user1
password:
R2>en
R2(config)#username local password local
R2(config)#int f3/0
R2(config-if)#shut
*Mar 1 02:02:02.131: %LINK-5-CHANGED: Interface FastEthernet3/0, changed state to administratively down
*Mar 1 02:02:03.131: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to down
R2(config-if)#end
R2#ping
*Mar 1 02:02:05.431: %SYS-5-CONFIG_I: Configured from console by console192.168.0.100
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.0.100, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
在假设服务器不可达的情况下,使用本地账户进行登录成功
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
User Access Verification
Username: local
Password:
R2>show users
Line User Host(s) Idle Location
0 con 0 idle 00:00:19
*226 vty 0 local idle 00:00:00 12.1.1.1
Interface User Mode Idle Peer Address
在ACS好的情况下不能使用本地的用户进行登录
R2(config)#int f0/0
R2(config-if)#int f3/0
R2(config-if)#no shut
R2(config-if)#end
R2#ping 192.168.
*Mar 1 07:58:32.350: %SYS-5-CONFIG_I: Configured from console by console0.100
*Mar 1 07:58:33.346: %LINK-3-UPDOWN: Interface FastEthernet3/0, changed state to up
*Mar 1 07:58:34.346: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet3/0, changed state to up
R2#ping 192.168.0.100
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.0.100, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/21/48 ms
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
username: local
password:
% Authentication failed
2.授权
级别授权
将Group1的用户设置为Level 1,Group2的用户设置为Level15。
此处举例说明把Group1的用户关联至Level1,把Group2的用户关联至Level15大同小意。
在R2上的操作:
R2(config)#aaa authorization exec level-author group tacacs+ none
R2(config-line)#authorization exec level-author
在R1上进行测试:
测试用户user1
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
username: user1
password:
R2>show privilege
Current privilege level is 1
测试用户user2
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
username: user2
password:
R2#show priv
R2#show privilege
Current privilege level is 15
命令授权
对级别15的用户进行命令授权,Group2和Group3的用户级别都是15,但是Group2的用户可以使用所有的命令,而Group3的用户只能使用所有的show 命令、telnet命令、ping命令。
1.建立允许所有命令的命令集
2.建立只允许show命令的命令集
Group2的设置
Group3的建立和设置
R2上的配置:
R2(config)#aaa authorization commands 15 command-author group tacacs+ none
R2(config)#line vty 0 4
R2(config-line)#authorization commands 15 command-author
测试:
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
username: user2
password:
R2#show privi
Current privilege level is 15
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#end
User3进行测试
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
username: user3
password:
R2#show privi
R2#show privilege
Current privilege level is 15
R2#conf t
Command authorization failed.
R2#write
Command authorization failed.
R2#show run int f0/0
Building configuration...
Current configuration : 93 bytes
!
interface FastEthernet0/0
ip address 12.1.1.2 255.255.255.0
duplex auto
speed auto
end
3.审计
登入登出审计
R2(config)#aaa accounting exec vty-accounting start-stop group tacacs+
R2(config)#line vty 0 4
R2(config-line)#accounting exec vty-accounting
测试并查看:
在R1上分别使用user2和user3用户登录到R2上。
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
rname: user2
password:
R2>exit
[Connection to 12.1.1.2 closed by foreign host]
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
rname: user3
password:
R2>exit
[Connection to 12.1.1.2 closed by foreign host]
再次查看ACS上的审计报告
在新弹出的窗口下查看审计行为
命令审计
在R2设置对级别0、1、15的命令审计
R2(config)#aaa accounting commands 0 vty start-stop group tacacs+
R2(config)#aaa accounting commands 1 vty start-stop group tacacs+
R2(config)#aaa accounting commands 15 vty start-stop group tacacs+
R2(config)#line vty 0 4
R2(config-line)#accounting commands 0 vty
R2(config-line)#accounting commands 1 vty
R2(config-line)#accounting commands 15 vty
测试并查看
R1#telnet 12.1.1.2
Trying 12.1.1.2 ... Open
username: user2
password:
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#int f0/0
R2(config-if)#exit
R2(config)#end
R2#show ip int bri
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 12.1.1.2 YES manual up up
FastEthernet0/1 unassigned YES unset administratively down down
FastEthernet1/0 unassigned YES unset administratively down down
FastEthernet2/0 unassigned YES unset administratively down down
FastEthernet3/0 192.168.0.10 YES manual up up
R2#exit
[Connection to 12.1.1.2 closed by foreign host]
R1#
查看对命令的审计
本文出自 “杨森的挨踢之路” 博客,请务必保留此出处http://senyang.blog.51cto.com/3427514/1547423
利用ACS服务器实现用户的认证、授权和审计