利用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+是思科私有协议,通常用在用户登录设备认证

以下详细介绍今天的实验

用户需求:

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#

查看对命令的审计

时间: 2024-11-01 05:14:05

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

恶意软件正在利用SSL服务器窃取用户个人信息!

安全套接层协议(SSL)及安全传输层协议(TLS)旨在提供一个安全.加密的客户端和服务器之间的连接网络.为进一步进行身份验证和加密,服务器必须提供证书,从而直接有效地证明其身份. 使用 SSL 连接,双方可以确保沟通的有效性和安全性.这对某些服务来说非常有用,例如网络银行.电子邮件.社交网络等需要建立安全通道来交换客户端和服务器间的信息.然而不幸的是,这项技术已成为一把双刃剑.Android 恶意软件正在利用 SSL 来隐藏自身行为并且逃避侦测. 使用 SSL 服务器 SSL服务器已经成为And

使用Owin中间件搭建OAuth2.0认证授权服务器

前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OAuth2.0服务器,对于涉及的Asp.Net Identity(Claims Based Authentication).Owin.OAuth2.0等知识点已有基本了解.若不了解,请先参考以下文章: MVC5 - ASP.NET Identity登录原理 - Claims-based认证和OWIN

Linux 之 利用Google Authenticator实现用户双因素认证

一.介绍:什么是双因素认证 双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统.双因素认证是一种采用时间同步技术的系统,采用了基于时间.事件和密钥三变量而产生的一次性密码来代替传统的静态密码.每个动态密码卡都有一个唯一的密钥,该密钥同时存放在服务器端,每次认证时动态密码卡与服务器分别根据同样的密钥,同样的随机参数(时间.事件)和同样的算法计算了认证的动态密码,从而确保密码的一致性,从而实现了用户的认证. 说白了,就像我们几年前去银行办卡送的口令牌,以及

搭建NIS服务器实现用户集中化认证

搭建NIS服务器实现用户集中化认证 NIS服务器概述 NIS网络信息服务,模式是C/S 模式.NIS是集中控制几个系统管理数据库的网络产品.NIS简化了UNIX和LINUX桌面客户的管理工作,客户端利用它可以使用中心服务器的管理文件.桌面系统的用户无需建立他们自己的/etc/passwd.管理员只需要简单的使用维护NIS服务器的文件即可. Linux系统中用户按地域分两类: 本地用户, 远程用户(NIS,LDAP,AD) ypbind是定义NIS服务器的客户端进程.一旦确定了服务器位置,客户机绑

思科路由器配合域内Radius服务器完成VPN用户身份认证

背景介绍: 公司有一个域环境,路由器Wan地址为:a.b.c.d,Lan地址为:192.168.30.1,其余服务器地址如图所示,其中VPN服务器需要2块网卡,第2块网卡的地址为172.16.0.1使用NAT转换通过192.168.30.5访问外网,给使用VPN登陆的客户端指定IP地址为10.0.0.1-10.0.0.100,为了方便管理,实现账号的单一登陆,搭建了Radius服务器,下面就来介绍如何使用思科路由器配合域内Radius服务器完成VPN用户身份认证. 路由器设置: 登陆路由器,首先

业务逻辑:五、完成认证用户的动态授权功能 六、完成Shiro整合Ehcache缓存权限数据

一. 完成认证用户的动态授权功能 提示:根据当前认证用户查询数据库,获取其对应的权限,为其授权 操作步骤: 在realm的授权方法中通过使用principals对象获取到当前登录用户 创建一个授权信息对象 根据用户查询角色列表,并遍历角色列表 在循环体中将角色关键字添加到授权信息对象的角色属性中 根据用户查询权限列表,并遍历权限列表 在循环体中将权限关键字添加到授权信息对象的权限属性中 在角色与权限service类的根据用户查询角色与权限方法中判断用户是否为系统管理员 如果是系统管理员就查询出所

微信小程序之登录连接django,以及用户的信息授权认证

小结: 1 如何自定义组件 - 组件和页面一样,也是由四个文件组成,所以我们自定义组件的时候,模拟pages文件夹,把所有的所有的组件都放在一个文件夹中,每个组件又由一个文件夹包裹,方便管理,在对应目录右击,选择新建组件 - 如果页面中要使用我们定义好的组件,必须现在对应页面的json文件中进行引用:代码如下 { "usingComponents": { "com" : "/componentes/com/com" //形式 :组件名:组件路径

Asp.Net 基础知识回顾_认证授权

ASP.NET使用HTTP管道模型来处理HTTP请求,当一个HTTP请求到达Web服务器时,这个请求按"HttpModule >>Page/HttpHandle >>HttpModule"这样的顺序先后通过各个HttpModule和Page/HttpHandle对象,在这些对象中将触发应用程序事件.事件的触发顺序如下图所示. 从上图可以看到,在触发页面事件(即正式对页面进行处理)之前,将先触发Application_AuthenticateRequest.App

微信公众号用户信息认证机制

又有一段时间没动笔了,确实工作后忙碌起来了,年末了,给大家拜年了,抽了这个空档把最近做的一个东西分享分享. 微信公众号,相信不少人已经有接触,其开发分为许多种,本次主要说的是,通过微信认证后的公众号(下图,),使用Oauth网页接口来获取用户信息的流程. 一.基础准备 首先,明确需求:有一个应用服务器,希望通过某个链接(菜单)进入此应用,在应用服务器端可以获得访问者的一些信息. 微信是不会直接让你在用户在访问应用服务器时直接取到用户信息的,而需要通过他们的专门的认证服务器来操作.作为开发者,目前