更新时间:2024-01-10
1 AAA配置
1.1 AAA概述
访问控制是用来控制接入交换机或网络访问服务器(NAS)的用户,并限制他们可使用的服务种类。提供认证、授权和计费(Authentication,Authorization,Accounting)功能,以提高网络安全性能。
1.1.1 AAA安全服务
AAA是使用相同方式配置三种独立的安全功能的一种体系结构。它提供了完成下列服务的模块化方法:
• 认证(Authentication)——提供一种识别用户的方法,包括用户名和口令的询问,以及根据所选择的安全协议进行加密。
认证是接受用户访问请求和提供网络服务之前识别他们身份的方法。通过定义一张命名的认证方法列表来对认证进行配置,然后应用该列表于各种接口。方法列表定义了所执行的认证的类型和它们执行的次序;任何定义的认证方法执行之前都必须应用在具体的接口上。唯一的例外是缺省方法列表(其名称为default)。如果没有定义其它方法列表,缺省方法列表自动应用于所有接口。定义任何方法列表将覆盖缺省方法列表。有关所有认证的配置方法的详细资料,请参见“认证配置”。
• 授权(Authorization)——提供一种远程访问控制的方法,用于限制用户的服务权限。
AAA授权通过相对于该用户的一组属性来发挥作用,这些属性描述了用户被授予哪些权限。将这些属性与包括在数据库中某个特定用户的信息相比较,结果返回给AAA,以确定该用户的实际权限。这个数据库可以位于所访问的本地服务器或交换机,或者位于远程RADIUS或TACACS+安全服务器。像RADIUS和TACACS+这样的远程安全服务器,通过与用户相联系的属性值(AV)对(Attribute-Value Pairs)来完成对用户的授权,属性值(AV)对定义了允许授予的权限。所有的授权方法必须通过AAA定义。与认证一样,首先要定义一个授权方法列表,然后在各种接口中应用该列表。有关使用AAA进行授权配置的详细情况,请参见“授权配置”。
• 计费(Accounting)——提供一种收集用户服务信息,并发送给安全服务器的方法,这些信息可用于开列账单、审计和形成报表,如用户标识、开始时间和停止时间、执行的命令、数据包的数量以及字节数。
计费功能不仅可以跟踪用户访问的服务,同时还可以跟踪他们消耗的网络资源数量。当激活AAA计费功能时,网络访问服务器以记录的形式向TACACS+或RADIUS安全服务器报告用户的活动。每条记录包括计费属性值(AV)对,存储在安全服务器上。这些数据可用于网络管理、客户账单或审计分析。与认证和授权一样,要先定义一个计费方法列表,然后在不同的接口中使用这张表。有关使用AAA进行计费配置的详细材料,请参见“计费配置”。
1.1.2 使用AAA的优点
AAA提供了如下优点:
• 灵活性和易于控制
• 方便升级
• 标准化的认证方法,如RADIUS、TACACS+
• 多重备用系统
1.1.3 AAA基本原理
AAA用来动态配置基于每条线路(每个用户)或者每项服务(例如,IP、IPX或VPDN)的认证、授权及计费类型。通过创建方法列表定义认证和授权的类型,然后把这些方法列表应用到具体服务或接口上。
1.1.4 AAA方法列表
要对AAA进行配置,首先定义一个命名的方法列表,然后将这张列表应用到具体的服务或者接口上。该方法列表定义了所要执行的AAA类型,以及他们将被执行的次序;所定义的任何方法列表在被执行之前,必须应用于某一个具体的接口或者服务。唯一例外的是缺省方法列表(default)。缺省方法列表自动的应用于所有的接口或者服务。除非该接口明确引用了其他方法列表,这时此方法列表将替代缺省方法列表。
方法列表是用户在请求AAA服务时需要顺序查询的AAA方法的表格。在方法列表中可以指派一个或多个安全协议。因此确保了万一最初的方法失败后有一个备用的认证系统。本公司交换机软件使用方法列表中的第一个方法鉴别用户;如果该方法没有反应,则会选择方法列表中的下一个方法。这一个过程一直进行下去,直至所列的某个方法成功的进行AAA服务,或者所有的方法用完为止。
注意到这一点是很重要的,即本公司交换机软件仅仅在前面的方法没有反应时,才尝试使用列在后面的AAA方法进行AAA服务。如果AAA服务在这个过程中的任何一点上失败了,即安全服务器或是本地用户数据库的反应是拒绝用户访问,则AAA服务过程停止,并且不再尝试其他的认证方法。
下图显示了一个很有代表性的AAA网络配置,包含四个安全服务器,R1和R2是RADIUS服务器,T1和T2是TACACS+服务器。我们以认证为例来讲述AAA服务与AAA方法列表的关系。
图 1‑ 1 AAA网络配置示意图
本例中,default是方法列表的名称,包括在方法列表中的协议以及他们将被查询的次序列在方法列表名称后面。缺省列表自动的应用于所有的接口。
当远程用户试图通过拨号进入网络时,网络访问服务器首先在R1上查询有关的认证信息,如果鉴别该用户合法,他就发一条PASS应答给网络访问服务器,从而允许用户访问服务器。如果R1返回一条FAIL应答,则该用户被拒绝访问,本次对话结束。如果R1没有反应,网络访问服务器将其当成一次错误,并且在R2上查阅有关的认证信息。这种模式在剩下的方法中一直进行下去,直到该用户被接受或者被拒绝、或者本次对话结束为止。
记住这一条是很重要的,即FAIL应答与ERROR应答是截然不同的两个东西,FAIL意味着用户没有满足包含在认证数据库中要认证成功所需的标准。认证以FAIL应答结束。ERROR意味着该安全服务器对认证查询没有应答。仅仅当AAA检测到ERROR应答时,他才选择定义在认证方法链表中的下一个认证方法。
假设系统管理员想将方法列表仅仅应用于某个或某种特定的端口。在这种情况下,系统管理员应当创建一个非缺省的方法列表,然后把这个命名的列表应用到适当的端口上。
1.1.5 AAA配置过程
首先,必须决定想要实现何种类型的安全方案。用户需要评估自己网络中的安全风险,并且确定合适的方法来阻止未经授权的登录和攻击。在明白了配置所涉及的基本过程后,配置AAA就相对简单了。在本公司交换机或访问服务器上使用AAA进行安全配置,遵循如下步骤:
• 如果决定使用安全服务器,则先配置安全协议参数,如RADIUS,TACACS+。
• 使用命令aaa authentication定义用于认证的方法列表。
• 如果需要的话,把该方法列表应用到某个具体的接口或线路上
• 使用命令aaa authorization进行授权配置(可选)。
• 使用命令aaa accounting进行计费配置(可选)。
1.2 认证配置
1.2.1认证配置任务列表
• 使用AAA配置登录认证
• 在进入特权级别时开启口令保护
• 为AAA认证配置消息标语
• 改变提示输入用户名时的字符串
• 改变提示输入口令时的字符串
• 建立本地用户名认证数据库
• 建立本地特权级别认证数据库
1.2.2 认证配置任务
AAA认证的一般配置过程
要配置AAA认证,需要完成下列配置过程:
(1)如果使用的是安全服务器,配置安全协议参数,如RADIUS、TACACS+。具体配置方法参见相应章节。
(2)使用aaa authentication命令定义认证方法列表。
(3)如果需要的话,把方法列表应用到特定的端口或是线路上。
1.2.2.1使用AAA配置登录认证
AAA安全服务使得使用各种认证方法变得更容易了,不论决定使用哪种登录方法,都使用aaa authentication命令开启AAA认证。在aaa authentication login命令中,创建一张或是多张认证方法的列表,这些列表在登录时使用。使用线路配置命令login authentication来应用这些列表。配置时,从全局配置模式开始,使用如下命令:
命令
|
目的
|
aaa authentication login {default | list-name}method1 [method2...]
|
创建全局认证列表。
|
line [ console | vty ] line-number [ending-line-number]
|
进入某个线路的配置状态。
|
login authentication {default | list-name}
|
应用该认证列表于某条或是某几个线路上。(在线路模式下)
|
关键字list-name是用来命名所创建的列表的任何字符串。关键字method指定认证过程所采用的实际方法。仅当前面所用的方法返回认证错误时,才会使用其他的认证方法,如果前面的方法指明认证失败了,则不再使用其他的认证方法。如果要指定即使所有的方法都返回认证错误仍能成功登录,只要在命令行中指定none作为最后一个认证方法。
使用default参数可建立一个缺省的列表,缺省列表自动的应用于所有的接口。例如:指定RADIUS作为用户登录时的缺省认证方式,使用下面的命令:
aaa authentication login default group radius
注意:
由于关键字none使得登录的任何用户都可成功的通过认证,所以应当将该关键字作为备用的认证方法。
登陆时,如果找不到认证方法列表的话,除console口登陆以外,其它任何形式的登陆将以认证失败结束。
下表列出了目前支持的登录认证方式:
关键字
|
说明
|
enable
|
使用enable口令进行认证。
|
group name
|
使用命名的服务器组进行认证。
|
group radius
|
使用 RADIUS 认证。
|
group tacacs+
|
使用TACACS+进行认证。
|
line
|
使用线路密码进行认证。
|
local
|
使用本地数据库进行认证。
|
localgroup
|
使用本地策略组用户名数据库进行认证。
|
local-case
|
使用本地用户名数据库进行认证(用户名区分大小写)。
|
none
|
认证无条件通过。
|
(1)使用enable口令进行登录认证
在aaa authentication login命令中使用enable 方法关键字指定enable口令作为登录认证方法,例如:在没有定义其他方法时,指定enable口令作为登录时用户认证的方法,使用下面的命令:
aaa authentication login default enable
(4)使用线路口令进行登录认证
在使用aaa authentication login命令时,用line 方法关键字指定线路口令作为登录时的认证方法。例如,在用户登录时指定线路口令为用户认证方法,并且不定义任何其他方法,可以输入下面的命令行:
aaa authentication login default line
在能够使用线路口令进行注册认证之前,需要定义一条线路口令。
(5)使用本地口令进行登录认证
在使用aaa authentication login命令时,用local 方法关键字指定使用本地用户名数据库作为登录认证方法。例如,在用户注册时指定本地用户名数据库作为用户认证方法,并且不定义任何其他方法,可以输入下面的命令行:
aaa authentication login default local
有关增加用户到本地用户名数据库中的详细资料,参见“建立本地认证数据库”。
(6)使用RADIUS进行登录认证
在使用aaa authentication login命令时,用radius 方法关键字指定RADIUS作为登录认证方法。例如在用户登录时指定RADIUS为用户认证方法,并且不定义任何其他方法,可以输入下面的命令:
aaa authentication login default group radius
在能使用RADIUS作为注册认证方法之前,需要首先配置RADIUS服务,有关的更多信息参见“配置RADIUS”。
1.2.2.2在进入特权级别时开启口令保护
使用aaa authentication enable default命令创建一个认证方法列表,这些方法决定了某个用户是否可以执行特权级别的EXEC命令。可以至多指定四种认证方法。仅当前面所用的方法返回认证错误时,才会使用其他的认证方法。如果前面使用的方法返回认证失败,则不再使用其他的认证方法,如果指定即使所有的方法都返回错误仍能成功认证,只需在命令中指定none作为最后一个认证方法。配置时,在全局配置模式下使用下面的命令:
命令
|
目的
|
aaa authentication enable default method1 [method2...]
|
在用户进入特权级别时开启口令认证。
|
关键字method指定认证过程使用的实际方法,在认证时依输入的次序使用。
下表列出了所支持的口令保护认证方法:
关键字
|
说明
|
enable
|
使用enable口令认证。
|
group group-name
|
使用命名的服务器组进行认证。
|
group radius
|
使用RADIUS进行认证。
|
group tacacs+
|
使用tacacs+进行认证。
|
line
|
使用线路口令认证。
|
none
|
认证无条件通过。
|
当配置了enable认证方法为远端认证时,使用RADIUS进行认证,如下面介绍:
(1)使用RADIUS进行enable认证:
认证的用户名为$ENABLElevel$,其中level是指用户要进入的特权级别,即enable命令后的特权级别的数字,举例来说,如果某用户要进入级别为7的特权级别,需要输入命令enable 7,如果此时配置了使用RADIUS进行认证,则提交给Radius-server host的用户名为$ENABLE7$,缺省条件下enable进入的特权级别均为15,即在使用RADIUS进行认证时,提交给Radius-server host的用户名为$ENABLE15$。这就需要预先在Radius-server host上配置相应的用户名和密码,特别要指出的是:在Radius-server host的用户数据库中,要指明用于特权认证的用户的服务类型(Service-Type)为6,即Admin-User。
1.2.2.3为AAA认证配置消息标语
支持使用可配置的、个性化的登陆及登陆失败标语。即在用户登陆进入系统将用AAA认证时,以及无论什么原因认证失败时,将显示所配置的消息标语。
配置注册标语
全局配置模式下,使用下述命令:
命令
|
目的
|
aaa authentication banner delimiter text-string delimiter
|
配置一个个性化的登陆注册标语
|
配置登陆失败标语
全局配置模式下,使用下述命令:
命令
|
目的
|
aaa authentication fail-message delimiter text-string delimiter
|
配置一个个性化的登陆失败的标语
|
使用说明
创建标语时,需要配置一个定界符号”,然后再配置文本字符串本身,该定界符号的作用是通知系统下面的文本字符串将被作为标语显示。定界字符在文本字符串的尾部重复出现,表示标语结束。
1.2.2.4改变提示输入用户名时的字符串
使用aaa authentication username-prompt命令可以改变提示用户输入用户名时所显示的缺省文本。该命令的no形式恢复口令提示为如下形式的缺省值:
username:
命令aaa authentication username-prompt不改变远程TACACS+或是RADIUS服务器所提供的任何提示信息。配置时,在全局模式下使用下面的命令:
命令
|
目的
|
aaa authentication username-prompt text-string
|
在提示用户输入用户名时改变缺省的显示文本。
|
1.2.2.5改变提示输入口令时的字符串
使用aaa authentication password-prompt命令可以改变提示用户输入口令时所显示的缺省文本。这条命令不仅改变enable口令的口令提示,也同时改变远端登录时的口令提示。该命令的no形式恢复口令提示为如下形式的缺省值:
password:
命令aaa authentication password-prompt不改变远程TACACS+或是RADIUS服务器所提供的任何提示信息。配置时,在全局模式下使用下面的命令:
命令
|
目的
|
aaa authentication password-prompt text-string
|
在提示用户输入口令时改变缺省的显示文本。
|
1.2.2.6 建立本地用户名认证数据库
创建基于本地认证的用户和密码,主要用于不支持AAA服务器(如RADIUS)时,对用户提供认证方法,以及提供专门情况下的注册:例如,访问列表验证、无口令验证、在注册时自动执行以及“无转义码”情况。
要建立本地用户名认证,可以在全局配置模式下,使用下面命令进行配置,删除用户名,利用该命令的no形式:
username name {nopassword | password password | password encryption-type encrypted-password}
username name [autocommand command]
username name [privilege level]
username name [user-maxlinks number]
no username name
1.2.2.7建立本地特权级别认证数据库
创建基于本地的密码数据库,用于控制用户获取各种特权级别,要建立本地各种特权级别的enable密码数据库,可以在全局配置模式下,使用下面命令进行配置,删除时,利用该命令的no形式:
enable password { [encryption-type] encrypted-password} [level level]
no enable password [level level]
1.2.3 认证配置示例
1.2.3.1RADIUS认证示例
本节提供了一个使用RADIUS进行认证的配置示例,展示了如何配置交换机,以便使用RADIUS进行认证和授权的过程:
aaa authentication login radius-login group radius local
aaa authorization network radius-network group radius
line vty 3
login authentication radius-login
在这个示例中,各命令行的意义为:
• 命令aaa authentication login radius-login group radius local配置交换机在认证登录用户时使用RADIUS作为认证方法。如果RADIUS返回认证错误,则使用本地数据库对用户进行认证。
• 命令aaa authorization network radius-network group radius向radius请求NETWORK服务的授权,如:地址分配以及其他访问控制项目。
• 命令login authentication radius-login在线路3上开启radius-login方法列表。
1.3 授权配置
1.3.1AAA授权配置任务列表
• 使用AAA配置EXEC授权
• 使用AAA配置commands授权
1.3.2 AAA授权配置任务
AAA授权的一般配置过程
要配置AAA授权,需要完成下列配置过程:
(1)如果使用的是安全服务器,配置安全协议参数,如RADIUS、TACACS+。具体配置方法参见相应章节。
(7)使用aaa authorization命令定义授权方法列表。缺省情况下,不提供授权服务。
(8)如果需要的话,把方法列表应用到特定的端口或是线路上。
1.3.2.1使用AAA配置exec授权
使用aaa authorization命令开启AAA授权。在aaa authorization exec命令中,创建一张或是多张授权方法的列表,开启EXEC授权,以决定是否允许用户运行EXEC外壳程序,或者授于用户在进入EXEC外壳程序时的特权级别。使用线路配置命令login authorization来应用这些列表。配置时,从全局配置模式开始,使用如下命令:
命令
|
目的
|
aaa authorization exec {default | list-name}method1 [method2...]
|
创建全局授权列表。
|
line [console | vty ] line-number [ending-line-number]
|
进入某个线路的配置状态。
|
login authorization {default | list-name}
|
应用该授权列表于某条或是某几个线路上。(在线路模式下)
|
关键字list-name是用来命名所创建的列表的任何字符串。关键字method指定授权过程所采用的实际方法。仅当前面所用的方法返回授权错误时,才会使用其他的授权方法,如果前面的方法指明授权失败了,则不再使用其他的授权方法。如果要指定即使所有的方法都返回授权错误仍能进入EXEC shell,只要在命令行中指定none作为最后一个授权方法。
使用default参数可建立一个缺省的列表,缺省列表自动的应用于所有的接口。例如:指定RADIUS作为exec的缺省授权方式,使用下面的命令:
aaa authorization exec default group radius
注意:
授权时,如果找不到授权方法列表的话,将不再进行授权服务,并允许授权通过。
下表列出了目前支持的EXEC授权方式:
关键字
|
说明
|
group WORD
|
使用命名的服务器组进行授权。
|
group radius
|
使用 RADIUS 授权。
|
group tacacs+
|
使用TACACS+进行授权。
|
local
|
使用本地数据库进行授权。
|
if-authenticated
|
如果选择了该方法, 则所要求的所有功能都自动的授予已经认证的用户。
|
none
|
授权无条件通过。
|
1.3.2.2使用AAA配置commands授权
commands鉴权需要与tacacs+服务器配合使用,配置了commands授权后,用户敲入的命令会由tacacs+服务器进行鉴权,只有被允许的命令才能够执行成功。commands授权可以实现不同级别不同配置态下面的命令授权,使用aaa authorization commands [level]、aaa authorization config-commands开启命令授权。具体配置命令说明参见《27-安全配置命令.doc》:
命令
|
目的
|
aaa authorization commands [level] {default | list-name}method1 [method2...]
|
为指定级别的命令创建全局授权列表。
|
line [console | vty ] line-number [ending-line-number]
|
进入某个线路的配置状态。
|
login authorization {default | list-name}
|
应用该授权列表表于某条或是某几个线路上。(在线路模式下)
|
关键字list-name是用来命名所创建的列表的任何字符串。关键字method指定授权过程所采用的实际方法。仅当前面所用的方法返回授权错误时,才会使用其他的授权方法,如果前面的方法指明授权失败了,则不再使用其他的授权方法。如果要指定即使所有的方法都返回授权错误仍能执行相应的命令,只要在命令行中指定none作为最后一个授权方法。
使用default参数可建立一个缺省的列表,缺省列表自动的应用于所有的接口。例如:指定tacacs+作为级别为0的commands 的缺省授权方式,使用下面的命令:
aaa authorization commands 0 default group tacacs+
注意:
授权时,如果找不到授权方法列表的话,将不再进行授权服务,并允许授权通过。
下表列出了目前支持的commands授权方式:
关键字
|
说明
|
group WORD
|
使用命名的服务器组进行授权。
|
group tacacs+
|
使用 tacacs+授权。
|
if-authenticated
|
如果选择了该方法, 则所要求的所有功能都自动的授予已经认证的用户。
|
none
|
授权无条件通过。
|
注:radius服务器不能实现commands授权,为commands授权指定radius服务器方法是无效的,等同于none方法
1.3.3AAA授权示例
1.3.3.1EXEC本地授权示例
本节提供了一个使用本地进行授权的配置示例,展示了如何配置交换机,以便使用LOCAL进行认证和授权的过程:
aaa authentication login default local
aaa authorization exec default local
!
localauthor a1
exec privilege default 15
!
local author-group a1
username exec1 password 0 abc
username exec2 password 0 abc author-group a1
username exec3 password 0 abc maxlinks 10
username exec4 password 0 abc autocommand telnet 172.16.20.1
!
此配置中,各命令行的意义为:
• 命令aaa authentication login default local定义login认证的默认方法列表,该方法列表自动运用于所有登陆认证服务
• 命令aaa authorization exec default local定义了exec授权的默认方法列表,该方法列表自动运用于所有需要进入EXEC shell的用户
• 命令localauthor a1定义了一个名为a1的本地授权策略。exec privilege default 15表示默认授予exec登陆用户优先级为15。
• 命令local author-group a1表示把本地授权策略a1用于全局配置(即默认本地策略组)下。
• 命令username exec1 password 0 abc定义了一个全局配置下的账号exec1,密码为abc。
• 命令username exec2 password 0 abc author-group a1定义了一个全局配置下的账号exec2,密码为abc,该账号使用本地授权策略a1。
• 命令username exec3 password 0 abc maxlinks 10定义了一个全局配置下的账号exec3,密码为abc,该账号最多允许同时10个用户使用。
• 命令username exec4 password 0 abc autocommand telnet 172.16.20.1了一个全局配置下的账号exec4,密码为abc,用户使用该账号登陆后自动执行telnet 172.16.20.1。
1.4 计费配置
1.4.1AAA计费配置任务列表
• 使用AAA配置connection计费
• 使用AAA配置network计费
1.4.2 AAA计费配置任务
AAA计费的一般配置过程
要配置AAA计费,需要完成下列配置过程:
(1)如果使用的是安全服务器,配置安全协议参数,如RADIUS、TACACS+。具体配置方法参见相应章节。
(9)使用aaa accounting命令定义计费方法列表。缺省情况下,不提供计费服务。
(10)如果需要的话,把方法列表应用到特定的端口或是线路上。
1.4.2.1使用AAA配置connection计费
使用aaa accounting命令开启AAA计费。在aaa accounting connection命令中,创建一张或是多条计费方法的列表,开启connection计费,以提供所有从交换机产生的出站连接的信息,这些出站连接包括Telnet、包重装/拆分(PAD)、H323和rlogin等,暂时只支持H323。配置时,从全局配置模式开始,使用如下命令:
命令
|
目的
|
aaa accounting connection {default | list-name} {{{start-stop | stop-only} group groupname} | none}
|
创建全局计费列表。
|
关键字list-name是用来命名所创建的列表的任何字符串。关键字method指定计费过程所采用的实际方法。
下表列出了目前支持的connection计费方式:
关键字
|
说明
|
group WORD
|
使用命名的服务器组进行计费。
|
group radius
|
使用 RADIUS 计费。
|
group tacacs+
|
使用 TACACS+ 计费。
|
none
|
关闭计费服务。
|
stop-only
|
该关键字指示所指定的方法只在所请求的用户过程结束时发送一条停止计费计费通知。
|
start-stop
|
该关键字指示所指定的方法在所要求的事件开始时发出开始计费通告,在该事件结束时发出终止通告。
|
1.4.2.2使用AAA配置network计费
使用aaa accounting命令开启AAA计费。在aaa accounting network命令中,创建一张或是多条计费方法的列表,开启network计费,以给所有PPP或SLIP会话提供信息,包括包、字节及时间计数等。配置时,从全局配置模式开始,使用如下命令:
命令
|
目的
|
aaa accounting network {default | list-name} {{{start-stop | stop-only} group groupname} | none}
|
创建全局计费列表。
|
关键字list-name是用来命名所创建的列表的任何字符串。关键字method指定计费过程所采用的实际方法。
下表列出了目前支持的network计费方式:
关键字
|
说明
|
group WORD
|
使用命名的服务器组进行计费。
|
group radius
|
使用 RADIUS 计费。
|
group tacacs+
|
使用 TACACS+ 计费。
|
none
|
关闭计费服务。
|
stop-only
|
该关键字指示所指定的方法在所请求的用户过程结束时发送一条停止计费计费通知。
|
start-stop
|
该关键字指示所指定的方法在所要求的事件开始时发出开始计费通告,在该事件结束时发出终止通告。
|
1.4.2.3使用AAA配置计费更新
使用aaa accounting命令激活AAA计费更新功能,以便AAA为系统中的所有用户发送临时计费记录。配置时,从全局配置模式开始,使用如下命令:
命令
|
目的
|
aaa accounting update [newinfo] [periodic number]
|
激活AAA计费更新
|
如果使用关键字newinfo,则每当有新的计费信息要报告时,向计费服务器发送临时计费记录。比如,当IPCP完成与远程终端的IP地址协商时就是发生这种情况的一个示例,临时计费记录将包括远程终端使用的协商IP地址。
当使用关键字periodic时,则周期性地发送临时计费记录,该周期由数字参数定义。临时计费记录包含了到计费记录发送时为止的该用户的所有计费信息。
这两个关键字是相互排斥的,即无论后配置的是哪个关键字,都将取代前面的配置。例如,如果配置了aaa accounting update periodic,然后配置了aaa accounting update newinfo,则当前注册的所有用户仍将产生周期性的临时计费记录。所有新用户将基于newinfo算法产生计费记录。
1.4.2.4抑制无用户名的用户计费
要阻止AAA系统给用户名字符串为空的用户发送计费记录,从全局配置模式开始,使用如下命令:
• aaa accounting suppress null-username
1.5 本地账号策略配置
1.5.1本地账号策略配置任务列表
• 本地认证策略配置
• 本地授权策略配置
• 本地密码策略配置
• 本地策略组配置
1.5.2本地账号策略配置任务
1.5.2.1本地认证策略配置
全局配置态下,使用命令localauthen WORD进入本地认证策略配置态,在该配置态下下使用以下命令配置本地认证策略:
(1)一定时间内的最大登陆尝试次数
login max-tries <1-9> try-duration 1d2h3m4s
配置好的本地认证策略可以应用在某个本地策略组或者直接应用在某个本地账号上,直接应用在某个本地账号上的优先使用。
1.5.2.2本地授权策略配置
全局配置态下,使用命令localauthor WORD进入本地授权策略配置态,在该配置态下下使用以下命令配置本地授权策略:
(1)对登录进来的用户进行优先级授权
exec privilege {default | console | ssh | telnet} <1-15>
配置好的本地授权策略可以应用在某个本地策略组或者直接应用在某个本地账号上,直接应用在某个本地账号上的优先使用。
1.5.2.3本地密码策略配置
全局配置态下,使用命令localpass WORD进入本地密码策略配置态,在该配置态下下使用以下命令配置本地密码策略:
(1)密码和用户名不同(配置账号或者修改密码时,密码和用户名不能相同)
non-user
(2)历史口令检查(修改密码时,密码和历史密码不能相同,记录历史口令20项)
non-history
(3)指定口令组成成分(配置账号或者修改密码时,增加密码的复杂度)
element [number] [lower-letter] [upper-letter] [special-character]
(4)口令最小长度(配置账号或者修改密码时,增加密码的复杂度)
min-length <1-127>
(5)口令有效期(配置账号或者修改密码后,密码的使用时间)
validity 1d2h3m4s
配置好的本地密码策略可以应用在某个本地策略组或者直接应用在某个本地账号上,直接应用在某个本地账号上的优先使用。
1.5.2.4本地策略组配置
全局配置态下,使用命令localgroup WORD进入本地策略组配置态(全局配置态被认为是默认本地策略组配置态),在该配置态下下使用以下命令配置本地策略组:
(1)本地认证配置,把配置好的某个本地认证策略应用到该策略组下
local authen-group WORD
(2)本地授权配置,把配置好的某个本地授权策略应用到该策略组下
local author-group WORD
(3)本地密码配置,把配置好的某个本地密码策略应用到该策略组下
local pass-group WORD
(4)本地账号配置,对该策略组下的账号设置最大连接数、冻结
local user {{maxlinks <1-255>} | { freeze WORD }}
(5)配置账号,在该策略组下配置账号,建立本地数据库
username username [password password | {encryption-type encrypted-password}] [maxlinks number] [authen-group WORD] [author-group WORD] [pass-group WORD] [autocommand command]
配置好的本地策略组可以应用于本地认证和授权。local方法使用的是默认本地策略组,
localgroup word 使用的是配置的某个本地策略组。
1.5.3本地账号策略配置示例
本节提供了一个本地账号策略的配置示例,展示了如何配置交换机,以便使用本地认证和授权的过程:
aaa authentication login default local
aaa authorization exec default local
!
localpass a3
non-user
non-history
element number lower-letter upper-letter special-character
min-length 10
validity 2d
!
localauthen a1
login max-tries 4 try-duration 2m
!
localauthor a2
exec privilege default 15
!
local pass-group a3
local authen-group a1
local author-group a2
!
在这个示例中,各命令行的意义为:
• 命令aaa authentication login default local定义login认证的默认方法列表,该方法列表自动运用于所有登陆认证服务
• 命令aaa authorization exec default local定义了exec授权的默认方法列表,该方法列表自动运用于所有需要进入EXEC shell的用户
• 命令localpass a3定义了名为a3的密码策略。
• 命令localauthen a1定义了名为a1的认证策略。
• 命令localauthor a2定义了名为a2的授权策略。
• 命令local pass-group a3把名为a3的密码策略应用于默认策略组下。
• 命令localauthen a1把名为a1的认证策略应用于默认策略组下。
• 命令localauthor a2把名为a2的授权策略应用于默认策略组下。
2 配置RADIUS
本章介绍RADIUS(Remote Authentication Dial-In User Service)安全系统。定义其操作,说明适宜使用RADIUS技术和不适宜使用RADIUS技术的网络环境。“RADIUS配置步骤”一节介绍如何使用认证、授权和计费(AAA)命令集配置RADIUS。本章最后一节“RADIUS配置示例”提供了两个实例。有关本章使用的RADIUS命令的完整描述,请参见“RADIUS配置命令”。
2.1 概述
2.1.1RADIUS概述
RADIUS是分布式客户机/服务器系统,它保护网络不受未经授权的访问的干扰。RADIUS客户机运行于交换机上,并向中央RADIUS服务器发出认证请求,这里的中央服务器包含了所有的用户认证和网络访问服务信息。在交换机上我们利用AAA安全模式支持RADIUS ,RADIUS已经在既要求高级别安全性、又要求维持远程用户访问的各种网络环境中得以应用。
可以在具有下述访问安全要求的网络环境中使用RADIUS:
• 拥有多厂商访问服务器的网络环境,并且每个服务器都支持RADIUS。例如,几家厂商提供的访问服务器可以使用单一的基于服务器的RADIUS安全数据库。在使用多厂商提供的访问服务器的基于IP的网络中,拨号用户通过RADIUS服务器进行认证。
• 在用户必须只访问单一服务的网络中。使用RADIUS,能够控制用户访问单一主机、单一实用程序(如Telnet)或单一协议(如点对点协议PPP)。例如,当用户登录时,RADIUS规定并限制这个用户使用IP地址10.2.3.4来运行PPP,并启动定义的访问列表。
• 要求资源计费的网络。可以使用与RADIUS认证或授权无关的RADIUS计费。RADIUS计费允许在服务的开始和结束发送数据,以指示会话期间使用的资源数量(如时间、字节等等)。
RADIUS不适合应用于下述网络安全情况中:
• RADIUS不支持下述协议:
AppleTalk远程访问(ARA,AppleTalk Remote Access)协议
NetBIOS帧控制协议(NBFCP,NetBIOS Frame Control Protocol)
• NetWare异步服务接口(NASI,NetWare Asynchronous ServicesInterface)
• X.25 PAD连接
• 交换机到交换机的情况。RADIUS不提供双向认证。在交换机上运行RADIUS,只能完成呼入认证,对于呼出认证(即本地交换机要登录到远端交换机时需要通过远端交换机的认证)是无法完成的。
• 使用多种服务的网络。RADIUS通常把用户捆绑到一个服务模型上。
2.1.2 RADIUS协议操作
当用户使用RADIUS进行登录认证时,发生下述步骤:
(1)提示用户输入用户名和口令。
(11)用户名和加密的口令通过网络发送到RADIUS服务器。
(12)用户从RADIUS服务器收到下述响应之一:
ACCEPT:用户通过认证。
REJECT:用户没有通过认证,提示用户重新输入用户名和口令,否则访问被拒绝。
CHALLENGE:服务器发出Challenge请求。该请求从用户那里收集附加数据。
ACCEPT和REJECT响应与附加授权信息一起返回,用于EXEC或NETWORK授权。在使用RADIUS授权之前,必须首先完成RADIUS认证。ACCEPT和REJECT包中包括的附加数据由下述内容组成:
a. 用户能够访问的服务,包括Telnet、rlogin等服务。
b. 连接参数,包括主机或客户机的IP地址、访问列表和用户超时设定等。
2.2 RADIUS配置步骤
为了在交换机或访问服务器上配置RADIUS ,必须执行下述任务:
• 使用aaa authentication全局配置命令定义使用RADIUS认证方式的方法列表。有关使用aaa authentication命令的更多信息,请参见“认证配置”。
• 使用line和interface命令来引用已定义的方法列表。要了解更多的信息,请参见“认证配置”。
(1)下述配置任务可根据需要进行选择:
• 如有必要,使用aaa authorization全局命令对用户的服务请求进行授权。有关使用aaa authorization命令的更多信息,请参见“授权配置”。
• 如有必要,使用aaa accounting 全局命令对用户的服务过程进行计费。有关使用aaa accounting命令的更多信息,请参见“计费配置”。
2.3 RADIUS配置任务列表
• 配置交换机与RADIUS服务器的通信
• 使用厂商专用的RADIUS属性配置交换机
• 配置RADIUS认证
• 配置RADIUS授权
• 配置RADIUS计费
2.4 RADIUS配置任务
2.4.1配置交换机与RADIUS服务器的通信
RADIUS服务器通常是运行由Livingston、Merit、 Microsoft 或另外的软件提供商提供的RADIUS服务器软件的多用户系统,RADIUS服务器和交换机使用共享的密钥来加密口令并交换响应。使用radius-server host命令来指定RADIUS服务器,使用radius-server key命令来指定共享密钥。配置时,在全局配置模式下使用下述命令:
命令
|
目的
|
radius-server host ip-address [auth-port port-number][acct-port portnumber]
|
指定远程RADIUS服务器的IP地址,指定认证和计费的目的端口号。
|
radius-server key string
|
指定交换机和RADIUS服务器之间使用的共享密钥。
|
另外为了定制交换机和RADIUS服务器之间的通信,请使用下述可选的radius全局配置命令:
命令
|
目的
|
radius-server retransmit retries
|
指定交换机在放弃重试之前向服务器传输每个RADIUS请求的次数(缺省值为2)。
|
radius-server timeout seconds
|
指定交换机在重新传输RADIUS请求之前,对应答应等待的秒数。
|
radius-server deadtime minutes
|
当RADIUS服务器不对认证请求作出反应时,需要将此台服务器标志为“死亡”的持续时间。
|
2.4.2使用厂商专用的RADIUS属性配置交换机
Internet工程任务组(IETF)草案标准通过使用厂商专用属性(Attribute26),为在网络访问服务器和RADIUS服务器之间交互基于厂商的专用扩展属性提供了一种方法。厂商专用属性(VSA)允许厂商支持属于它们自己的不适合于普遍用途的扩展属性。有关厂商ID和厂商专用属性的更多信息,请参见RFC 2138:远程认证拨号用户服务(RADIUS)。要把网络服务器配置为能够识别和使用厂商专用属性的方式,请在全局配置模式下使用下述命令:
命令
|
目的
|
radius-server vsa send [authentication]
|
使网络访问服务器能够如同RADIUS IETF属性26所定义的那样去识别和使用厂商专用属性。
|
2.4.3配置RADIUS认证
在标识了RADIUS服务器并定义了RADIUS认证密钥之后,就需要为RADIUS认证定义方法列表。由于RADIUS认证是通过AAA来进行的,所以需要输入aaa authentication命令,指定RADIUS作为认证方法。要了解与此相关的更多信息,请参见 “认证配置”。
2.4.4配置RADIUS授权
利用AAA授权可以设置参数、限制用户的网络访问。使用RADIUS的授权提供了一种远程访问控制的方法,包括一次性授权或对每个服务的授权。因为RADIUS授权是通过AAA进行的,所以需要使用aaa authorization命令,指定RADIUS作为授权方法。要了解与此相关的更多信息,请参见“授权配置”。
2.4.5配置RADIUS计费
AAA计费特性让我们能够追踪用户正在访问的服务及他们占用的网络资源数量。由于RADIUS计费特性是通过AAA提供的,所以需要使用aaa accounting命令,指定RADIUS作为计费方法。要了解与此相关的更多信息,请参见“计费配置”。
2.5 RADIUS配置示例
2.5.1RADIUS认证示例
下述示例说明了怎样对交换机进行配置以使用RADIUS进行认证和授权:
aaa authentication login use-radius group radius local
在这个示例中,各行命令的意义为:
aaa authentication login use-radius group radius local命令配置交换机在登录过程中使用RADIUS进行认证。如果RADIUS服务器返回认证错误(ERROR),再使用本地数据库进行认证。在这个示例中,use-radius是方法列表的名称,它指定首先进行RADIUS认证,然后再进行本地认证。
2.5.2AAA中应用RADIUS示例
下面是一个使用AAA命令集定义通用配置的示例:
radius-server host 1.2.3.4
radius-server key myRaDiUSpassWoRd
username root password AlongPassword
aaa authentication login admins group radius local
line vty 1 16
login authentication admins
在这个示例中,各命令行的意义为:
radius-server host命令定义RADIUS服务器的IP地址;
radius-server key 命令定义网络访问服务器和RADIUS服务器主机之间的共享密钥;
aaa authentication login admins group radius local命令定义了认证方法列表admins,它指定首先通过RADIUS进行认证,然后(若RADIUS服务器不响应)使用本地认证;
login authentication admins命令指定在登录认证中运用admins方法列表;
3 TACACS+配置
3.1 TACACS+概述
TACACS+是一种访问安全控制协议,它为用户获得对网络访问服务器的访问权提供集中化的验证。由于网络访问服务器和TACACS+服务程序之间的信息交换采用加密形式,所以它可以保证通信的安全性。
在网络访问服务器上配置的TACACS+特性使用之前,必须能够访问并配置TACACS+服务器。TACACS+提供了独立的模块化认证、授权和计费能力。
认证——支持多种认证方式(ASCII、PAP、CHAP等),同时提供处理与用户进行任意对话的能力(比如,提供登录用户名和口令后,向用户提出一些询问性问题,诸如家庭住址、服务类型和身份证号码等)。另外,TACACS+认证服务支持向用户屏幕发送信息,例如,发送信息通知用户,由于公司的口令老化政策,他们的口令必须更换。
授权——对提供服务期间用户的服务权限进行细致的控制,包括设置自动命令、访问控制、会话持续时间等。还可以对用户可能执行的命令强制加以限制。
计费——收集和发送用于生成收费单据、进行审计或网络资源使用状况统计的信息。网络管理员可以使用计费能力,为安全审计追踪用户的活动,或者为用户账单提供信息。计费功能记录了包括用户标识、起止时间、执行的命令、包的数量以及字节的数量等。
3.1.1 TACACS+的协议操作
3.1.1.1ASCII形式的认证
当用户登录到使用TACACS+的网络访问服务器,并要求进行简单的ASCII形式的认证时,典型情况下会出现下述过程:
连接建立后,网络访问服务器与TACACS+服务程序联系以获得用户名提示符,然后显示给用户。用户输入用户名,网络访问服务器与TACACS+服务程序再次进行联系,得到口令提示符,把口令提示符显示给用户,用户输入口令,然后口令被发送给TACACS+服务程序。
注意:
TACACS+允许在服务器程序和用户之间进行任意的会话,直到收集到足够的信息对用户进行认证为止。这通常是通过提示用户名和口令的组合而完成的,但是还可以包括其它的项目,诸如证件号码等,一切都是在TACACS+服务器程序的控制之下进行的。
网络访问服务器最终从TACACS+服务器收到下述反应之一:
ACCEPT
|
用户通过了认证,服务可以开始了。如果网络访问服务器被配置为要求服务授权,那么此时开始进行授权。
|
REJECT
|
用户未通过认证。用户可能被拒绝进行进一步的访问,或者提示重新进入登录过程,这取决于TACACS+服务器的处理方式。
|
ERROR
|
在认证期间发生了错误,原因可能发生在服务器,也可能是发生在服务器与网络访问服务器之间的网络连接中。如果收到ERROR回应,一般情况下,网络访问服务器会试着使用另一种方法对用户进行认证。
|
CONTINUE
|
提示用户输入附加的认证信息。
|
3.1.1.2PAP和CHAP形式的认证
PAP登录与ASCII登录相类似,只不过到达网络访问服务器的用户名和口令是在PAP报文中,而不是由用户输入,所以不用提示用户输入相关信息。CHAP登录在主要的内容上也是类似的。认证之后,如果网络访问服务器要求对用户进行授权,那么用户就需要进入授权阶段,但在处理TACACS+授权之前,必须首先成功地完成TACACS+认证。
如果要求进行TACACS+授权,则再次与TACACS+服务器程序联系并返回ACCEPT或REJECT授权反应。如果返回了ACCEPT反应,则可能包含AV(attribute-value)对数据,用于规范该用户的EXEC或NETWORK会话,确定用户能够访问的服务。
3.2 TACACS+配置流程
为了配置为支持TACACS+的方式,必须执行下述任务:
使用tacacs-server命令,指定一个或多个TACACS+服务器IP地址。使用tacacs key 命令,为网络访问服务器和TACACS+服务器之间的所有信息交换指定加密密钥。同一密钥也必须在TACACS+服务器程序中进行配置。
使用aaa authentication全局配置命令对使用TACACS+进行认证的方法列表进行定义。有关aaa authentication命令的更多信息,请参见“认证配置”。
使用line 和interface命令,对端口或线路运用所定义的方法列表。与此相关的更多信息,请参见“认证配置”。
3.3 TACACS+配置任务列表
• 指定TACACS+服务器
• 设置TACACS+加密密钥
• 指定使用TACACS+进行认证
• 指定使用TACACS+进行授权
• 指定使用TACACS+进行计费
3.4 TACACS+配置任务
3.4.1 指定TACACS+服务器
Tacacs-server命令使你能够指定TACACS+服务器的IP地址。由于TACACS+软件按照配置的顺序搜索主机,这一特色对于设置不同的服务器优先级是有用的。为了指定TACACS+主机,以全局配置模式使用下述命令:
命令
|
目的
|
tacacs-server host ip-address
[single-connection| multi-connection] [port integer] [timeout integer] [key string]
|
指定TACACS+服务器IP地址及相应属性。
|
使用tacacs-server命令,还可以配置下述选项:
• 使用single-connection关键字指定采用单一连接,这样做允许服务器程序处理更多的TACACS+操作,可能更有效。multi-connection则是指示采用多条TCP连接。
• 使用port参数,指定TACACS+服务器程序使用的TCP端口号。缺省的端口号是49。
• 使用timeout参数,指定路由器等待服务器回应的时间上限(以秒为单位)。
• 使用key参数指定对报文进行加密和解密的密钥。
注意:
使用tacacs-server后接host,再接timeout等命令指定的超时值将覆盖tacacs-server timeout命令设置的全局超时值; 使用tacacs-server指定的加密密钥将覆盖使用全局配置命令tacacs-server key设置的缺省密钥。所以可以使用本命令配置唯一的TACACS+连接来加强网络的安全性。
3.4.2 设置TACACS+加密密钥
为了设置TACACS+报文加密密钥,在全局配置模式使用下述命令:
命令
|
目的
|
tacacs-server key keystring
|
设置与TACACS+服务器所使用密钥相匹配的加密密钥。
|
注意 :
为了成功地进行加密,必须对TACACS+服务器程序配置相同的密钥。
3.4.3 指定使用TACACS+进行认证
在标识了TACACS+服务器并定义了与之相联系的加密密钥后,就需要为TACACS+认证定义方法列表。由于TACACS+认证通过AAA进行操作,所以需要设置aaa authentication命令指定TACACS+作为其认证方法。与此相关的更多信息,请参见“认证配置”。
3.4.4 指定使用TACACS+进行授权
AAA授权使得能够设置参数限制用户的网络访问权限。TACACS+授权,可以应用于命令、网络连接和EXEC会话等服务。由于TACACS+授权是通过AAA提供的,所以需要配置aaa authorization命令指定TACACS+作为授权方法。与此相关的更多信息,请参见“授权配置”。
3.4.5 指定使用TACACS+进行 计费
AAA计费使得能够跟踪用户正在使用的服务以及他们消耗的网络资源的数量。由于TACACS+计费是通过AAA提供的,所以需要配置aaa accounting命令指定TACACS+作为计费方法。与此相关的更多信息,请参见“计费配置”。
3.5 TACACS+配置示例
本节包括了下述TACACS+配置示例:
3.5.1 TACACS+认证示例
下述示例配置login认证由TACACS+完成:
aaa authentication login test group tacacs+ local
tacacs-server host 1.2.3.4
tacacs-server key testkey
line vty 0
login authentication test
在这个示例中:
aaa authentication命令定义了运行在vty0上使用的认证方法列表test。关键字tacacs+意味着认证通过TACACS+进行,如果TACACS+在认证期间不响应,则关键字local指示使用网络访问服务器上的本地数据库进行认证。
tacacs-server host命令标识TACACS+服务器的IP地址为1.2.3.4。tacacs-server key命令定义共享的加密密钥为testkey。
下述示例将TACACS+配置为login认证时使用的安全协议,但是不再使用方法列表test,而是使用方法列表default:
aaa authentication login default group tacacs+ local
tacacs-server host 1.2.3.4
tacacs-server key goaway
在这个示例中:
aaa authentication命令定义login认证时使用的默认认证方法列表default。如果需要认证,那么关键字tacacs+意味着认证通过TACACS+进行,如果TACACS+在认证期间不响应,则关键字local指示使用网络访问服务器上的本地数据库进行认证。
tacacs-server host命令标识TACACS+服务器程序的IP地址为1.2.3.4。tacacs-server key命令定义共享的加密密钥为goaway。
3.5.2 TACACS+授权示例
aaa authentication login default group tacacs+ local
aaa authorization exec default group tacacs+
tacacs-server host 10.1.2.3
tacacs-server key goaway
在这个示例中:
aaa authentication命令定义login认证时使用的默认认证方法列表default。如果需要认证,那么关键字tacacs+意味着认证通过TACACS+进行,如果TACACS+在认证期间不响应,则关键字local指示使用网络访问服务器上的本地数据库进行认证。
aaa authorization命令配置通过TACACS+进行网络服务授权。
tacacs-server host命令标识TACACS+服务器IP地址为10.1.2.3。tacacs-server key命令定义共享的加密密钥为 goaway。
3.5.3 TACACS+计费示例
下述示例配置login认证的方法列表使用TACACS+作为方法之一,并配置通过TACACS+进行计费:
aaa authentication login default group tacacs+ local
aaa accounting exec default start-stop group tacacs+
tacacs-server host 10.1.2.3
tacacs-server key goaway
在这个示例中:
aaa authentication命令定义login认证时使用的默认认证方法列表default。如果需要认证,那么关键字tacacs+意味着认证通过TACACS+进行,如果TACACS+在认证期间不响应,则关键字local指示使用网络访问服务器上的本地数据库进行认证。
aaa accounting命令配置通过TACACS+进行网络服务的计费。在这个示例中,计费服务开始和结束时的相应信息,发送到TACACS+服务器。
tacacs-server host命令标识TACACS+服务器的IP地址为10.1.2.3。tacacs-server key命令定义共享的加密密钥为 goaway
4 修改命令默认级别
默认情况下不需要修改命令默认级别,如果需要修改请参考命令手册。