首页 > 代码库 > 利用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的命令。

拓扑图如下:

image

 

 

 

 

 

 

 

 

 

 

 

基本配置如下:

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

clip_image002

Step2:在ACS上添加用户和组

clip_image004

 

clip_image006

Step3:

clip_image008

 

clip_image010

 

clip_image012

 

clip_image014

 

clip_image016

配置完成后,在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大同小意。

clip_image018

 

clip_image020

在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.建立允许所有命令的命令集

clip_image022

2.建立只允许show命令的命令集

clip_image024

 

clip_image026

 

clip_image027

Group2的设置

clip_image029

Group3的建立和设置

clip_image031

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上的审计报告

clip_image033

在新弹出的窗口下查看审计行为

clip_image035

 

clip_image037

命令审计

在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#

查看对命令的审计

clip_image039

本文出自 “杨森的挨踢之路” 博客,请务必保留此出处http://senyang.blog.51cto.com/3427514/1547423

利用ACS服务器实现用户的认证、授权和审计