网络安全之AAA 原创:wildlee
在一个安全的网络中,对于网络资源或设备非法访问应该被控制。传统的情况下,对网络资源与设备访问,我们需要登录设备,在本地配置身份验证信息,此时需要用户有合法的凭证才可以得到相应的服务,从而保证了网络的安全性。然后当网络规模增大的时候,管理与维护变的复杂化的时候,我们对多个设备或网络服务进行认证与控制,开始变的力不从心。这需要一个能够对网络做出统一认证与控制的服务。
AAA名词定义即认证[Authentication]、授权[Authorization]、审计[Accounting],是三个功能独立的模块的结合体,它提供了一种网络安全服务,但它并非一种协议,很多人把AAA看成是一种协议。
1. 认证
认证是一个解决确定某一个用户或其他实体是否被允许访问特定的系统或资源的问题。
2. 授权
授权是指当用户或实体的身份被确定为合法后,赋予该用户的系统访问或资源使用权限。
3.审计
审计也称为记帐或审核,出于安全考虑,所有用户的行为都要留下记录,以便进行核查,这个功能也是一般设备不能提供的。
AAA知识结构
AAA安全服务提供一是种基于C/S架构的模式,分为客户端与服务端。服务端是可以提供AAA服务的主机,要想要想提供此服务,必须安装相关的服务端程序,这个可以思科的ACS或是微软IAS,当然也可以是其它的。客户端是网络接入设备NAS,可以是VPN服务器、路由器、交换机等。
在我们的网络环境中,基于C/S结构的服务应用有很多,比如HTTP、FTP、SMTP等,它们有个共同点就是在客户端与服务端都运行着一个协议,我们叫它HTTP协议、FTP协议、SMTP协议。同样的道理,AAA安全服务器也不例外,在它的服务器端与客户端也运行着一种协议,但这种协议不叫AAA协议,因为可以提供AAA服务的有多个协议,常见的一种是RADIUS,此协议为IETF标准。还有一种是TACACS+协议,此协议为思科私有协议。用RADIUS协议提供AAA服务的也可以叫它RADIUS服务器,用TACACS+提供AAA服务的也可以叫它TACACS+服务器。提供RADIUS协议的实体程序有微软SERVER版Internet Authentication Service (IAS)程序,而思科的ACS实体程序,同时支持RADIUS协议与TACACS协议,当然还有其它的实体程序,我不一一举例。802.1X接入网络控制,是另一种概念。以上概念大家一定要搞清楚。
RADIUS与TACACS+做为提供AAA服务的两个协议,它们两还是有很多不同点的,两个协议协商过程不同。RADIUS是IETF标准,应用层协议是UDP,认证与授权使用端口1812,而审计端口是1813,加密数据包的密码部分。TACACS+思科私有,应用层协议是TCP,所用端口号是49,通过与服务器建立多个会话,完成3A功能,加密整个数据包。
AAA可以对客户端提出的认证请求、授权请求、审计请求做出响应。如果要AAA服务器对认证请求做出响应,那么AAA服务器必须要有身份验证数据库,根据此信息,做出判断结果。此依据可以账号密码、证书等。如果要对授权做出响应,那么就得为相关用户附加实施的权限信息,从而控制此用户的行为动作。审计是根据客户端配置,跟踪用户行为动作,将这些信息收集交给AAA安全服务器,以做详细记录。
总结:这里我没有详细分析协议报文类型与相关属性;对于身份验证方法有很多种,这个要大家自己了解各种验证方法,比如生物识别技术、智能卡、证书、密码等,这些都可以用来做验证。对于3A服务器验证数据库,不单单局限于3A服务器自身数据库,也可以是其它类型的外部数据库被用来调用。
配置AAA思想
以下只是我个人方法,我本人是不建议毫无思想的,用记忆命令的模式去配置一个AAA,下面我说下我的方法。
1.AAA体系结构基于C/S架构且运行协议,所以我们要让服务端与客户端都支持AAA应用的协议。
客户端
aaa newmodel #启用AAA
服务端
安装服务端程序实体,可以支持AAA相关协议。
2. 提供AAA服务的协议是一个应用层协议,要在客户端与服务器端进行通信,要有一个五元组协议、源IP、目IP、源端口、目端口。
客户端
Interface vlan 1
Ip address 192.168.1.12 255.255.255.0 #在交换机中定义一个AAA客户端地址
ip radius source-interface #如果有多个IP地址可以指定用哪个IP做AAA认证源地址
radius-server host 192.168.1.200 auth-port 1812 acct-port 1813 key wildlee
#指定服务器的IP地址与端口号,并配置KEY用来做身份验证与加密。
服务端
添加一个客户端,并配置上客户端的IP地址与共享密钥KEY.
3.服务端与客户端能够通信以后,客户端就可以对服务端进行请求服务了,同样,服务端也要有相关的配置对客户的请求做出响应。
客户端
aaa authentication login wildlee group radius serve
aaa authorization exec wildlee group radius
aaa accounting exec wildlee start-stop group radius
配置客户端的各种请求。这里有一个规则,那就是我要对3A中哪个服务请求?服务请求内容是什么?实现方法是什么?wildlee这个名字定义了一个方法列表,在没有服务响应的情况下,使用降级办法。
服务端
服务端的配置就是为上面的几个为什么配置答案。如果是认证,就得有相关的用户凭证在服务器中;如果要授权,就得给特定用户附加相关的权限;如果要审计,就要对客户端发送过来的用户行为信息进行记录。其次我们还加添加相关的策略等。
4.最后就是在相关的地方启用认证调用,由于权限与审计是附加在用户身份上的,所以不用做单独的调用。
附:对设备进行认证的方法
(1) 用此方法做认证的时候,当连接到设备的时候,提示直接输入密码,不要求用户名,如果密码正确就可以通过认证,此密码为PASSWORD中指定的密码xxxxxx.可以说是线路认证。
Line console 0
Password xxxxxx
Login
============================
Line vty 0 4
Password xxxxxx
Login
(2)此时登录设备时,要求输入用户名与密码,意为本地认证。我们可以用全局模式下配置用户名与密码,用来通过此种方式认证。
Line console 0
Login local
============================
Line vty 0 4
Login local
(3)定义认证方法a,分别是本地认证、enable、不认证。
aaa new-model
aaa authentication login a local enable none
Line console 0
Login login authentication a
============================
Line vty 0 4
Login login authentication a
#此时要求输入用户名与密码进行认证
(4)如果远程TACACS+安全服务器没有响应,那么enable密码xxxxxx被做为登录凭证。
aaa new-model
aaa authentication login b group tacacs+ enable
enable secret xxxxxx
#定义认证方法b,分别是tacacs+远程认证、enable认证。
Line console 0
Login login authentication b
============================
Line vty 0 4
Login login authentication b
security authentication failure rate
#设置访问设备,密码失败输入次数
security passwords min-length
#设置设备的密码最小长度
services password-encryption
#全局下对配置文件中的密码加密
今天就说到这里吧,此文主要讲了一些概念性问题,没有特别细的说某个技术细节,后面我们将以实例应用来说明。